Разработка AI-модели предсказания разворотов рынка
Предсказание рыночных разворотов — одна из сложнейших задач в финансовом ML. "Покупай при дне, продавай на пике" — идеал, не достижимый полностью. Реалистичная задача: детектировать состояния рынка, при которых вероятность разворота значимо выше средней, и торговать с управляемым риском.
Типы разворотов
Краткосрочные (2-10 дней):
- Mean reversion после экстремального движения
- Устранение технических перекупленностей/перепроданности
- Post-earnings drift разворот
Среднесрочные (2-8 недель):
- Коррекции тренда на 38.2-61.8% по Фибоначчи
- Смена моментум-режима
- Изменение макро-позиционирования
Долгосрочные (месяцы):
- Смена бизнес-цикла
- Кредитный цикл разворот
- Structural break в фундаментальных условиях
Признаки разворота
Технические индикаторы с доказанной предсказательной силой:
- Divergence RSI / цена: новый maximum цены при lower 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 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 = weighted average
Позиция открывается при 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 месяца.







