Перейти к содержанию
суббота, 19 сентября 2026 г.

ИИ Вестник

Главные новости о развитии искусственного интеллекта в России

Разработчик переписал ИИ-алготрейдинг на Go и отказался от LLM ради детерминизма

Источник: Все публикации в потоке Разработка
Developer coding Go trading algorithms on multiple monitors, dark office, focused, photorealistic.
Generated by Sourceful Riverflow (RouterAI)

Российский инженер Олег с более чем одиннадцатилетним опытом в архитектуре и управлении разработкой опубликовал отчёт о собственном проекте алгоритмической торговли на Московской бирже. После трёх лет экспериментов с агентными системами и анализа новостного сентимента он отказался от больших языковых моделей в торговом контуре и собрал модульный Go-монолит на ансамбле из трёх классических моделей машинного обучения. Итоговый бэктест на исторических данных MOEX за 90 дней показал положительный результат при депозите в один миллион рублей.

Автор проекта, работающий в межпроектный период над несколькими собственными инициативами, сосредоточился на задаче AI-трейдинга после того, как предыдущие подходы перестали приносить ожидаемый результат. Первый прототип системы новостного сентимента был создан ещё в 2023 году на базе утилиты nerve-cli, запускавшей запросы к первой открытой модели Gemma в цикле с доступом к инструментам. Агент самостоятельно писал себе инструменты для сбора новостей по заданной теме, проводил анализ настроений и выдавал инвестиционные рекомендации, однако результат оказывался пригодным лишь в одном случае из десяти попыток. Тем не менее система сгенерировала прибыль, которой хватило на двухнедельный отпуск в пятизвёздочном отеле на Хайнане.

Ситуация изменилась в 2025 году, когда новостной анализ перестал давать желаемый эффект на фоне изменившейся рыночной конъюнктуры. Разработчик вооружился современными моделями Claude, DeepSeek, Qwen и бесплатными решениями от Opencode, а также вдохновился выходом модели qwen3.8 27b, которую можно запускать локально на домашнем стенде с видеокартой RTX4090. Дополнительным стимулом стала попавшаяся на глаза вакансия AI-архитектора в торговой системе банка. Первым шагом стал поиск корреляций между новостями и стоимостью бумаг: система ежедневно собирала новости, считала сентимент и формировала отчёт с калибровкой, за месяц накопилось несколько десятков таких отчётов. Попытки подкрутить веса источников, отсеять шум, разбить материалы по категориям, добавить доверие проверенным изданиям и штрафовать жёлтую прессу выявили лишь шум и распределение 50 на 50, однако обнаружились неожиданные закономерности: PR и маркетинговые новости приводили к росту на горизонте пяти дней с вероятностью 80 процентов, а негативные события вроде удаления Озона из магазина приложений также сопровождались ростом акций.

Отдельным эпизодом стало тестирование открытой модели Google TimesFM 3, обученной на сезонных данных и способной находить корреляции между разными временными рядами. Модель обнаружила связь между Полюсом и МТС, а также между МТС и Сбером с лагом в три дня за последние 90 дней, однако на других таймфреймах закономерность не подтвердилась и идею пришлось отбросить. Для сезонного прогнозирования TimesFM 3 показала себя хорошо, но для задач автора не подошла. Параллельно шла работа над собственным движком: испробовав идею на Python, разработчик переписал её на Go, чтобы избежать проблем с воспроизводимостью Python-среды. Получился модульный монолит, который каждые пять минут забирает котировки и стакан по MOEX IIS, торгует в песочнице, тянет новости из проверенных источников, считает FeatureContext с моментумом, RSI, отклонением от скользящей, реализованной волатильностью, z-score объёма, дисбалансом стакана и новостным сентиментом, а также проверяет заявки по набору правил.

В систему заложены практические ограничения: проверка того, не съест ли комиссия прибыль, не слишком ли много заявок, нет ли новостных блокеров. Реализован простейший кластер доступности: если макбук выключится, приложение на ai-box переходит в режим трейдера, а когда макбук оживает, он снова становится основной системой. Исполненные заявки отправляются в телеграм-бота и в аудит-лог, а при запуске система делает бэктест на свежих данных и не стартует, если тот показывает минус. Ключевым решением стал отказ от LLM в торговом контуре ради детерминизма и быстрого бэктеста: модель могла отвечать по-разному на одни и те же входные данные, а бэктест занимал восемь часов. Вместо этого собран ансамбль из логистической регрессии, LightGBM и XGBoost с инференсом на Go, где три модели голосуют и финальный сигнал усредняется. Для анализа новостей обучен собственный bag-of-words классификатор на чистом Go, размечающий заголовок по восьми категориям событий вроде дивидендов, байбэка и санкций вместо расплывчатого сентимента; обучение проводилось на старых новостях до таймфрейма бэктеста.

Итоговый прогон бэктеста на свежих данных MOEX за период с 19 июня по 16 сентября охватил 18 тикеров при депозите один миллион рублей, комиссии 0,05 процента и включённом kill-switch, срабатывающем при просадке портфеля на три процента. Боевой вариант конфигурации оказался не последним по той причине, что на окне в шесть кварталов, то есть 18 месяцев, у него наблюдалась большая просадка, не прошедшая через kill-switch. Автор подчёркивает, что все цифры являются результатом тестирования на исторических данных MOEX с той же защитой, что используется в живой системе, и не представляют собой инвестиционную рекомендацию или обещание доходности. Несмотря на волатильность рынка последних лет, ансамбль из трёх нейросетей, двух специализированных моделей и одной самостоятельно обученной показал принципиальную возможность дохода.

Для российского рынка алгоритмической торговли этот кейс показателен сразу по нескольким причинам. Во-первых, он демонстрирует, что доступ к MOEX IIS и открытым библиотекам машинного обучения позволяет индивидуальному разработчику строить полноценный торговый контур без инфраструктуры брокера. Во-вторых, отказ от LLM в пользу детерминированных моделей отражает общий тренд на зрелость инженерных подходов: языковые модели остаются полезны на этапе исследований и генерации гипотез, но в контуре исполнения требуют воспроизводимости, которой они не обеспечивают. В-третьих, собственный классификатор новостей по восьми категориям событий выглядит более практичным решением, чем универсальный сентимент, поскольку привязывает сигнал к конкретному типу корпоративного события. Сравнение с альтернативами напрашивается само: коммерческие торговые роботы и проприетарные платформы обычно скрывают логику принятия решений, тогда как здесь весь пайплайн описан и воспроизводим, включая механику голосования моделей и правила блокировки заявок.

Открытыми остаются вопросы устойчивости результата на длинных горизонтах и поведения системы в периоды резких рыночных сдвигов, когда исторические корреляции разрушаются. Автор сам указывает, что процесс обучения классификатора, детали бэктестов и прочие детали реализации он готов вынести в комментарии, что оставляет пространство для отраслевой дискуссии. Показательно, что проект развивается параллельно с другими инициативами того же разработчика, включая интерактивный нотный тренажёр, шифрованный дневник, игру по мотивам «Космических рейнджеров» и движок базы знаний по коду и документации. Дальнейшая судьба проекта зависит от того, насколько успешно ансамбль переживёт переход из песочницы в реальный контур и сохранит ли преимущество при росте числа участников рынка, использующих похожие методы.

Читайте также