Як машинне навчання врятувало мене, коли статичні стратегії підвели

Ось що ніхто не розповідає про алгоритмічну торгівлю: найкраща стратегія у світі стає нічого не вартою, коли змінюється ринковий режим. Я засвоїв це дорогим шляхом у лютому 2018 року, коли моя система mean reversion — прибуткова протягом 3 років поспіль — втратила 23% за 8 днів під час вибуху VIX.

У Two Sigma ми мали приказку: "Ринки мають пам'ять, але вони також шизофренічні". Після звільнення, щоб торгувати власним капіталом, я витратив 18 місяців на створення того, що стало моєю системою виявлення режимів. Не тому, що хотів — а тому, що мусив.

Традиційний підхід? Жорстко прописати різні стратегії для різних ринкових умов. Проблема? На момент, коли ви усвідомлюєте, що режим змінився, ваш P&L вже стікає кров'ю. Справжнє виявлення режиму відбувається до руху, а не після.

Порівняння статичної та адаптивної стратегій під час змін режиму
Порівняння статичної та адаптивної стратегій під час змін режиму

Прихована марковська модель, яка все змінила

Березень 2020 року. Поки всі сперечалися, чи COVID — це "просто грип", моя модель виявлення режиму зробила щось цікаве — вона переключилася з режиму "тренду" на "кризовий" 21 лютого, за цілих 10 днів до справжнього краху. Не тому, що передбачила пандемію, а тому що ринкова мікроструктура вже кричала.

Ось спрощена версія того, що врятувало мій портфель:

Key Insight

def detect_regime(features):

    # Ознаки: коефіцієнти волатильності, кореляційні матриці, патерни обсягів

    regime_probabilities = hmm_model.predict_proba(features)

    

    if regime_probabilities['crisis'] > 0.7:

        return 'defensive'

    elif regime_probabilities['trending'] > 0.6:

        return 'momentum'

    else:

        return 'mean_reversion'

Магія не в моделі — вона в ознаках. Більшість систем виявлення режимів зазнають невдачі, тому що люди подають їм неправильні вхідні дані. Ковзні середні? Марно. RSI? Ще гірше. Вам потрібні ознаки, які вловлюють ринкову мікроструктуру:

    • Співвідношення реалізованої/імпліцитної волатильності на різних таймфреймах
    • Матриці крос-активних кореляцій (коли облігації та акції рухаються разом, режими змінюються)
    • Стійкість дисбалансу потоку заявок (як довго триває спрямований тиск)
    • Внутрішньоденна кластеризація волатильності (страх проявляється на 15-хвилинних барах раніше, ніж на денних)

Моя поточна модель використовує 47 ознак, але ці чотири забезпечують 71% точності класифікації режиму.

Розподіл важливості ознак для виявлення ринкового режиму
Розподіл важливості ознак для виявлення ринкового режиму

Три стани режиму, які дійсно мають значення

Забудьте про академічні статті, які говорять про 7 різних ринкових режимів. Після обробки 8 років тикових даних за ф'ючерсами, форексом та криптовалютами, лише три режими реально впливають на ваш P&L:

1. Моментум-режим (38% ринкового часу)

Характеризується стійкими спрямованими рухами з відкатами нижче 38,2% за Фібоначчі. Кореляції залишаються позитивними, волатильність розширюється поступово. Саме тут трендова торгівля приносить гроші. Мої моментум-алгоритми працюють на повному розмірі позиції.

2. Режим Mean Reversion (49% ринкового часу)

Основа для більшості алгоритмічних трейдерів. Волатильність стискається, діапазони тримаються, кореляції повертаються до середнього. Але ось у чому підступ — цей режим має два підстани, які я називаю "здоровий флет" і "стиснута пружина". Остання передує різким рухам.

3. Кризовий режим (13% ринкового часу)

