Разработка AI-системы ранжирования торговых стратегий

Ручной отбор стратегий упирается в скорость и человеческий фактор: пока аналитик сравнивает десятки вариантов, рынок уже изменился. Мы разрабатываем систему ранжирования торговых стратегий под ключ — от подготовки данных до передачи в эксплуатацию. Решение сокращает время отбора в разы и делает приоритеты объяснимыми для команды.
Часто задаваемые вопросы

Почему ручное ранжирование торговых стратегий не масштабируется

Ручной отбор стратегий обычно держится на одном аналитике: он сводит результаты прогонов на исторических данных в общую таблицу, сортирует по доходности и вручную решает, что идёт дальше. Пока гипотез десятки, это терпимо. На сотнях прогонов узкое место в отборе стратегий становится главным ограничением: очередь растягивается на недели, а вердикт зависит от того, кто и в каком порядке до кандидата дошёл.

Отдельная проблема — несопоставимость критериев. Метрики считают на разных периодах, с разными издержками и фильтрами, часть рыночных данных подтягивают руками, и срезы расходятся по времени. Сравниваются не стратегии, а условия их тестов: сильный кандидат отсеивается из-за шума в данных, слабый проходит, потому что попал в удачное окно.

Третья потеря — история решений. Ранжирование торговых стратегий живёт в переписке и личных файлах: причина отклонения не зафиксирована, правила отбора не версионируются, повторяемость не проверяется. Через месяц никто не ответит, почему стратегия с похожими показателями была принята, а другая нет, — и масштабирование отбора гипотез снова упирается в одного человека.

Итог предсказуем: скорость отбора растёт медленнее числа гипотез, а цена ошибки — рабочая позиция, собранная на переобученном кандидате. Разбираем, как это закрывается: где поставить формальные критерии, как привести источники к одному срезу и почему вердикт должен воспроизводиться.

Эффект от внедрения: скорость отбора и устойчивость результата

Ручной отбор кандидатов упирается в стену: чтобы сравнить несколько десятков наборов правил, аналитик прогоняет их по очереди, вручную сводит метрики в таблицу и на глаз выставляет веса. Один цикл занимает недели, а результат следующего прогона не совпадает с предыдущим — кандидат проходит или отсеивается из-за смены порядка проверки, а не из-за качества стратегии.

Система ранжирования считает всех кандидатов одним пакетным прогоном и сортирует по сводному баллу. Скорость отбора кандидатов сокращается с недель до часов, а доля слабых вариантов, отсеиваемых автоматически по порогу, доходит до девяти из десяти — до ручного разбора доходят единицы, и на них хватает времени.

Воспроизводимость результатов отбора даёт версионирование наборов правил: прогон привязан к версии набора, срезу данных и зафиксированным весам. Повторный запуск на том же срезе выдаёт идентичный ранжированный список, поэтому спор «почему эта стратегия выше» решается сравнением двух версий, а не разбором логов. Журнал прогонов ведём в MLflow.

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

Итог — предсказуемый конвейер: прогон, автоматический отсев, разбор остатка. Скорость отбора и устойчивость результата становятся параметрами каждого запуска, а не зависят от того, кто именно сводил таблицу.

Режимы работы системы: пакетный, потоковый и гибридный

Схему расчёта выбирают по двум параметрам: как часто нужен пересчёт ранжирования торговых стратегий и насколько свежей должна быть оценка к моменту решения. От этого зависит, считаем ли мы рейтинг по закрытию периода, обновляем его по мере поступления данных или совмещаем оба подхода.

Пакетный пересчёт воспроизводим: одинаковый вход даёт одинаковый рейтинг, любую оценку можно объяснить и откатить. Потоковая обработка рыночных данных сокращает задержку между изменением рынка и обновлением позиции стратегии, но часть расчётов зависит от порядка прихода событий, и повторить прошлый результат сложнее. Гибридная схема расчёта снимает это противоречие: тяжёлый пересчёт идёт по расписанию, поток дописывает только быстрые поправки.

Режим Когда подходит Ограничения
Пакетный пересчёт Периодические решения, важнее объяснимость и повторяемость оценки Рейтинг устаревает к концу интервала, пиковые нагрузки на расчётный контур
Потоковая обработка Решение принимается на движении рынка, задержка критична Сложнее воспроизвести прошлый результат, выше требования к контролю качества данных и мониторингу
Гибридная схема Нужны и свежесть, и устойчивая база для отчётности и разбора спорных случаев Два контура: дороже в разработке и сопровождении, нужно согласование состояний и проверки сходимости

