Создание RL-агента для трейдинга на A2C/A3C

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

Почему RL-агент для трейдинга ломается на живом рынке

Агент на A2C/A3C учится максимизировать среднюю награду по траекториям из обучающей выборки. Рынок при этом нестационарен: меняются режим волатильности, ликвидность и состав участников, а история содержит всего одну реализацию процесса. Политика, выученная под конкретный режим, на новом ведёт себя как случайная — отсюда провал RL-агента в трейдинге при запуске в реальном контуре.

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

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

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

Что даёт обучение с подкреплением: эффект в метриках

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

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

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

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

Сравнение подходов: A2C, A3C и обучение на истории

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

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

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

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

Этапы внедрения: от аудита данных до передачи модели

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

  1. Аудит данных. Сводим историю котировок и сделок по таймфреймам, ищем пропуски, дубликаты, сдвиги времени и признаки утечки будущих значений. На выходе — очищенный набор, описание разрывов и вердикт о пригодности периода для обучения.
  2. Схема обучения. Согласуем пространство действий (вход, выход, размер позиции), функцию вознаграждения с учётом комиссий и проскальзывания, длину эпизода и набор признаков. Здесь же определяем, что считаем успехом: доходность с поправкой на риск, а не абсолютную прибыль.
  3. Сборка окружения. Собираем воспроизводимую среду: закреплённые зависимости, эмулятор брокера с задержками исполнения, журналирование прогонов. Любой запуск повторяется из одной конфигурации в репозитории.
  4. Обучение и настройка. Прогоняем варианты A2C/A3C, сравниваем по устойчивости кривой и числу эпизодов до сходимости, отбираем конфигурацию без переобучения на отдельные режимы рынка.
  5. Проверка на отложенном периоде. Тестируем скользящим окном: обучение на одном отрезке, проверка на следующем, которого модель не видела. Смотрим просадку, поведение в тренде и во флете, а не одну итоговую цифру.
  6. Передача модели и сопровождение. Отдаём код, веса, конфигурации, отчёт о проверках и инструкцию по переобучению. Описываем мониторинг деградации и порядок отката на предыдущую версию.

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

Артефакты внедрения: конфигурации, модели и регламенты

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

  • Файлы конфигурации — гиперпараметры обучения, состав инструментов, окно признаков, лимиты риска и пороги автостопа; версионируются вместе с кодом.
  • Описание схемы обучения — число параллельных сред, частота синхронизации весов, критерии остановки и правила отбора контрольных точек модели.
  • Журналы прогонов — метрики по эпохам, сохранённые веса, отчёт по доходности и просадке на отложенном периоде.
  • Разграничение доступа — отдельные роли на обучение, исполнение сигналов и изменение риск-лимитов; ключи к торговому шлюзу хранятся в секрет-хранилище, а не в репозитории.
  • Инструкции по эксплуатации — порядок запуска, режим «только сигналы», откат на предыдущую контрольную точку одной командой.
  • Регламент переобучения — триггеры (дрейф распределения признаков, деградация метрик), периодичность и порядок ввода новой версии в работу.
  • Документация по данным — словарь признаков, источники, правила обработки пропусков и корпоративных действий.

Смысл перечня не в отчётности: по этим файлам новая команда воспроизводит обучение и продолжает работу без нас.

Кейс: портфель инструментов, метрики до и после внедрения

До: политика на одном активе

В этом кейсе — портфель из двенадцати инструментов: акции, фьючерсы на индекс, валютные пары. Агент обучался на одном активе, и при переносе политика уходила в перекос: до 70% веса забирал самый ликвидный инструмент. На отложенном участке истории Шарп держался около 0.6, максимальная просадка доходила до 28%.

После: что изменили и как считали

Собрали общую политику на весь портфель: в состояние добавили признаки самого инструмента — класс, ликвидность, корреляцию с индексом, — а награду сделали риск-скорректированной со штрафом за концентрацию. Обучали семейством актор-критик (A2C/A3C): несколько параллельных сред прогоняли разные участки истории и режимы волатильности, котировки и стаканы брали из Interactive Brokers.

Метрики считали только на отложенном участке и сравнивали с равновзвешенным портфелем. Шарп 0.6 → 1.3, максимальная просадка 28% → 11%, доля времени в рынке упала с 85% до 60% — агент чаще ждал. Вклад инструментов выровнялся: ни один не даёт больше пятой части результата.

Отдельно прогнали стресс-сценарии: разрыв ликвидности, гэп на открытии, затяжной боковик, трендовый разворот. На каждом агент терял меньше базовой стратегии, а восстановление занимало меньше времени.

Чем RL-агент для трейдинга отличается от стратегии на правилах

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

Формально задача описывается как марковский процесс. Состояние — окно рыночных признаков, текущая позиция, нереализованный результат и свободные средства. Действия — вход, удержание, выход и размер позиции. Награда — доходность шага с поправкой на просадку и издержки. Агент на A2C/A3C обучается через актора-критика: актор предлагает распределение действий, критик оценивает перспективность состояния, градиент правит политику. Готового «если — то» в решении нет: правило вытеснено параметрами, настроенными на данных.

Граница заметнее всего на новых данных. Набор условий, подобранный на истории, ломается вместе со сменой режима: одни и те же пороги в тренде и в боковике дают разное качество, а переписать их можно только руками. Агент переносит поведение, если признаки описывают режим, а не конкретный отрезок. Но гибкость оборачивается своими отказами: политика вырождается в постоянное удержание, когда награда не учитывает издержки, либо подгоняется под исторические аномалии.

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

Технические сомнения: переобучение, проскальзывание, риск

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

Как отличить рабочую модель от переобученной?

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

Как учитывается проскальзывание и реальное исполнение?

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

Что делать, если история сделок короткая?

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

Кто и как контролирует риск?

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

Как проходит подключение к торговой системе?

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

Обсудим задачу и вернёмся с оценкой и планом внедрения

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

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

Вернёмся со схемой обучения (среда, набор признаков, функция вознаграждения, проверка на отрезке, не участвовавшем в обучении), планом внедрения по этапам с точками контроля и регламентом сопровождения модели — мониторинг дрейфа, переобучение, ручная остановка торговли.

Опишите задачу — вернёмся с оценкой и планом.

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

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

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