Жизненный цикл торгового алгоритма: от гипотезы до продакшена
Привет, на связи CTO Трейд2Гуд Григорий Соколов. Это первая статья из цикла о построении торговой стратегии как бизнеса. Здесь — весь процесс целиком. В следующих пяти статьях подробнее разберем отдельные этапы.
Почему алгоритмы перестают работать, даже если идея хорошая
Типичная история: трейдер замечает закономерность, проверяет ее на исторических данных, получает хороший результат и запускает алгоритм в реальную торговлю. Через месяц результаты уже не совпадают с тестом, еще через два счет уходит в минус. Алгоритм выключают, а идею признают нерабочей.
По моему опыту, в девяти случаях из десяти проблема не в самой идее, а в процессе. Ломается не гипотеза, а процесс вокруг нее: данные были склеены неправильно, издержки не учтены, размер позиции взят с потолка, критерии остановки не записаны, а при первой нормальной просадке решение принималось на эмоциях.
Поэтому у каждого алгоритма должен быть жизненный цикл. Это не бюрократия, а способ заранее проверить, где можно ошибиться и потерять деньги.
Карта цикла
Всего 15 этапов, которые мы делим на четыре блока. После каждого блока проверяем, стоит ли двигаться дальше.
| Блок | Этапы | Главный вопрос |
|---|---|---|
| Идея | 1–3 | Есть ли здесь вообще преимущество и кто за него платит |
| Доказательство | 4–7 | Это закономерность или я подогнал параметры под прошлое |
| Деньги | 8–11 | Переживет ли счет худший сценарий и останется ли прибыль после расходов |
| Эксплуатация | 12–15 | Что делать, когда алгоритм работает, и когда его выключать |
Блок 1. Идея
Этап 1. Гипотеза
Наблюдение и гипотеза — разные вещи. «Цена часто отскакивает от этого уровня» — наблюдение. Гипотеза звучит иначе: «участники, набравшие позицию от уровня, защищают его при повторном подходе, потому что для них это точка безубытка».
Разница в том, что гипотеза объясняет механизм и потому проверяема. Наблюдение можно только пересчитать на истории, и оно всегда что-нибудь покажет.
Этап 2. Источник преимущества
Самый пропускаемый этап во всем цикле и самый важный. Рынок — игра с отрицательной суммой после издержек. Если вы зарабатываете, кто-то теряет, и надо уметь сказать кто и почему. Приемлемые ответы существуют: участник с другим горизонтом, вынужденный продавец, хеджер, которому цена безразлична, запертая сторона, закрывающая убыток. Неприемлемый ответ — «так показывает индикатор».
Если на вопрос «кто платит» ответа нет, дальше идти не стоит. Вы нашли не преимущество, а закономерность в прошлых данных.
Этап 3. Рынок и инструмент
Инструмент выбирается под гипотезу, а не по привычке. Проверяется ликвидность в те часы, когда стратегия торгует, спред, спецификация контракта, стоимость минимального шага цены, сессии и праздники, механика смены контракта у фьючерсов.
Частая ошибка: протестировать идею на удобном инструменте, а торговать на другом, потому что там меньше депозит. Поведение разное, результат не переносится.
Блок 2. Доказательство
Этап 4. Четкие правила
Все, что трейдер определяет на глаз, нужно перевести в конкретные условия. «Сильный уровень», «значимый swing», «объем подтверждает движение» — это пока не правила, это ощущения. Пока они не формализованы, тестировать нечего.
Проверка качества формализации: дайте описание стратегии другому человеку и попросите разметить график. Если его разметка совпадает с вашей, правила понятны. Если нет — вы описали свою интуицию, а не стратегию.
Этап 5. Данные
От качества данных зависит точность тестов. Поэтому фиксируем источник, период, таймфрейм, пропуски и ошибки. Особенно важно правильно объединять историю фьючерсных контрактов, которые действуют всего несколько месяцев. Разные способы объединения могут давать разные графики и результаты тестирования.
Этап 6. Бэктест
Бэктест — проверка стратегии на исторических данных. Сразу учитываем комиссии и проскальзывание — разницу между ожидаемой и фактической ценой сделки.
Например, если стоп составляет 20 шагов цены, а комиссия — 2 шага, ее размер уже равен 10% величины стопа.
Также важно учитывать порядок исполнения сделок. Если цена достигла и стопа, и цели внутри одной свечи, без подробных данных тестер может ошибочно выбрать более выгодный результат.
Этап 7. Проверка на новых данных
Делим исторические данные на две части. На первой настраиваем стратегию, на второй проверяем результат, не используя ее при настройке.
Если стратегия плохо работает на второй части, вероятно, параметры просто подогнали под прошлое.
Учитываем и количество попыток. Если протестировать 40 вариантов и выбрать лучший, это еще не доказывает, что найдена реальная закономерность. Чем больше попыток, тем строже должна быть проверка.
Блок 3. Деньги
Этап 8. Риск-модель
Размер позиции может влиять на результат сильнее, чем точность входа. Даже хорошая стратегия может привести к убыткам, если выбирать объем сделок без расчета.
Поэтому риск рассчитывают исходя из допустимого убытка, а не желаемой прибыли. Заранее устанавливают лимиты на сделку, день и неделю, а также определяют, что делать при их достижении.
Этап 9. Необходимый капитал
Капитал рассчитываем с учетом максимальной просадки и дополнительного запаса, а не минимального депозита у брокера. В реальной торговле убытки могут оказаться больше, чем на исторических данных.
Этап 10. Юнит-экономика стратегии
Даже прибыльная на тестах стратегия может приносить убытки из-за расходов. Поэтому учитываем постоянные затраты (данные, платформа, сервер, подписки) и переменные (комиссии, проскальзывание, спред). Затем рассчитываем точку безубыточности — сколько нужно зарабатывать, чтобы покрывать расходы.
Этап 11. Исполнение сделок
Цена сделки в тестере может отличаться от реальной. Поэтому проверяем, исполняются ли лимитные заявки по ожидаемой цене и сколько потенциальной прибыли теряется из-за очереди заявок.
Блок 4. Эксплуатация
Этап 12. Запуск алгоритма
Перед запуском нужно определить, как устроена система, как ее включать и останавливать и что произойдет при потере связи. Например, если терминал перестанет работать, стоп-лосс защитит позицию только в том случае, если он установлен на сервере. Если стоп работает внутри терминала, при сбое он тоже перестанет действовать.
Алгоритм запускают постепенно: сначала проверяют на симуляторе, затем на реальных котировках, после этого переходят к торговле минимальным объемом и только потом — рабочим. Условия перехода между этапами определяют заранее.
Этап 13. Форвард-тест
Это проверка алгоритма на данных, которые поступают в реальном времени. В отличие от исторического тестирования, здесь нельзя заранее знать, как поведет себя рынок. Проверка должна длиться минимум месяц. Главное — сравнивать не прибыль, а исполнение сделок. Если средняя цена входа в реальной торговле отличается от результатов теста, значит, первоначальные расчеты были слишком оптимистичными.
Этап 14. Мониторинг
Следить нужно не только за прибылью, но и за тем, как работает алгоритм: сколько сделок он открывает за день, каковы средние прибыль и убыток, соблюдается ли соотношение риска к прибыли и насколько реальные сделки отличаются от запланированных. Эти показатели могут ухудшиться раньше, чем общий финансовый результат.
Отдельно нужно проверять, работает ли система вообще. Если алгоритм не открывает сделки, непонятно, нет ли сигналов или произошел сбой. Без такой проверки о поломке можно узнать слишком поздно — уже по убыткам.
Этап 15. Критерии остановки
Условия остановки нужно определить заранее, хотя делать это не хочется. Фиксируем конкретные значения: при какой просадке выключаем алгоритм, сколько убыточных сделок подряд допускаем и насколько реальные результаты могут отличаться от расчетных.
Важно принять эти решения до запуска. Когда алгоритм уже теряет деньги, всегда хочется подождать еще немного в надежде, что ситуация исправится.
Правило артефакта
Каждый этап оставляет после себя документ. Не заметку в голове, а файл, который можно показать другому человеку.
| Этап | Артефакт |
| Гипотеза и преимущество | Одностраничник: механизм, кто платит, при каких условиях работает |
| Формализация | Спецификация правил, пригодная для передачи |
| Данные | Описание источника, периода и ограничений |
| Бэктест и валидация | Отчеты in-sample и out-of-sample, число попыток оптимизации |
| Риск и экономика | Правила сайзинга, лимиты, расчет точки безубыточности |
| Продакшн | Регламент запуска, мониторинга и аварийной остановки |
| Остановка | Список цифр, при которых выключаем |
Без артефакта этап не пройден. Это не формальность: через два месяца вы не вспомните, почему выбрали именно эти параметры, и начнете подгонять их заново уже под новые данные.
Где цикл ломается чаще всего
| Место | Что происходит | Чем кончается |
| Этап 2 пропущен | Нет ответа, кто платит | Закономерность исчезает, как только меняется режим рынка |
| Этап 7 пропущен | Параметры настроены и проверены на одних данных | Живой результат не похож на тест с первого месяца |
| Этап 10 пропущен | Расходы не посчитаны | Стратегия работает, а счет не растет |
| Этап 15 пропущен | Критерии остановки не записаны | Алгоритм выключается на дне просадки, после максимального убытка |
Что дальше
Следующие статьи цикла разбирают блоки по отдельности: метрики и их чтение, оформление и доказательство идеи, расчет риска и денег, эксплуатация работающего алгоритма.
Общий принцип, который стоит держать в голове с самого начала: бэктест отвечает ровно на один вопрос — была ли у идеи статистическая опора в прошлом. Он ничего не обещает про будущее и не заменяет собой контроль риска.