Ограничения режимов проявляются не сразу, а при росте числа стратегий и источников данных — поэтому режим закладывают на этапе проектирования, а не меняют задним числом. Мы описываем оба контура и правила их согласования заранее: тогда переход от пакетного пересчёта к гибридному становится настройкой, а не переписыванием модели.

Этапы внедрения: от аудита данных до передачи в эксплуатацию

Ранжирование торговых стратегий ломается не на модели, а на входе: пропуски в котировках, разные таймфреймы и делистингованные инструменты дают красивый результат, который не воспроизводится. Поэтому этапы идут строго последовательно — к расчётам не переходим, пока предыдущий слой не принят.

  1. Аудит рыночных данных. Сверяем источники, глубину истории и полноту инструментов, отмечаем разрывы сессий, сплиты и делистинги — иначе критерии отбора смещены к выжившим бумагам.
  2. Критерии отбора. Фиксируем, по чему ранжируем: доходность с поправкой на риск, устойчивость к просадке, издержки оборота; каждый критерий получает вес и правило расчёта.
  3. Схема признаков. Описываем признаки из цен, объёмов и волатильности, их окна и нормализацию — так результат объясним, а не получен перебором вариантов.
  4. Контуры расчёта. Разделяем хранение рядов и слой вычислений: агрегаты и тиковые срезы лежат в ClickHouse, пересчёт после правки признаков занимает минуты, а не ночь.
  5. Проверка на исторических данных. Прогоняем стратегии на отложенном периоде, проверяем устойчивость рангов к смене окна и комиссиям; теряющие место при сдвиге в рейтинг не попадают.
  6. Приёмка системы. Совместно с вашей командой сверяем ранги на контрольной выборке, разбираем расхождения и фиксируем версию модели.
  7. Передача в эксплуатацию. Отдаём конфигурации, регламент пересчёта, мониторинг качества данных и обучение ваших аналитиков.

Критерий готовности один: тот же набор данных и параметров даёт тот же рейтинг, а падение качества котировок видно в мониторинге раньше, чем в торговых результатах.

Комплект поставки: конфигурации, схемы признаков и регламенты

Заказчик получает не итоговый отчёт, а работающий контур: набор конфигураций, описаний и регламентов, по которым ваша команда сама управляет ранжированием торговых стратегий, не обращаясь к нам за каждой правкой. Каждый артефакт привязан к своему месту в процессе — от подготовки данных до разбора расхождений.

  • Конфигурации системы — файлы параметров: веса факторов, горизонты и частота пересчёта, пороги отсечения, правила обработки пропусков. Правятся без пересборки, каждая версия сохраняется, возврат к предыдущей — одна команда.
  • Схема признаков — для каждого показателя указано, из какого источника он считается, какое окно агрегации используется, как обрабатываются выбросы и почему набор признаков именно такой.
  • Политики доступа — роли аналитика, трейдера и риск-контроля, право менять веса и пороги, журнал изменений с автором и причиной.
  • Регламент пересчёта — расписание запусков, порядок шагов, точки контроля качества и действия при расхождении результата с проверкой на исторических данных.
  • Метрики качества ранжирования — что считаем устойчивостью, какие отклонения признаём деградацией и при каких условиях запускается пересмотр весов.
  • Документация — инструкции по развёртыванию, описание конфигураций и схемы данных, разбор типовых сбоев и порядок действий.
  • Передача команде — разбор контура с вашими инженерами и аналитиками, ответы на вопросы по каждому артефакту.

Пример из практики: как изменился отбор после внедрения

До внедрения отбор торговых стратегий держался на ручной проверке: три аналитика прогоняли через Backtrader около сорока гипотез в неделю и отклоняли кандидатов по интуиции, сверяясь с разрозненными показателями в таблицах. Полный цикл отбора занимал две-три недели, а сами решения почти не фиксировались — объяснить отказ через месяц или повторить чужой вывод было нечем.

Что изменили

Мы описали каждую гипотезу набором признаков: поведение доходности в разных рыночных режимах, чувствительность к сдвигу входных данных, корреляция с уже работающими стратегиями, стабильность после смены периода проверки. Модель ранжирования строит упорядоченный список с оценкой уверенности, и аналитик разбирает верхние пятнадцать-двадцать позиций вместо всего потока — ручная работа сместилась туда, где действительно нужно решение человека.

Что стало

Доля слабых кандидатов, отсеянных автоматически до ручного разбора, держится на уровне около 80%, а цикл отбора сократился с двух-трёх недель до двух суток: прогон и ранжирование идут ночью, утром команда получает готовый список с обоснованием по каждому признаку.

