Глава 223: Робастные торговые модели
1. Введение
Модели машинного обучения, развёрнутые на финансовых рынках, сталкиваются с уникальной и беспощадной проблемой: распределение данных, с которым они столкнутся завтра, может мало напоминать данные, на которых они обучались вчера. Рынки проходят через смены режимов — от низковолатильных бычьих трендов к высоковолатильным обвалам, от трендовых сред к боковым диапазонам с возвратом к среднему — и модель, блестяще работающая в одном режиме, может катастрофически провалиться в другом.
Робастные торговые модели разработаны для поддержания приемлемой производительности в широком диапазоне рыночных условий, включая условия, явно не представленные в обучающих данных. Вместо оптимизации средней производительности на исторических данных, робастные модели учитывают наихудшие сценарии, сдвиги распределений и состязательные условия. Эта глава исследует математические основы, практические техники и стратегии реализации для построения ML-торговых систем, которые выживают и процветают, когда рыночная погода меняется.
Потребность в робастности в торговле — не просто академический вопрос. Мгновенные обвалы, кризисы ликвидности, геополитические шоки и структурные изменения рынка (такие как рост самой алгоритмической торговли) создают среды, где стандартные модели ломаются. Робастная модель не обещает идеальную производительность везде; вместо этого она гарантирует, что её производительность в наихудшем случае остаётся в допустимых пределах.
Мы рассмотрим дистрибуционно робастную оптимизацию (DRO), диверсификацию ансамблей, обучение с возмущением входных данных, оценку с учётом режимов и практическую реализацию на Rust с интеграцией живых рыночных данных Bybit.
2. Математические основы
2.1 Стандартная минимизация эмпирического риска
Традиционные ML-модели обучаются через минимизацию эмпирического риска (ERM). Для набора данных из N образцов, взятых из некоторого распределения P, ERM находит параметры theta, минимизирующие:
min_theta (1/N) * sum_{i=1}^{N} L(f_theta(x_i), y_i)где L — функция потерь. Неявное предположение состоит в том, что будущие данные будут взяты из того же распределения P. На финансовых рынках это предположение регулярно нарушается.
2.2 Дистрибуционно робастная оптимизация (DRO)
DRO заменяет одно распределение P множеством неопределённости Q распределений и оптимизирует для наихудшего случая:
min_theta max_{Q in U(P)} E_{(x,y)~Q} [L(f_theta(x), y)]где U(P) — множество неоднозначности, центрированное вокруг эмпирического распределения P. Ключевой вопрос — как определить U(P).
2.3 Вассерштейновская робастность
Один принципиальный способ определения множества неоднозначности использует расстояние Вассерштейна. p-расстояние Вассерштейна между распределениями P и Q:
W_p(P, Q) = ( inf_{gamma in Pi(P,Q)} E_{(x,y)~gamma} [d(x,y)^p] )^{1/p}где Pi(P,Q) — множество всех совместных распределений с маргиналами P и Q. Задача DRO Вассерштейна:
min_theta max_{Q: W_p(Q, P_hat) <= epsilon} E_{Q} [L(f_theta(x), y)]Эта задача имеет элегантную двойственную формулировку. Для случая p=1 двойственная задача сводится к регуляризованной ERM:
min_theta (1/N) * sum_{i=1}^{N} L(f_theta(x_i), y_i) + lambda * Lip(f_theta)где Lip(f_theta) — константа Липшица модели. Это даёт прямую связь: контроль константы Липшица модели делает её робастной к возмущениям распределения.
2.4 Минимизация риска наихудшего случая
Альтернативный подход — оптимизация условной стоимости под риском (CVaR). Вместо минимизации средних потерь мы минимизируем средние потери по наихудшей alpha-доле образцов:
CVaR_alpha(L) = (1/alpha) * integral_0^alpha VaR_u(L) duНа практике это означает увеличение весов образцов с высокими потерями при обучении, заставляя модель обращать внимание на сложные случаи — именно те рыночные условия, где робастность важнее всего.
2.5 Робастная статистика для конструирования признаков
Робастные оценки заменяют стандартную статистику альтернативами, менее чувствительными к выбросам:
- Медианное абсолютное отклонение (MAD) вместо стандартного отклонения: MAD = median(|x_i - median(x)|)
- Винсоризованные средние вместо арифметических средних: обрезка экстремальных значений перед усреднением
- Потери Хубера вместо квадратичной ошибки: квадратичные для малых ошибок, линейные для больших
L_Huber(r) = { r^2/2 если |r| <= delta { delta*|r| - delta^2/2 иначе3. Измерения робастности
3.1 Робастность к возмущениям входных данных
Малые изменения входных признаков не должны вызывать больших изменений в выходе модели. В торговле возмущения входных данных возникают из-за:
- Шум данных: отскок бид-аск, ошибки измерения в данных OHLCV
- Джиттер времени: небольшие различия во времени выборки данных
- Вариации расчёта признаков: разные окна ретроспективного анализа, дающие немного разные индикаторы
Модель, робастная к возмущениям входных данных, имеет ограниченную константу Липшица: для близких входов x и x’, |f(x) - f(x’)| также мало.
3.2 Сдвиг распределения
Совместное распределение P(X, Y) изменяется со временем. Это можно разложить на:
- Ковариатный сдвиг: P(X) изменяется, но P(Y|X) остаётся прежним. Пример: режимы волатильности меняются, но связь между признаками и доходностью стабильна.
- Сдвиг меток: P(Y) изменяется, но P(X|Y) остаётся прежним. Пример: базовая частота положительных доходностей изменяется.
- Дрейф концепции: P(Y|X) сам изменяется. Пример: сигнал моментума, работавший в 2020 году, разворачивается в 2022 году.
3.3 Дрейф концепции
Дрейф концепции — наиболее сложная форма сдвига распределения, потому что фундаментальная моделируемая зависимость изменилась. Стратегии включают:
- Обнаружение дрейфа: мониторинг производительности модели на предмет статистически значимого ухудшения
- Адаптивное окно: использование только недавних данных с размером окна, адаптированным на основе обнаруженного дрейфа
- Онлайн-обучение: непрерывное обновление параметров модели по мере поступления новых данных
3.4 Состязательная манипуляция
На финансовых рынках другие участники могут активно пытаться использовать предсказуемое поведение моделей:
- Охота за стопами: движение цены для срабатывания кластеров стоп-лосс ордеров
- Спуфинг: размещение и отмена крупных ордеров для манипулирования книгой ордеров
- Фронтраннинг сигналов: обнаружение и торговля впереди алгоритмических сигналов
Состязательная робастность требует, чтобы модель нельзя было легко «обмануть» намеренно созданными рыночными условиями.
4. Торговые приложения
4.1 Обобщение между режимами
Наиболее важное применение робастности в торговле — построение моделей, работающих в разных рыночных режимах. Типичный рынок проходит через:
- Бычьи рынки: устойчивые восходящие тренды с низкой или умеренной волатильностью
- Медвежьи рынки: устойчивые нисходящие тренды с растущей волатильностью
- Боковые/диапазонные рынки: нет чёткого тренда, поведение с возвратом к среднему
- Режимы обвала: внезапные, резкие просадки с экстремальной волатильностью и скачками корреляции
Робастная модель должна сохранять прибыльность (или хотя бы ограничивать убытки) во всех этих режимах. Это достигается через:
- Обучение с балансировкой режимов: обеспечение наличия достаточных образцов из всех режимов в обучающих данных
- Оптимизация наихудшего режима: явная оптимизация для наименее эффективного режима
- Модели, обусловленные режимом: использование обнаружения режима для выбора подходящих подмоделей
4.2 Робастная оптимизация портфеля
Классическая оптимизация среднего-дисперсии печально хрупка, потому что зависит от оценённых средних и ковариаций, которые сами являются шумными оценками. Робастная оптимизация портфеля решает это путём:
- Использования множеств неопределённости вокруг оценённых параметров
- Минимизации дисперсии портфеля в наихудшем случае: min_w max_{Sigma in U} w^T Sigma w
- Применения оценок со сжатием для ковариационных матриц (Ледуа-Вольф)
- Использования пересемплированных эффективных границ
4.3 Стресс-тестирование
Робастные модели должны быть валидированы через строгое стресс-тестирование:
- Исторические стресс-тесты: воспроизведение модели через известные кризисные периоды (финансовый кризис 2008, обвал COVID 2020, криптозима 2022)
- Синтетические стресс-тесты: генерация искусственных, но правдоподобных неблагоприятных сценариев
- Анализ чувствительности: измерение изменения выхода модели при возмущении отдельных входов
- Тесты перехода режимов: оценка поведения модели при переходах между режимами
5. Техники
5.1 Диверсификация ансамблей
Стандартные ансамбли (бэггинг, бустинг) улучшают точность, но могут не улучшать робастность, если все базовые модели отказывают в одних и тех же условиях. Ансамбли с поощрением разнообразия явно штрафуют корреляцию между предсказаниями базовых моделей:
L_ensemble = sum_i L(f_i(x), y) - lambda * sum_{i<j} corr(f_i, f_j)Техники включают:
- Обучение на разных подмножествах признаков
- Обучение на данных из разных временных периодов
- Использование разных архитектур моделей
- Обучение с отрицательной корреляцией
5.2 Предобработка входных данных для робастности
- Ранговое преобразование: замена сырых значений признаков их рангами устраняет чувствительность к выбросам
- Адаптивная нормализация: z-нормализация с скользящей статистикой адаптируется к изменяющимся распределениям
- Обрезка: ограничение признаков фиксированным диапазоном предотвращает доминирование экстремальных значений
- Дифференцирование: использование доходностей вместо цен устраняет нестационарность
5.3 Калибровка выходов
Уверенность модели должна отражать истинную вероятность. Техники калибровки включают:
- Масштабирование Платта: подгонка сигмоида к сырым выходам модели
- Изотоническая регрессия: непараметрический метод калибровки
- Температурное масштабирование: деление логитов на обучаемый параметр температуры
- Конформное предсказание: предоставление интервалов предсказания с гарантированным покрытием
5.4 Рандомизация домена
Заимствованная из робототехники, рандомизация домена обучает модели на искусственно варьируемых средах:
- Инъекция шума: добавление случайного шума к обучающим признакам
- Генерация синтетических режимов: создание искусственных рыночных данных с варьируемыми статистическими свойствами
- Аугментация данных: применение преобразований, сохраняющих семантику меток (например, деформация времени, масштабирование амплитуды)
6. Реализация на Rust
Наша реализация на Rust предоставляет полный фреймворк для построения и оценки робастных торговых моделей. Ключевые компоненты:
6.1 Симулятор рыночных режимов
Мы моделируем четыре рыночных режима с различными статистическими свойствами:
- Бычий: положительный дрифт (0.001 за шаг), низкая волатильность (0.01), лёгкая положительная автокорреляция
- Медвежий: отрицательный дрифт (-0.001), высокая волатильность (0.02), лёгкая отрицательная автокорреляция
- Боковой: почти нулевой дрифт, очень низкая волатильность (0.005), сильный возврат к среднему
- Обвал: большой отрицательный дрифт (-0.005), экстремальная волатильность (0.05), эффекты моментума/каскада
Каждый режим генерирует синтетические ценовые данные с реалистичными статистическими свойствами.
6.2 Стандартное vs робастное обучение
Стандартная модель использует простую ERM на исторических данных. Робастная модель включает три улучшения:
- Перевзвешивание образцов: увеличение весов образцов с высокими потерями (вдохновлено CVaR)
- Инъекция шума во входные данные: обучение с добавлением гауссовского шума к признакам
- Разнообразие ансамбля: обучение нескольких моделей и поощрение разнообразия предсказаний
6.3 Оценка робастности
Мы измеряем робастность по нескольким осям:
- Чистая точность: производительность на невозмущённых тестовых данных
- Точность при возмущениях: производительность при повреждении входных признаков шумом
- Межрежимная точность: средняя производительность по всем рыночным режимам
- Точность в наихудшем режиме: производительность в самом сложном режиме
- Разрыв робастности: разница между чистой и наихудшей точностью (меньше — лучше)
6.4 Базовые структуры данных
Библиотека определяет чёткие структуры данных для рыночных данных, параметров модели, конфигураций режимов и результатов оценки. Все компоненты спроектированы для компонуемости и тестируемости.
Смотрите rust/src/lib.rs для полной реализации с встроенной документацией и rust/examples/trading_example.rs для полного рабочего примера.
7. Интеграция данных Bybit
Реализация включает клиент API Bybit, который получает реальные данные OHLCV (Open, High, Low, Close, Volume) для любой торговой пары. Ключевые аспекты:
7.1 Интеграция API
Мы используем публичный эндпоинт Bybit V5 API для свечных данных (klines):
GET https://api.bybit.com/v5/market/klineПараметры:
category: “spot” или “linear” (бессрочные фьючерсы)symbol: торговая пара (например, “BTCUSDT”)interval: интервал свечи (например, “60” для 1 часа)limit: количество свечей для получения
7.2 Конструирование признаков из рыночных данных
Из сырых данных OHLCV мы вычисляем робастные признаки:
- Логарифмические доходности:
ln(close_t / close_{t-1})— более стационарны, чем сырые цены - Волатильность: скользящее стандартное отклонение логарифмических доходностей
- Моментум: сумма недавних логарифмических доходностей за окно ретроспективного анализа
- Коэффициент объёма: текущий объём, делённый на скользящий средний объём
- Диапазон максимум-минимум:
(high - low) / close— мера внутридневной волатильности
Все признаки ранг-преобразуются для дополнительной робастности против выбросов.
7.3 Маркировка режимов
Мы используем простую, но эффективную схему маркировки режимов, основанную на скользящей доходности и волатильности:
- Бычий: положительная скользящая доходность И волатильность ниже медианы
- Медвежий: отрицательная скользящая доходность И волатильность выше медианы
- Обвал: отрицательная скользящая доходность И экстремальная волатильность (верхний квартиль)
- Боковой: всё остальное
8. Ключевые выводы
-
Стандартные ML-модели хрупки на финансовых рынках, потому что оптимизируют среднюю производительность на одном распределении, тогда как рынки проходят через смены режимов и сдвиги распределений.
-
Дистрибуционно робастная оптимизация (DRO) предоставляет принципиальный фреймворк для оптимизации наихудшего случая, а DRO Вассерштейна предлагает элегантную связь с регуляризацией Липшица.
-
Робастность многомерна: модели должны быть робастны к возмущениям входных данных, сдвигам распределений, дрейфу концепции и состязательной манипуляции одновременно.
-
Обобщение между режимами — основная практическая задача. Модель, работающая только на бычьих рынках, — это обязательство, а не актив.
-
Простые техники мощны: инъекция шума при обучении, перевзвешивание образцов к сложным случаям и диверсификация ансамблей могут значительно улучшить робастность при минимальных дополнительных затратах на сложность.
-
Робастное конструирование признаков (ранговые преобразования, адаптивная нормализация, логарифмические доходности) часто более эффективно, чем сложные архитектуры моделей.
-
Строгое стресс-тестирование по историческим кризисам, синтетическим сценариям и переходам режимов необходимо для валидации заявлений о робастности.
-
Существует компромисс между робастностью и точностью: робастные модели обычно жертвуют некоторой пиковой производительностью в благоприятных условиях ради лучшей производительности в наихудшем случае. В торговле этот компромисс почти всегда оправдан, потому что просадки обходятся дороже, чем упущенная прибыль.
-
Робастность — не разовое достижение, а непрерывный процесс. Модели должны постоянно мониториться на предмет дрейфа и переоцениваться по мере эволюции структуры рынка.
-
Rust обеспечивает отличную производительность для реализации робастных циклов обучения, требующих множества оценок возмущений, обучения ансамблей и крупномасштабного моделирования режимов.