Розроблення AI-моделі прогнозування розворотів рынку
Прогнозування рыночних розворотів — одна з найскладніших задач у фінансовому ML. "Купуй при дні, продавай на піку" — ідеал, недосяжний повністю. Реалістична задача: детектувати стани ринку, при яких імовірність розвороту значимо вище середньої, та торгувати з керованим ризиком.
Типи розворотів
Короткострокові (2-10 днів):
- Mean reversion після екстремального руху
- Усунення технічних перекупленостей/перепроданості
- Post-earnings drift розворот
Середньострокові (2-8 тижнів):
- Коррекції тренду на 38.2-61.8% по Фібоначчі
- Зміна momentum-режиму
- Зміна макро-позиціонування
Довгострокові (місяці):
- Зміна бізнес-циклу
- Кредитний цикл розворот
- Structural break у фундаментальних умовах
Ознаки розвороту
Технічні індикатори з доведеною передбачливою силою:
- Divergence RSI / ціна: новий максимум ціни при нижчому RSI — bearish divergence
- Bollinger Band squeeze followed by breakout failure
- Exhaustion candles: gap + reversal (hammer, shooting star) на високому обсязі
- Volume-price analysis: ціна росте, обсяг падає = ослаблення тренду
Sentiment-based сигнали:
- Put/Call ratio: екстремально високе → страх → потенційний розворот вверх
- VIX spike > 30: peak fear
- Short interest: екстремально високий → short squeeze ризик
- Insider buying/selling: інсайдери продають на піку
Позиціонування:
- COT (Commitments of Traders) дані: коли commercials максимально нетто-шорт → розворот вниз
- Hedge fund positioning (13F filing analysis): зниження концентрації в топ позиціях
Детектор режиму ринку
Розворот не можна розглядати ізольовано — потрібен контекст режиму:
Hidden Markov Model (HMM) для детекції режиму:
from hmmlearn import hmm
import numpy as np
# features: returns, volatility, volume
model = hmm.GaussianHMM(n_components=3, covariance_type='full', n_iter=100)
model.fit(features)
regimes = model.predict(features)
# 0: trending, 1: ranging, 2: volatile/crisis
Стратегія розвороту застосовується тільки в ranging/volatile режимі. У trending — momentum стратегія.
ML-модель розвороту
Composite Reversal Score:
features = {
# Оverextension
'distance_from_sma200': (close - sma200) / sma200,
'rsi_14': rsi(close, 14),
'z_score_20d': (close - mean20) / std20,
# Divergence
'price_rsi_divergence': detect_divergence(close, rsi_14, lookback=5),
'volume_price_divergence': (volume_trend < 0) & (price_trend > 0),
# Sentiment
'put_call_ratio': pcr,
'vix_level': vix,
'short_interest_ratio': short_interest / avg_volume,
# Market structure
'higher_high': close > prev_swing_high,
'support_resistance_level': distance_to_nearest_sr / atr
}
Алгоритм: Random Forest Classifier. Таргет: розворот протягом N днів, визначений як зміна тренду на lookback-вікні.
Label Generation (складний момент): Розворот визначається ретроспективно — не можна знати, що поточний пік саме пік до факту. Підхід: swing high/low detection через ZigZag індикатор з мінімальним рухом X% (5-8%). Мітка ставиться на історичні swing точки.
Confidence-based позиціонування
Не входити при будь-якому сигналі — тільки при достатній впевненості:
Ensemble scoring:
- Технічний score (RSI, Bollinger, divergence): 0-1
- Sentiment score (VIX, PCR, short interest): 0-1
- Positioning score (COT, fund flows): 0-1
- Composite = зважене середнє
Позиція відкривається при composite > 0.65. Розмір пропорційний composite.
Risk management для reversal trades:
- Stop loss: за попередній екстремум (swing) — якщо розворот продовжує хід, ми неправі
- Take profit: наступний значимий рівень підтримки/опору
- Maximum holding period: 10 торгових днів — якщо не сработало, вихід
Оцінка на backtesting
| Метрика | Target |
|---|---|
| Win Rate | 45-55% |
| Profit Factor | > 1.5 |
| Max Drawdown | < 15% |
| Sharpe (after TC) | > 0.8 |
Низький win rate нормальний для reversal стратегій при високому R:R (risk:reward) співвідношенні 1:2 та вище.
Строки: модель детектора розвороту з HMM режимами — 4-6 тижнів. Повноцінна система з backtesting, позиціонуванням та моніторингом — 3-4 місяці.







