ML на Мосбирже: почему мой «грааль» не работает
- Целью было добиться результата лучше случайного угадывания 50/50, но комиссии и спред изначально делают «случайную» стратегию отрицательной без покрытия издержек.
- Для отбора бумаг автор оставлял акции с фьючерсами и обогащал данные через два API: брокерский и DaData (по ИНН компаний).
- Загружались минутные котировки по бумагам и индексы IMOEX, IMOEX2, RTSI, RGBI; историю по IMOEX и RGBI пришлось получать через прямой API Мосбиржи (ISS MOEX), на загрузку минуток по индексам уходило около 20 минут.
- Таймфреймы: 15 минут, 1 час и 1 день (основной — 1 час); также тестировались событийные бары по рублёвому объёму (пример — 50 млн руб.) с классификацией бумаг по классам A/B/C.
- Разметка цели строилась по тройному барьеру де Прадо: Take Profit (Цена + N×ATR), Stop Loss (Цена - M×ATR), Time Limit (100 баров), с метками 1/0/-1.
- Модель на CatBoost показывала AUC 0,54–0,55; при COMMISSION_PCT = 0.04/100 и SLIPPAGE_PCT = 0.02/100 каждая сделка теряла 0,06% или 0,12% на круг, и для выхода в плюс требовались движения >0,3–0,5%.
Почему это важно: Этот кейс показывает, как в прикладном ML для рынков ключевыми ограничителями становятся не только качество модели, но и издержки исполнения сделок и структура данных. Даже небольшое преимущество в классификации (AUC чуть выше 0,5) может не превращаться в прибыль, если сигналы «съедаются» комиссиями, проскальзыванием и сменой режимов рынка между тестовыми периодами. Отдельная ценность — в описании полного контура: сбор данных, агрегация таймфреймов, разметка, инженерия признаков и walk-forward тестирование с «очисткой» (purging).
На что обратить внимание: В тексте явно разделены «техническая работоспособность» и финансовый итог, что помогает корректно интерпретировать метрики модели. В одном из фрагментов говорится о лицензии/ограничениях доступа к истории индексов через брокерский API (упоминается MOEX AlgoPack), из-за чего используется альтернативный источник (ISS MOEX). Отдельно отмечены различия между временными и событийными барами и допущение, что временные свечи могут быть шумными. В качестве следующего шага подразумевается поиск другой постановки оптимизации (например, по финансовой метрике вроде коэффициента Шарпа) и обсуждение гипотез: таймфреймы, волатильность, данные стакана, более сложные модели.
Коротко
- Автор собрал пайплайн ML-трейдинга на акциях Мосбиржи: данные, агрегации, разметка по тройному барьеру, CatBoost и walk-forward тесты.
- Даже при AUC 0,54–0,55 результат оказался близок к нулю: издержки (комиссия 0,04% и проскальзывание 0,02%) съедают небольшой перевес.
- В описании показано, как доступность данных влияет на методологию: историю IMOEX и RGBI пришлось получать через ISS MOEX из-за ограничений брокерского API.
- Практически это означает, что метрики классификации сами по себе не гарантируют доходность: критична связка качества сигнала и «стоимости сделки» в выбранном таймфрейме.
- На практике часто полезно отдельно сравнивать временные бары и событийные (по объёму): автор отмечает, что «временные свечи» могут быть шумными при неравномерном рынке.
FAQ
Зачем это важно и что этот пример показывает тем, кто пытается применять машинное обучение для торговли на Московской бирже?
Текст показывает, что даже при рабочем ML-пайплайне небольшой статистический перевес может не перекрывать комиссии, спред и проскальзывание.
Какие данные и источники использовались в проекте, и почему часть истории индексов пришлось получать не через брокерский API?
Автор использовал брокерский API и DaData для обогащения по ИНН, а минутные данные по IMOEX и RGBI получал через ISS MOEX из-за ограничений доступа в брокерском API.
Как в тексте устроена разметка «хорошей сделки» и какие значения меток применяются для обучения модели?
Используется тройной барьер де Прадо (TP, SL и лимит времени 100 баров) с метками 1 для TP, 0 для выхода по времени и -1 для SL.
Какие численные оценки качества и издержек приводятся и как они связаны с требуемой величиной движения цены для выхода в плюс?
Указаны AUC 0,54–0,55 и издержки COMMISSION_PCT 0,04/100 и SLIPPAGE_PCT 0,02/100; автор пишет, что для плюса нужны движения больше 0,3–0,5%.
Читайте также
Интеграция YandexGPT с Siri через Shortcuts и Scriptable
Внедрение искусственного интеллекта в B2B-сегменте Ростелекома: опыт автоматизации бизнес-процессов
Как тимлид заменил десятки вкладок на файловую систему и Claude Code
Как научить LLM исправлять код без лишних изменений
2ГИС внедрил ИИ-помощника в сервис геоаналитики — он оценит потенциал локации для открытия бизнеса
- Издержки исполнения как «порог применимости» ML-сигналов в трейдинге: В кейсе показано, что даже при качестве модели чуть выше случайного угадывания прибыль может не появляться из-за комиссии, спреда и проскальзывания. В примере издержки заданы как COMMISSION_PCT = 0.04/100 и SLIPPAGE_PCT = 0.02/100, а ожидаемое движение должно быть существенно выше (в тексте: >0,3–0,5%), иначе перевес съедается.
[Методология и метрики]
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Автор описывает попытку построить ML-модель для торговли акциями на Московской бирже и приходит к выводу, что технически пайплайн работает, но финансовый результат близок к безубыточности из-за издержек.