Устойчивость результата выросла заметнее скорости: доля стратегий, сохранивших показатели на данных вне обучающего окна, поднялась примерно с 15% до 40%. Причина не в самой модели, а в том, что раньше слабые гипотезы отличались от сильных только на длинной дистанции — теперь они отсекаются до того, как в них вложат время разработки и сопровождения.

Чем ранжирование отличается от ручной сортировки?

Ручная сортировка работает, пока кандидатов десяток: эксперт держит в голове доходность, просадку и общую логику подхода и выбирает по опыту. На двух сотнях вариантов порядок начинает зависеть от того, кто убедительнее спорит, а не от качества стратегии: один и тот же набор при повторном разборе выстраивается по-другому, потому что критерии нигде не зафиксированы.

Формальное ранжирование торговых стратегий считает вес кандидата как взвешенную сумму нормированных показателей. Кроме доходности в оценку входят просадка, устойчивость результата на разных режимах рынка, издержки на сделку, оборот и корреляция с уже работающими стратегиями — без этого в верхушку рейтинга попадают десять копий одного и того же подхода, а диверсификация теряется.

Веса и приоритеты объявляются до просмотра результатов. В ручном режиме критерии невольно подбираются под уже понравившуюся стратегию, в формальном — порядок вычисляется из заранее заданных правил, и правка веса видна всей команде, а не остаётся в голове одного эксперта. Это позволяет пересчитать рейтинг тем же способом на новом срезе данных.

Объяснимость решений даёт вклад каждого показателя в итоговый балл: видно, что кандидат на пятом месте из-за глубокой просадки, а не из-за слабой доходности. Спор переходит с «мне кажется, эта лучше» на «поднимаем ли вес устойчивости» — обсуждается один вес вместо двух сотен кандидатов. Решение остаётся воспроизводимым по журналу прогона, и его можно перепроверить, а не восстанавливать по памяти.

Технические сомнения: данные, режимы рынка, объяснимость

Ранжирование стратегий ломается не на модели, а на данных и на признаках того, что рынок сменил характер. Ниже — четыре вопроса, которые чаще всего всплывают на технических обсуждениях.

Истории мало — модель вообще можно обучать?

Нехватку закрываем не увеличением длины, а структурой. Режем историю на независимые окна, обучаем на дальних, проверяем на последующих, и считаем метрику ранжирования отдельно по каждому окну. Если разброс между окнами большой — сигнал слабый, и это видно до вывода системы в работу. Плюс расширяем набор признаков: не только цена, но и ликвидность, волатильность, сезонность, поэтому каждое наблюдение начинает нести больше информации.

Как система переживает смену режима рынка?

Режим описываем явными наблюдаемыми величинами — тренд против боковика, широкая или узкая волатильность, устойчивость спреда. Ранжирование строится отдельно внутри режима, а не одной универсальной формулой. Когда статистика режима уходит из привычных границ, веса пересчитываются и доля капитала под стратегию снижается автоматически, без ручного вмешательства.

Почему стратегия оказалась выше — объяснимо?

Для каждой позиции в списке храним вклад признаков в итоговый балл. Заказчик видит, что именно подняло стратегию и что её ограничивает, а не абстрактное «модель посчитала». Это же служит инструментом контроля: если вес признака расходится со здравым смыслом, мы это находим на этапе проверки, а не после просадки.

Обязательно сразу запускать всё?

Нет, идём поэтапно. Сначала офлайн-контур: данные, признаки, ранжирование, отчёты по устойчивости. Затем — работа на исторических данных в режиме, близком к живому, с ежедневным сравнением прогноза и факта. И только после этого — ограниченная доля капитала и постепенное расширение списка и объёма, по заранее заданным критериям остановки.

С чего начать: какие данные и доступы понадобятся

Чтобы подготовка к обсуждению не растянулась на недели переписки, нам нужен конкретный набор входных данных, доступов и ограничений. Чем точнее вы опишете, как решения по стратегиям принимаются сейчас, тем меньше допущений мы заложим в ранжирование и тем реалистичнее будет план работ.

  • исторические ряды: сделки, котировки и данные о ликвидности за период, покрывающий разные режимы волатильности;
  • каталог стратегий: правила входа и выхода, параметры риска, версия и авторство каждой;
  • журналы фактического исполнения: реальные цены, проскальзывание, отказы, задержки;
  • доступы к данным: выгрузка или чтение из хранилища, доступ к торговому контуру в тестовом режиме без права вывода средств;
  • ограничения: какие метрики и горизонты считаются приемлемыми, что запрещено учитывать в ранжировании;
  • регламент: кто принимает решение по итогам ранжирования и нужна ли объяснимость по каждой стратегии;
  • ответственные с вашей стороны: владелец данных и тот, кто подтвердит корректность исторических рядов.

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

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142