- BrainTools - https://www.braintools.ru -
На конференцию «Биржевой Алгоритм 2026» [1] я летел из Перми в Москву рано утром прямо в день конференции 9 октября. Когда прошёл все досмотровые формальности в аэропорту и уже ждал посадку, то через громкоговоритель объявили, что авиакомпания Победа отменила все рейсы Пермь‑Москва на сегодня, хотя посадка на их ближайший рейс в Москву должна была начаться минут через 20. Но у меня был другой перевозчик Аэрофлот — так что моя посадка состоялась, я улетел и смог принять участие в конференции.
Обратная дорога на следующий день оказалась сложнее. Самолёт Sukhoi Superjet несколько раз заходил на посадку в Перми, круга 4 сделал, а в последний заход даже на высоту пятиэтажки опустился и я уже подумал что сядем, но нет — стал набирать высоту и мы улетели в Екатеринбург, несколько пассажиров причём запаниковали и сошли в Екатеринбурге. Потом ещё приходила собака‑кинолог после их схода. Затем самолёт заправили и рейс вернулся в Пермь, а прибытие сдвинулось примерно часов на пять.
Так вот — даже план полёта не гарантирует, что самолёт сядет в нужном месте и в нужное время. И с торговыми стратегиями то же самое: на истории они выглядят убедительно, а в реальности сталкиваются с тем, чего в модели не было. Это был небольшой переход от реальной жизни к алгостратегиям.
Летом после конференции Смартлаба в Санкт‑Петербурге мне почему‑то не давал жить спокойно один вопрос [2] — может ли частный инвестор на данных Московской биржи при помощи языковых моделей найти торговый сигнал и забрать прибыль с него?
Я решил провести такой эксперимент, быть сам себе разработчиком, использовать домашний компьютер с мощной видеокартой. И использовать самые топовые языковые модели, чтобы они помогали разрабатывать: проектировать, писать код, исправлять ошибки [3], разбирать результаты. Модели выбирал по бенчмаркам OpenRouter, брал лучшие из бесплатных.
На всё ушло около полутора месяцев. Автономных агентов не использовал потому что это был разовый эксперимент и у меня не было какой‑то типовой структуры в которую надо было вписывать данные и алгоритмы.
До непосредственного обучения [4] модели я сделал ещё одиннадцать шагов
Летом свой эксперимент я начал я с платной консультации у топовой модели Claude Fable 5.0 (вышло около 20 долларов). Ей я скормил пару статей и две книги по финансовому ML. На выходе получился план из четырёх блоков и 16 этапов.
Согласно этого плана до самого машинного обучения я добирался только на двенадцатом шаге, а доходность видел ещё позже — на шестнадцатом. Пятнадцать шагов подряд я должен был строить конвейер и даже не понимал, чем всё закончится.
Я выбрал инструменты и взял пятиминутные данные AlgoPack (SuperCandles). Архив после преобразования в Parquet получился на 11 ГБ файлах и данные скачивались с Мосбиржи около суток.
Куда файлы скачались, то попытался сравнить полученные значения OHLC c общедоступными графиками типа TradingView или сайта Московской биржи, но это получалось очень долго и почти сразу стало понятно что есть различия между данными Алгопака и другими источниками.
В итоге я написал скрипт, который берёт произвольный инструмент из уже скачанных, берёт случайное время и сравнивает мои загруженные цифры с открытой системой MOEX ISS (Информационно‑статистический сервер Московской Биржи). Нашлось много расхождений — я написал в поддержку Алгопака и мне ответили, что часть найденных записей исправили постфактум. Но ошибки в данных это ведь не просто неудобство. Модель ищет закономерности и может легко обучиться на ошибках.
Так называемых фичей у меня получилось около 260+: микроструктура рынка, преобразования исходных рядов, комбинации между признаками.
Особое внимание [5] все большие языковые модели уделяли отсутствию заглядывания в будущее. Например картинки кошек и собак можно перемешивать как угодно при обучении. Но финансовые данные нельзя: алгоритм должен знать только то, что было известно на конкретный момент. Поэтому я размечал цели по схеме Лопеса де Прадо и проверял модель форвардно.
Весь проект по итогу занял около 70 ГБ. Из них 11 ГБ — исходные данные, остальное нагенерировали скрипты. Когда результат или код не нравились, я заводил новую итерацию и возвращался к прошлой версии. Автономных агентов не было, поэтому для контекста я написал bash‑скрипт, который делает текстовый снимок нужной части проекта.
Градиентный бустинг показал 0,56. А графовая нейросеть не стала лучше
Лишь на двенадцатом шаге я наконец‑то добрался до обучения. Моделью стал CatBoost — это градиентный бустинг на деревьях решений, который умеет работать с категориальными признаками и хорошо дружит с видеокартой.
Но обучать одну модель как предскажи, куда пойдёт цена было бы наивно. Я разбил задачу на три подзадачи, как это описано у Лопеза де Прадо в его книге по финансовому машинному обучению:
Первая задача — ранжирование. Модель смотрит на срез рынка в конкретный момент времени и пытается угадать, какой инструмент обгонит остальные. Не «вырастет ли Сбербанк», а «вырастет ли он сильнее, чем Газпром, Лукойл и ещё двадцать бумаг в этом же срезе». Функция потерь — RMSE, на выходе непрерывный ранг.
Вторая задача — волатильность. Модель учится предсказывать, насколько сильно двинется цена после сигнала. Это нужно для управления размером позиции: если ожидаемый размах маленький, нет смысла входить.
Третья задача — мета‑лейбл. Бинарная классификация: «если первая модель сказала „покупай“, стоит ли реально это делать?» По сути, фильтр ложных срабатываний. Именно для неё считается ROC‑AUC, и именно те самые 0,56.
Но рынок — это не набор изолированных тикеров. Золото коррелирует с инфляционными ожиданиями, индекс Мосбиржи реагирует на нефть, банковский сектор тянет за собой весь рынок. Графовая нейросеть должна была смоделировать эти связи: вершины — инструменты, рёбра — корреляции или причинно‑следственные зависимости, а на выходе — предсказание, обогащённое контекстом соседей по графу.
Я собрал граф, где узлами были инструменты, а рёбра строились по скользящим корреляциям и макро‑контексту. Подал в GNN те же признаки, что и в CatBoost, плюс эмбеддинги соседей. Обучал, валидировал на тех же фолдах, сравнивал на одних и тех же out‑of‑fold выборках.
Но результат показал что улучшения нет. Ни по ROC‑AUC мета‑лейбла, ни по ранговому IC. Граф не добавил ничего, чего не поймал бы бустинг через категориальный признак тикера и кросс‑секционную нормализацию.
А потом я добавил издержки
До этого момента — все 17 шагов — картина на истории была вроде бы обнадёживающей. Потом я учёл реальное исполнение, комиссии и прочие расходы, и результат резко ухудшился. Наблюдаемый сигнал оказался меньше затрат на его реализацию.
Если коротко, то по моим расчётам преимущество составляло около 1–2 пунктов, а стоимость торговли — 4–5 пунктов (для частника). Сигнал в данных есть, но достаётся он бирже, а не частному лицу.
Но вернусь к конференции.
Панель называлась «Machine Learning в трейдинге: где заканчивается хайп и начинается реальная прибыль». Я сгруппировал услышанное по трём вопросам.
Если ИИ пишет код, почему успешных алготрейдеров не стало больше? Участники говорили, что общедоступные модели и данные сами по себе преимущества не дают. Все приходят к похожим гипотезам, и найденное быстро съедает конкуренция. Второй тезис: нужна экспертная постановка задачи. Небольшая ошибка в предположениях или целевой переменной — и технически результат становится бесполезным экономически. Ещё одно замечание: с автоматическим подбором параметров гипотез можно нагенерировать десятки тысяч, и при уровне значимости 5% около 500 из них окажутся значимыми случайно.
Можно ли доверять красивому бэктесту? Одна из выступавших выделила три лжи бэктеста: о цене исполнения, о самом факте исполнения и о реакции [6] рынка на тебя. Самой опасной моделью она назвала простое цена коснулась уровня — заявка исполнена. Такой бэктест систематически дарит сделки, которых в реальности не было бы: важны место в очереди, задержка и рыночное воздействие.
Где остаётся преимущество? Звучали такие варианты: специализированные данные, правильная постановка задачи, глубокое понимание рынка, инфраструктура исполнения. Это не единое мнение всех участников, но с моим опытом [7] оно хорошо сходится. Один из спикеров рассказал и про хакатон на бирже: по его словам, около 60% решений рухнули на второй‑третий день из‑за проблем с доступом к моделям.
На второй панели «Алгоритмическая торговля облигациями», обсуждали открытые данные, дюрацию и выпуклость, динамику рейтингов, ликвидность и управление портфелем. Один из спикеров напомнил, что даже кривизны на многих ресурсах нет, а такие неклассические показатели, как дюрация Фишера — Вейля (показатель чувствительности текущей стоимости денежного потока изменениям процентных ставок), мало кто считает.
Другой привёл опрос с конференции Сбера: меньше 8% присутствующих готовы дать деньги ИИ на торговлю, зато примерно треть использует его как справочник.
Мысль, которая соотносится и с моими: автоматизация не обязана предсказывать цену.
|
Подход |
Что пытается сделать |
|
Предсказательная модель |
Определить вероятное движение |
|
Расчётная и портфельная система |
Посчитать риск, сравнить бумаги, соблюсти ограничения |
|
Исполнительный алгоритм |
Реализовать решение с учётом ликвидности и расходов |
Ценность автоматизации шире, чем попытка угадать цену нейросетью.
В докладе Сергея Бобкова об архитектуре торгового робота мне понравилось что важно не только сколько стратегия заработала на истории, но и при каких предположениях она работает, насколько к ним чувствительна и где перестаёт.
Вопросы, на которые должен отвечать хороший исследовательский процесс:
Что будет, если задержка исполнения больше ожидаемой?
Сохранится ли результат при большей комиссии и проскальзывании?
Не держится ли преимущество на дефекте данных?
Не подогнаны ли параметры под один исторический период?
Продолжает ли стратегия работать на новых данных?
Там же прозвучало, что оптимизатор использует любой дефект данных как фичу, и чем красивее результат, тем внимательнее нужно смотреть на исходные данные. С моей историей про ошибки в Алгопаке это совпало слово в слово.
Я потратил полтора месяца летом на свой эксперимент и получил не готовую стратегию, а понимание того, где именно возникает разрыв между ML и реальной торговлей. После конференции кулуарного общения для себя я сделал пять выводов:
Нужен конвейер гипотез, а не ставка на одну идею. Если вся подготовка построена вокруг одной гипотезы, её провал обесценивает почти всё. На той же инфраструктуре можно проверять и другие.
Данные проверять до поиска преимущества. Особенно если источник слабо документирован или содержит производные показатели с неизвестной методикой.
Начинать с простого базового алгоритма. Сложная архитектура должна доказать преимущество на тех же корректных тестах, а не выбираться из‑за хайпа.
Тестировать экономический результат, а не одну метрику. AUC оценивает классификацию, но не доходность.
Языковые модели лучше работают внутри организованного процесса. Если исследователь понимает задачу, модель помогает писать и проверять код. Если постановка размыта, автономность поиск не ускорит.
Автор: Михаил Шардин
🔗 Моя онлайн‑визитка [8]
📢 Канал «Умный Дом Инвестора» в TG [9] или MAX [10]
12 октября 2026 года
Автор: empenoso
Источник [11]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/36857
URLs in this post:
[1] конференцию «Биржевой Алгоритм 2026»: https://algoclub.pro/
[2] после конференции Смартлаба в Санкт‑Петербурге мне почему‑то не давал жить спокойно один вопрос: https://smart-lab.ru/blog/1318472.php
[3] ошибки: http://www.braintools.ru/article/4192
[4] обучения: http://www.braintools.ru/article/5125
[5] внимание: http://www.braintools.ru/article/7595
[6] реакции: http://www.braintools.ru/article/1549
[7] опытом: http://www.braintools.ru/article/6952
[8] 🔗 Моя онлайн‑визитка: https://shardin.name/?utm_source=habr
[9] TG: https://t.me/+ros3jcpKDb8xODhi
[10] MAX: https://max.ru/join/TDD0U9NukE-zHRuuTK_Hwu9s2L3Nbjy4jxFfH3uNWmQ
[11] Источник: https://habr.com/ru/articles/1093064/?utm_campaign=1093064&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.