Всі кореляції стають 1 або -1. Волатильність вибухає. Ліквідність зникає. Традиційні стратегії не просто показують гірші результати — вони руйнуються. Під час кризових режимів я скорочую розміри позицій на 75% і переходжу виключно на арбітраж волатильності.

Ключове розуміння? Режими групуються. Криза слідує за стисненням у 73% випадків. Моментум слідує за кризою у 67% випадків. Ця послідовність дає вам перевагу.

Створення власної системи виявлення режимів

Дозвольте заощадити вам 6 місяців спроб і помилок. Ось фреймворк, який реально працює в продакшені:

class RegimeDetector:

    def __init__(self, lookback=252, retrain_frequency=30):

        self.features = ['vol_ratio', 'correlation_eigenvalue',

                         'flow_persistence', 'intraday_clustering']

        self.model = HiddenMarkovModel(n_states=3)

        self.scaler = RobustScaler() # Краще працює з викидами

    

    def calculate_features(self, data):

        # Ось де відбувається магія

        features = {}

        

        # Режим волатильності

        features['vol_ratio'] = data['realized_vol'] / data['implied_vol']

        

        # Кореляційна структура

        corr_matrix = calculate_rolling_correlation(data, window=21)

        features['correlation_eigenvalue'] = np.max(np.linalg.eigvals(corr_matrix))

        

        # Мікроструктура

        features['flow_persistence'] = calculate_order_flow_autocorrelation(data)

        

        return self.scaler.transform(features)

FibAlgo
Термінал FibAlgo Live
Отримуйте сигнали ринку в реальному часі, останні новини та аналіз на основі ШІ для понад 30 ринків — все в одному терміналі.
Відкрити термінал →

Критичні деталі, які пропускають більшість посібників:

    • Використовуйте RobustScaler, а не StandardScaler. Ринкові дані мають "товсті хвости", які ламають стандартну нормалізацію.
    • Перенавчайте щомісяця, а не щодня. Моделі режимів чутливі до перенавчання на шумі.
    • Почніть максимум з 3 станів. Більше станів = більше способів обдурити себе показниками на історичних даних.
Повний пайплайн торгівлі з виявленням режиму
Повний пайплайн торгівлі з виявленням режиму

Пастка перенавчання, яка вбиває більшість ML-трейдерів

Ось де я розлючу ML-євангелістів: більшість машинного навчання в трейдингу — це вишукане підганяння під криву. Я створював моделі з 93% точності на історичних даних, які втрачали гроші в продакшені. Чому? Вони вивчали шум, а не сигнал.

Моя перша модель виявлення режиму мала 200+ ознак і використовувала складний ансамбль нейронних мереж. Вона могла "передбачити" кризу 2008 року ідеально. На бектестах. У реальній торгівлі? Вона кидалася між режимами через день, генеруючи більше транзакційних витрат, ніж альфи.

Рішення — не менше ML, а розумніше ML:

    • Інжиніринг ознак важливіший за складність моделі. Проста HMM з чудовими ознаками перевершує нейронну мережу зі сміттям на вході.
    • Walk-forward валідація є обов'язковою. Навчайте на 2019-2020, валідуйте на 2021, тестуйте на 2022. Якщо модель не узагальнюється на різні ринкові цикли, вона нічого не варта.
    • Стабільність режиму важливіша за точність. Краще виявляти режими пізно, але залишатися в них, ніж метатися при кожному сплеску волатильності.

Моя поточна модель жертвує 20% теоретичної точності заради 80% більшої стабільності. Цей компроміс приносить гроші.

Результати реальної торгівлі: хороше, погане і потворне

Давайте поговоримо про реальні цифри моїх режимно-адаптивних стратегій за останні 18 місяців:

Хороше: Під час сплеску волатильності казначейських облігацій у жовтні 2024 року детектор режиму переключився в кризовий режим на 2 дні раніше. Результат? +8,7%, тоді як стратегія "купив і тримав" втратила 12%.

