Когда я только начинал строить торговые алгоритмы, главным заблуждением было считать, что риск — это что-то, что можно измерить одним числом и успокоиться. Волатильность, VaR, максимальная просадка — все эти метрики работают до тех пор, пока рынок остаётся в рамках вчерашнего поведения. Но как только меняется режим, классические оценки начинают врать. Собственно, поэтому машинное обучение в оценке риска — не дань моде, а необходимость для тех, кто работает с реальными деньгами.
ML здесь не заменяет финансовую математику, а дополняет её: помогает учесть нелинейности, скрытые факторы, взаимодействие активов и смену рыночных режимов. Особенно остро это чувствуется на российском рынке, где геополитические шоки, скачки ставок и неравномерная ликвидность создают идеальные условия для стресс-тестирования любых моделей. Ниже — практический разбор того, как строить риск-оценку с помощью ML, какие модели реально работают, где чаще всего ошибаются и как собрать пайплайн, который не развалится через месяц.
Что такое риск портфеля и зачем здесь машинное обучение
Под риском портфеля большинство понимает вероятность неблагоприятного исхода: убытка, глубокой просадки, роста волатильности или ухудшения соотношения доходности к риску. На практике одной цифрой не обойтись — приходится работать с набором метрик, каждая из которых подсвечивает свою грань проблемы:
- волатильность — амплитуда колебаний доходности, базовый индикатор нестабильности;
- VaR (Value at Risk) — потенциальный убыток на заданном горизонте с определённой вероятностью, например, «5% VaR на 10 дней»;
- CVaR / Expected Shortfall — средний убыток в «плохом хвосте» распределения, то есть не просто граница, а ожидаемая глубина падения, если VaR пробит;
- максимальная просадка — самая глубокая потеря от локального пика до дна, критичная для оценки психологической устойчивости стратегии;
- риск ликвидности — насколько сложно быстро выйти из позиции без сильного проскальзывания, особенно актуально для низколиквидных бумаг;
- факторный риск — зависимость портфеля от ставок, индекса, валюты, сырья и других макро-драйверов, которые могут синхронно обрушить несколько позиций.
Классические методы — исторический VaR, ковариационные матрицы, GARCH — хорошо работают, когда данные ведут себя более-менее стационарно. Но рынок почти никогда не стационарен. Я не раз наблюдал, как модель, обученная на спокойном периоде, выдавала уверенные прогнозы, а потом в кризис проседала до нулевой полезности. ML здесь нужен именно для того, чтобы учиться на нелинейных связях, распознавать смену режимов и строить адаптивные оценки риска, которые подстраиваются под текущее состояние рынка.
Чем ML лучше классических моделей, а чем — нет
Машинное обучение не отменяет финансовую математику. Оно дополняет её там, где стандартные модели становятся слишком грубыми. Важно понимать границы применимости — иначе легко попасть в ловушку завышенных ожиданий.
Что ML делает лучше
- Учитывает много факторов одновременно: цены, объёмы, волатильность, ставки, макроданные, технические индикаторы — всё это может быть подано на вход модели без жёстких предположений о распределении.
- Находит нелинейные зависимости между активами и режимами рынка. Например, корреляция между двумя бумагами может быть слабой в спокойный период, но резко возрастать в кризис — ML это ловит.
- Может строить персональные оценки риска для конкретного портфеля, а не только для рынка в целом. Это важно, когда у вас не индексный портфель, а сложная структура с разными весами.
- Помогает в прогнозе вероятности стресс-сценариев: роста просадки, превышения лимита риска, ускорения волатильности. По сути, это система раннего предупреждения.
- Полезен для динамической переоценки риска при появлении новых данных. Пересчитал модель — получил свежую картинку без ручного пересчёта параметров.
Где ML слабее
- Требует качественных данных и аккуратной подготовки признаков. Мусор на входе — мусор на выходе, и это особенно жёстко работает в финансах.
- Плохо переносится на новые режимы, если обучен только на «спокойном» прошлом. Модель не знает того, чего не видела, и в кризис может вести себя непредсказуемо.
- Легко переобучается, особенно на финансовых временных рядах, где шума много, а структура слабая. Я часто вижу, как начинающие аналитики выдают идеальные бэктесты, которые рассыпаются на реальных данных.
- Не даёт магического результата без правильной постановки задачи. Если цель сформулирована слишком шумно или неверно, ML не поможет.
- Часто проигрывает простым моделям, если задача не требует сложности. Переусложнение ради переусложнения — это не путь к успеху.
Главный вывод: ML полезен не как замена VaR или стресс-тестам, а как слой, который помогает делать риск-оценку более адаптивной. И это работает только при грамотном внедрении.
Какие задачи решают модели машинного обучения
Оценка риска портфеля — это не одна задача, а несколько разных сценариев. Важно выбрать правильную постановку, иначе модель будет решать не то, что нужно бизнесу.
1. Прогноз волатильности
Модель оценивает, какой будет нестабильность доходности в ближайшие дни или недели. Это нужно для позиционирования, расчёта размера позиции, определения плеча и контроля риска по лимитам. В своё время я использовал градиентный бустинг для прогноза волатильности на российских акциях — это позволяло динамически менять долю капитала на сделку в зависимости от ожидаемой «тряски».
2. Прогноз вероятности просадки
Здесь задача формулируется как классификация: будет ли в ближайшем окне просадка выше заданного порога. Это удобно для риск-менеджмента и предупреждающих сигналов. Например, если модель говорит, что вероятность просадки более 5% за 10 дней превышает 70%, можно заранее сократить позиции.
3. Оценка VaR и CVaR
Модель учится предсказывать хвостовые потери. Это особенно полезно для портфелей с высокой концентрацией риска или сложной структурой активов. Вместо предположения о нормальности распределения мы получаем эмпирическую оценку, которая учитывает реальные «толстые хвосты».
4. Режимная классификация рынка
Модель определяет тип рынка: трендовый, боковой, высоковолатильный, стрессовый, восстановительный. После этого риск можно оценивать по-разному в каждом режиме — и это один из самых мощных практических подходов. Я часто добавляю режимные признаки в модели, и это почти всегда улучшает предсказательную силу.
5. Факторная модель риска
ML помогает найти скрытые факторы риска, которые не очевидны из обычной корреляции. Например, портфель может быть формально диверсифицирован по активам, но фактически сильно зависеть от одного макрофактора — скажем, от курса рубля или ставок. Это позволяет вовремя хеджировать неочевидные зависимости.
Какие данные нужны для оценки риска
Чем лучше данные, тем полезнее модель. Но здесь важна не только широта, но и дисциплина: данные должны быть синхронизированы, очищены и правильно подготовлены.
Базовые источники данных
- исторические цены активов;
- объёмы торгов;
- доходности по периодам;
- индексные данные;
- ключевая ставка и доходности ОФЗ;
- валютные курсы;
- сырьевые индикаторы;
- корпоративные события;
- календарные признаки;
- макроэкономические ряды.
Полезные признаки
Ниже — примеры признаков, которые реально помогают в задачах риска. Это не абстрактный список, а то, что я сам неоднократно использовал в рабочих моделях.
| Группа признаков | Примеры | Для чего полезны |
|---|---|---|
| Рыночные | доходность, волатильность, гэпы, объём | базовая динамика риска |
| Скользящие окна | средняя доходность за 5/20/60 дней, rolling std | оценка локального режима |
| Кросс-активные | корреляции, спрэды, бета к индексу | риск заражения через рынок |
| Макро | ставка, инфляция, курс, доходности ОФЗ | влияние внешней среды |
| Событийные | дивиденды, отчётность, санкционные новости | скачки риска и разрывы цен |
| Технические | ATR, RSI, MACD, расстояние до средней | режимность и перегретость |
Что особенно важно в российских данных
Для России критично учитывать низкую и неравномерную ликвидность в отдельных бумагах, резкие изменения режима из-за новостей, влияние валюты и ставок, сезонность дивидендов и корпоративных событий, а также различие между blue chips и менее ликвидными активами. Если игнорировать эти факторы, модель будет «хорошо» работать только на бумаге — на реальных деньгах она быстро начнёт ошибаться.
Подходы к моделированию риска
Классическая база, которую стоит знать
Перед ML полезно иметь опорные методы: исторический VaR, параметрический VaR, GARCH-модели, ковариационные матрицы, стресс-тесты, сценарный анализ. Эти методы нужны не как конкуренты, а как baseline. Если ML не обгоняет их хотя бы по стабильности и практической полезности, усложнение не оправдано. Я всегда начинаю с простых моделей и только потом добавляю ML, если вижу потенциал.
Модели машинного обучения, которые реально применяются
Линейные модели
Подходят как стартовая точка: линейная регрессия, логистическая регрессия, Lasso / Ridge / Elastic Net. Плюсы — простота, интерпретируемость, лёгкая отладка. Минусы — плохо ловят нелинейности и ограничены в сложных режимах рынка. Но для быстрой проверки гипотез они незаменимы.
Деревья и ансамбли
Часто дают лучший практический баланс: Random Forest, Gradient Boosting, XGBoost, LightGBM, CatBoost. Хорошо работают на смешанных признаках, ловят нелинейности, устойчивы к шуму. Но могут переобучаться, требуют аккуратной валидации по времени и хуже интерпретируются, чем линейные модели. В большинстве моих проектов градиентный бустинг — это первая модель, которую я пробую после линейного baseline.
Нейросети
Подходят, когда данных много и структура сложная: MLP, LSTM, GRU, Temporal Convolutional Networks, Transformer-подходы для временных рядов. Плюсы — гибкость и способность работать с последовательностями. Минусы — трудно объяснять, дорого обучать и настраивать. На финансовых данных часто не дают преимущества без серьёзной подготовки. Я применял LSTM для прогноза волатильности на минутных данных, но для дневных масштабов выигрыш был минимальным по сравнению с градиентным бустингом.
Практический пайплайн: как построить модель риска
Ниже — рабочая схема, которая подходит для реальных проектов. Я использую её как каркас в большинстве задач, связанных с риск-моделированием.
Шаг 1. Определить цель
Сначала нужно выбрать, что именно вы прогнозируете: будущую волатильность, вероятность просадки, VaR на 1 день или 10 дней, смену режима рынка, риск превышения лимита. Без этой формулировки модель будет «предсказывать всё и ничего». Чёткая цель — это половина успеха.
Шаг 2. Собрать данные
Соберите: цены активов портфеля, бенчмарк, макрофакторы, календарные события, данные по объёмам и ликвидности. Важно синхронизировать частоту данных. Если часть признаков дневная, а часть недельная, нужно заранее решить, как их приводить к общей шкале — например, интерполировать или агрегировать.
Шаг 3. Очистить и подготовить
Обязательно проверьте: пропуски, выбросы, дубли, несостыковки по датам, неравномерность торговых дней, корпоративные разрывы и сплиты. Очистка данных — это рутина, которая занимает до 80% времени, но без неё всё остальное не имеет смысла.
Шаг 4. Построить признаки
Хорошие признаки часто важнее самой модели. Я обычно конструирую: лаги доходностей, rolling volatility, rolling correlation, momentum, range-based volatility, liquidity proxies, изменения ставок и валюты, индикаторы режима. Чем больше релевантных признаков, тем лучше модель может разделить разные состояния рынка.
Шаг 5. Разделить данные по времени
Нельзя делать случайный train/test split как в обычном ML. Для финансовых рядов нужен временной порядок. Подходы: train на прошлом, test на будущем; walk-forward validation; rolling window backtesting. Это критически важно, чтобы избежать утечки будущей информации.
Шаг 6. Выбрать метрику
Для разных задач метрики разные:
| Задача | Метрика |
|---|---|
| Прогноз волатильности | MAE, RMSE, MAPE |
| Классификация просадки | ROC-AUC, F1, recall |
| VaR-прогноз | coverage, backtesting exceptions |
| Смена режима | accuracy, balanced accuracy |
| Риск-лимиты | доля ложных тревог и пропусков |
Для риск-задач важна не только точность, но и цена ошибки. Иногда лучше чаще «перестраховаться», чем пропустить стресс-событие. Я обычно смотрю на recall для событий просадки — пропустить кризис дороже, чем лишний раз сократить позицию.
Шаг 7. Проверить модель на устойчивость
Надо тестировать не только качество, но и стабильность: на разных рыночных режимах, на разных окнах обучения, на отдельных активах, в периоды кризиса, в период низкой ликвидности. Модель, которая работает только в спокойный период, — это не модель, а бомба замедленного действия.
Пример практической постановки задачи
Допустим, у вас портфель из российских акций и облигаций. Нужно оценивать вероятность того, что в ближайшие 5 торговых дней просадка превысит 3%. Тогда можно сделать так:
- таргет: 1, если max drawdown за следующие 5 дней > 3%, иначе 0;
- признаки: текущая волатильность, доходности индекса, изменение курса, доходность ОФЗ, объёмы, корреляции, ATR;
- модель: CatBoost или LightGBM — они хорошо работают с табличными данными и не требуют долгой настройки;
- валидация: walk-forward с пошаговым переобучением;
- решение: при высокой вероятности просадки уменьшать долю риска или хеджировать портфель.
Это уже не абстрактная аналитика, а инструмент управления капиталом. Я неоднократно строил подобные системы для своих портфелей — они позволяют вовремя снижать позиции и избегать самых глубоких просадок.
Типовые ошибки при использовании ML в риск-оценке
1. Утечка будущей информации
Самая частая ошибка. Например, признак строится с использованием данных, которые на момент прогноза ещё неизвестны. В финансах это убивает весь результат: модель может показывать идеальные метрики на бэктесте, но в реальной торговле окажется бесполезной.
2. Случайная валидация
Если перемешать временной ряд, качество будет завышено. Для рынка это почти всегда ошибка, потому что нарушается временная структура зависимостей.
3. Переобучение на одном режиме
Модель может идеально работать в спокойный период и развалиться в кризис. Я всегда проверяю модели на стресс-периодах — например, на 2008, 2014, 2020 и 2022 годах для России.
4. Слишком много признаков
Чем больше шумных фич, тем выше риск подогнать модель под историю. Лучше иметь 20-30 хорошо продуманных признаков, чем 200 случайных.
5. Игнорирование транзакционных издержек
Если модель влияет на торговое решение, надо учитывать комиссию, спред и проскальзывание. Иначе стратегия, которая на бумаге зарабатывает, на реальном рынке будет убыточной.
6. Отсутствие интерпретации
Риск-менеджменту важно понимать, почему модель показала высокий риск. Иначе доверие к системе быстро падает. Я всегда добавляю анализ важности признаков и SHAP-значения, чтобы объяснить, что именно повлияло на оценку.
Как повысить качество модели
Есть несколько практических приёмов, которые реально помогают улучшить риск-модели.
Используйте ансамбль подходов
Лучше не полагаться на один метод. Сравните: исторический VaR, GARCH, градиентный бустинг, простую логистическую модель, стресс-сценарии. Если несколько методов показывают один и тот же сигнал, ему можно доверять больше. Это простая, но мощная техника.
Добавляйте режимные признаки
Рынок ведёт себя по-разному в разных состояниях. Полезно вводить: индикатор волатильного режима, трендовый режим, флаг кризисного периода, расстояние до локальных экстремумов. Я часто использую кластеризацию для выделения режимов, а затем добавляю метки кластеров как признаки.
Делайте калибровку вероятностей
Если модель выдаёт вероятность просадки, она должна быть калибрована. Иначе «70% риск» может означать что угодно. Калибровка по Платту или изотоническая регрессия помогают привести вероятности к реалистичным значениям.
Проверяйте стабильность по времени
Смотрите, как качество меняется на новых окнах. Если оно быстро деградирует, модель надо чаще переобучать или упрощать. Я обычно строю кривые качества во времени — это наглядно показывает, где модель начинает «сыпаться».
Сохраняйте интерпретируемость
Для практики полезны: feature importance, SHAP, PDP, анализ ошибок по режимам рынка. Это не только помогает объяснить модель, но и найти слабые места.
Когда ML действительно оправдан
ML особенно полезен, если: у портфеля много факторов риска, активы ведут себя нелинейно, рынок часто меняет режим, нужна автоматическая переоценка риска, есть достаточно исторических данных, решение влияет на реальный капитал. Если же портфель простой, данных мало, а риск нужно оценить быстро и прозрачно, классические методы могут оказаться лучше. Я не раз возвращался к простым моделям, когда ML не давал ощутимого прироста качества.
Мини-чек-лист перед внедрением
- Есть чёткая цель: VaR, волатильность, просадка или режим рынка.
- Данные очищены и синхронизированы по времени.
- Нет утечки будущей информации.
- Валидация идёт по времени, а не случайно.
- Есть baseline-модель для сравнения.
- Учтены комиссии, спред и ликвидность.
- Проверена устойчивость на кризисных периодах.
- Результат интерпретируем для бизнеса или риск-менеджмента.
Итог
Оценка риска портфеля с помощью машинного обучения особенно полезна там, где рынок меняется быстро, а классические формулы слишком грубы. ML помогает не «предсказать рынок», а увидеть рост опасности раньше, чем он проявится в убытке. Это система раннего предупреждения, а не хрустальный шар.
Лучший практический подход — строить не одну «умную модель», а систему: классические метрики + признаки режима + ML-оценка риска + регулярная проверка на новых данных. Тогда модель становится не академическим экспериментом, а рабочим инструментом управления капиталом. Именно так я подхожу к построению риск-моделей в своих проектах — и именно такой подход позволяет спать спокойно даже в самые турбулентные периоды.
FAQ
Чем ML-оценка риска отличается от обычного VaR?
Обычный VaR опирается на заданную статистическую схему, а ML может учитывать больше факторов, нелинейности и смену режимов рынка. Это не замена, а дополнение, которое делает оценку более адаптивной.
Какой алгоритм лучше для оценки риска портфеля?
Для практики часто хорошо работают градиентный бустинг, CatBoost, LightGBM и простые линейные модели как baseline. Выбор зависит от задачи и данных, но в большинстве случаев градиентный бустинг даёт наилучший баланс точности и стабильности.
Можно ли оценивать риск только по историческим ценам?
Можно, но качество часто будет ниже. Лучше добавлять объёмы, ликвидность, ставки, валюту и макрофакторы — это даёт более полную картину рыночной среды.
Почему случайное разбиение данных опасно?
Потому что в финансовых рядах будущее может попасть в обучение. Это даёт завышенное качество и иллюзию хорошей модели, которая не работает на реальных данных.
Подходит ли нейросеть для риска портфеля?
Да, если данных много и задача сложная. Но в прикладных проектах часто достаточно более простых и устойчивых моделей. Нейросети требуют больше ресурсов и не всегда окупают эту сложность.
Что важнее: точность или стабильность?
Для риск-менеджмента стабильность часто важнее. Модель, которая чуть менее точна, но работает в разных режимах, обычно полезнее, чем модель с идеальной точностью на истории, но разваливающаяся в кризис.
