Чему меня научила просадка в 99,99% при создании торговых ботов

Самый первый торговый бот, который я запустил на реальном счёте, потерял почти всё. Win rate: 25%. Максимальная просадка (max drawdown): 99,99%. Он не взорвался потому, что рынок оказался жесток. Он взорвался потому, что я построил его так, как большинство строит своего первого бота — как prototype, скреплённый моими собственными мнениями.

Это история о том, почему я удалил каждое ручное правило из системы, которая пришла ему на смену, и чему это решение научило меня в отношении того, где на самом деле место человеческому суждению в автоматизированной стратегии.

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

Удобная ошибка

Когда вы только начинаете, жёстко зашитые правила ощущаются как контроль. Stop-loss на 3%. Take-profit на каком-нибудь круглом числе. Position sizing по формуле, вычитанной в каком-то блог-посте. Каждое правило по отдельности кажется разумным. Вместе они образуют хрупкий механизм, который никогда не видел той ситуации, с которой ему предстоит столкнуться.

Моя первая система была полна таких правил. К тому же все расчёты она выполняла на CPU, в циклах, как пишут одноразовый скрипт. Всё это не имело значения, пока я гонял backtest на чистых, дружелюбных данных. И всё это стало иметь значение в тот момент, когда появились реальные условия — fees, slippage, возможность liquidation. Жёсткий стоп в 3%, который на бумаге выглядит дисциплинированным, превращается в механизм, который продаёт при каждом всплеске шума и не даёт идее дышать. Просадка (drawdown) не была одной катастрофической сделкой. Это была тысяча мелких, уверенных и ошибочных решений.

Неудобный урок

Урок состоял не в том, чтобы «лучше настроить stop-loss». Он состоял в том, что бутылочным горлышком был я сам. Каждый жёстко зашитый порог был мной, замораживающим догадку в системе и заставляющим будущее ей подчиняться.

Поэтому в следующей системе я установил правило о правилах: внутри той части модели, которая действительно обучается, нет вообще никаких ручных правил. Ни stop-loss, ни take-profit, ни position sizing, ни leverage. Если решение влияет на то, как ведёт себя стратегия, модель должна выучить его из последствий своих действий — а не унаследовать от моей интуиции. (Безопасность на уровне системы — лимиты экспозиции, kill-switch — это отдельный слой, и он остаётся. Уходит именно моё ручное написание сделки.)

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

Где человеку всё ещё есть место

Удаление ручных правил не убирает человека. Оно его перемещает. Я больше не решаю, что делает модель в конкретный момент. Я решаю, что значит «хорошо» — какой reward она получает, в каких условиях обучается, какие издержки обязана учитывать. Проектирование этой objective function — самая человеческая часть всего предприятия, и ошибиться в ней гораздо опаснее, чем в любой отдельной плохой сделке, потому что модель будет оптимизировать ровно то, о чём вы попросили, а не то, что вы имели в виду.

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

Вывод

Просадка в 99,99% — дорогой учитель, но понятный. Бот провалился не потому, что ему не хватало правил. Он провалился потому, что у него были мои правила — жёсткие, не проверенные реальностью и подменяющие обучение вместо того, чтобы его обеспечивать.

Если вы строите свою первую систему, самое полезное, что вы можете удалить, — это ваша собственная уверенность.


Это часть 1 продолжающегося анонимного журнала о создании торговой системы на основе обучения с подкреплением (RL). Он о методе и ошибках, а не о сигналах — ничто здесь не является инвестиционной рекомендацией, и никакие детали стратегии не раскрываются.