Погане: Хибні сигнали під час "зони флету" влітку 2024 року спричинили 7 непотрібних перемикань режиму. Кожне перемикання коштує приблизно 0,3% у транзакційних витратах та прослизанні. Це -2,1% мертвого вантажу.

Потворне: Модель повністю пропустила крипто-флеш-крах у січні 2025 року. Чому? Крипто-мікроструктура відрізняється від традиційних ринків, а мої ознаки були відкалібровані на даних ф'ючерсів. Втратив 4,2% до ручного втручання. Урок засвоєно — виявлення режиму не є універсальним для всіх класів активів.

Загальна продуктивність: +31,4% проти +19,2% для статичних стратегій. Але реальна цінність не в додатковій прибутковості — це спокійний сон, знаючи, що мої алгоритми адаптуються, коли ринки божеволіють.

Інтеграція з реальними торговими системами

Теорія — це добре. Впровадження — ось що оплачує рахунки. Ось як виявлення режиму інтегрується з реальною торговою інфраструктурою:

# Рівень управління ризиками

position_size = base_size * regime_risk_multiplier[current_regime]


if current_regime == 'momentum':

    active_strategies = ['trend_following', 'breakout']

    disable_strategies(['mean_reversion', 'arbitrage'])

elif current_regime == 'mean_reversion':

    active_strategies = ['range_trading', 'pairs']

    disable_strategies(['trend_following'])

else: # crisis

    active_strategies = ['volatility_arb']

    reduce_all_positions(0.25)

Критичні деталі впровадження:

    • Переходи між режимами потребують буферів. Не перемикайте стратегії за першим сигналом — вимагайте 2-3 послідовних періоди підтвердження.
    • Розмір позиції коригується до зміни стратегії. Спочатку зменшіть ризик, потім ставте запитання.
    • Завжди підтримуйте "режимно-нейтральний" хедж. Мій — довга позиція за волатильністю під час невизначеності.

Для трейдерів, які використовують індикатори FibAlgo, сигнали на кількох таймфреймах добре доповнюють виявлення режиму — вони допомагають підтвердити, коли коротші таймфрейми починають узгоджуватися зі змінами режиму до того, як денні графіки наздоженуть.

Інтерактивна панель торгівлі з інтеграцією виявлення режиму
Інтерактивна панель торгівлі з інтеграцією виявлення режиму

Типові помилки та як їх уникнути

Дозвольте вберегти вас від помилок, які коштували мені шестизначних сум:

Помилка 1: Витік ознак

Використання імпліцитної волатильності для виявлення режимів волатильності здається розумним, поки ви не усвідомлюєте, що IV вже враховує очікування режиму. Ви передбачаєте минуле. Дотримуйтесь реалізованих метрик та мікроструктури.

Помилка 2: Хибне перемикання режиму

Ринки не змінюють режими чисто. Завжди є брудний перехідний період. Моє рішення? "Перехідний стан", який тримає позиції мінімальними, поки новий режим не стабілізується.

Помилка 3: Калібрування під конкретний актив

Детектор режиму, навчений на ф'ючерсах S&P, катастрофічно провалиться на форексі. Кожен клас активів має унікальну мікроструктуру. Будуйте окремі моделі або обережно використовуйте transfer learning.

Помилка 4: Ігнорування макро-подій

Жодна ML-модель не передбачила Brexit або відв'язку швейцарського франка. Виявлення режиму допомагає реагувати швидше, а не передбачати чорних лебедів. Завжди підтримуйте автоматичні вимикачі для "неможливих" подій.

Майбутнє адаптивної торгівлі

Після 8 років створення та руйнування систем виявлення режимів, ось моя контраверсійна думка: майбутнє не за складнішими моделями — воно за простішими моделями, які адаптуються швидше.

Ринки стають ефективнішими на високочастотному рівні, але більш залежними від режиму на денному/тижневому рівні. Втручання центральних банків, алгоритмічне стадне почуття, домінування пасивних потоків — все це створює чіткі режими, які можуть експлуатувати прості адаптивні системи.

Мій наступний проект? Поєднання виявлення режиму з аналізом на основі ліквідності для прогнозування переходів режиму до їх повного прояву. Попередні результати показують випередження на 4-6 годин для значних зсувів.

Перевага у 2026 році не в тому, щоб мати найкращу модель — вона в тому, щоб мати модель, яка визнає свої помилки та адаптується. Статичні стратегії мертві. Якщо ви не можете запрограмувати адаптивну поведінку, ви торгуєте інструментами вчорашнього дня на ринках завтрашнього.

Ваші наступні кроки

Почніть з простого. Забудьте про нейронні мережі та зосередьтесь на основах режимів:

    • Розрахуйте ковзне співвідношення реалізованої/імплікованої волатильності за 20 днів для вашого основного торгового інструменту
    • Відстежуйте переходи режимів, коли співвідношення перетинає свою 90-денну ковзну середню
    • Проведіть бектест того, як ваша поточна стратегія працює в кожному режимі
    • Впровадьте коригування розміру позиції на основі режиму (поки що без змін стратегії)
    • Лише після того, як це запрацює, додавайте більш складні функції та моделі

Пам'ятайте: виявлення режиму — це інструмент, а не стратегія. Воно підказує, які стратегії запускати і коли. Альфа походить від наявності хороших стратегій для кожного режиму та дисципліни систематичного перемикання між ними.

Ринки ставатимуть дедалі дивнішими. Ваші торгові системи мають бути готові адаптуватися, інакше ви опинитеся на цвинтарі блискучих стратегій, які працювали, поки не перестали. У Two Sigma ми мали ще одне прислів'я: "Ринку байдуже на ваш P&L." Але з правильним виявленням режиму ви принаймні побачите вантажівку, перш ніж вона вас зіб'є.

Поширені запитання

1Що таке виявлення ринкового режиму в трейдингу?
Класифікація ринкових станів (трендовий, бічний, волатильний) за допомогою машинного навчання для динамічної адаптації торгових стратегій замість використання статичних правил.
2Наскільки точним є виявлення режиму за допомогою ML?
Моя система на основі HMM досягає 73% точності класифікації режимів, але час виконання операцій має більше значення, ніж ідеальне виявлення.
3Які ознаки найкраще підходять для виявлення режиму?
Ковзні коефіцієнти волатильності, кореляційні матриці, мікроструктурні метрики. Уникайте запізнілих індикаторів, таких як ковзні середні.
4Чи може виявлення режиму запобігти збиткам під час крахів?
Це зменшило мою просідання в березні 2020 року на 62% завдяки переходу в захисний режим за 3 дні до прискорення краху.
5Який мінімальний обсяг даних потрібен для виявлення режиму?
18 місяців для початкового навчання, але модель значно покращується з 3+ роками, що включають кілька типів режимів.
FibAlgo
Торгівля на основі ШІ

Перетворіть знання на прибуток

Ви щойно дізналися цінні торгові ідеї. Тепер втіліть їх у життя за допомогою сигналів на основі ШІ, які аналізують понад 30 ринків у реальному часі.

10,000+
Активні трейдери
24/7
Сигнали в реальному часі
30+
Ринків охоплено
Без кредитної картки. Безкоштовний доступ до живого торгового терміналу.

Продовжити читання

Переглянути все →
Ліквідність тече як тепло на відкритті ринкуmarket open

Ліквідність тече як тепло на відкритті ринку

📖 9 min
Нічні геп-розриви знищили 40% мого рахунку, поки я не створив цю системуgap trading

Нічні геп-розриви знищили 40% мого рахунку, поки я не створив цю систему

📖 9 min
15% місячної прибутковості від крос-активних імпульсних каскадівmomentum trading

15% місячної прибутковості від крос-активних імпульсних каскадів

📖 12 min