Сначала я, как и многие, верил, что если подобрать правильные настройки индикаторов, бот почувствует рынок. Перебирал скользящие средние на истории — и получал красивую кривую доходности. Потом добавлял комиссии и проскальзывание — и прибыль испарялась. Знакомо? Обычно после этого начинаются танцы с бубном: меняешь один параметр — становится хуже, откатываешься назад. А проблема не в параметрах, а в самом подходе к тестированию.
Почему алгоритмы умирают
Однажды, после трёх часов отладки NaN, который оказался банальным несоответствием таймзон, я понял: я оптимизирую под прошлое, игнорируя статистический шум. На рынке нет идеального прошлого — есть только вероятности, которые мы оцениваем. Любая стратегия, подогнанная под всю историю, ловит шум, а не закономерность. Когда такой алгоритм встречается с реальными деньгами, он разваливается.
Чтобы этого не случилось, нужно четыре вещи.
Четыре принципа устойчивой стратегии
- Walk-forward валидация. Вместо подгонки на всех данных окно двигается вперёд: год обучаете, квартал проверяете, потом сдвигаетесь. Это имитация реальной торговли с регулярной перенастройкой. Так вы видите, как стратегия ведёт себя на данных, которые не участвовали в подборе параметров.
- Явные издержки. Комиссии, спред, проскальзывание закладывайте до того, как смотрите на кривую доходности. Стратегия, которая зарабатывает 20% годовых без издержек, легко превращается в убыточную при комиссии $0.005 за акцию. Если на графике всё красиво только без учёта трения, это не стратегия, а теоретическая модель.
- Стабильность параметров. Прогоните стратегию на соседних наборах параметров. Если небольшое изменение (с 10 на 11 для быстрой средней) роняет годовую доходность с 20% до −5%, вы переобучились. Рабочие параметры должны давать плавное ухудшение, а не обрыв.
- Риск-ориентированное позиционирование. Размер позиции зависит от волатильности рынка — например, через ATR (средний истинный диапазон). В спокойные периоды ставите больше, в бурные — меньше. Это защищает алгоритм от резких движений, которые убивают стратегии с постоянным размером позиции.
Сравнение: наивный подход против робастного
Разница видна на каждом этапе.
| Критерий | Наивный подход | Робастный подход |
|---|---|---|
| Тестирование | Подгонка на всей истории | Walk-forward с обучающими и тестовыми окнами |
| Издержки | Не учитываются | Комиссии, проскальзывание, влияние на цену |
| Параметры | Один фиксированный набор | Проверка устойчивости на соседних значениях |
| Размер позиции | Постоянный | Волатильностное позиционирование (ATR) |
Как применить это на практике
Предположим, вы торгуете простую стратегию на пересечении двух скользящих средних. Наивная реализация часто содержит look-ahead bias: сигнал сдвигается на один бар, но сами скользящие средние уже используют будущие данные при переоптимизации. Плюс нет издержек и мани-менеджмента. Вот как это исправить.
- Разбейте историю на окна: например, 252 торговых дня для обучения и 63 дня для проверки (примерно год и квартал).
- Внутри обучающего окна переберите параметры (быструю и медленную среднюю) и выберите лучшие — например, по коэффициенту Шарпа.
- На тестовом окне примените эти параметры, но с учётом комиссий и проскальзывания (заложите хотя бы 5 базисных пунктов на сделку).
- Проверьте, что результат не проваливается при соседних параметрах. Если да — это переобучение.
- Размер позиции рассчитывайте через ATR: например, волатильность за 20 дней определяет, сколько акций купить.
- Сдвиньте окно вперёд на размер тестового периода и повторите. Так вы получите совокупную кривую доходности, которая моделирует реальную торговлю.
Типичные ошибки
- Look-ahead bias: использование данных, которые в реальной торговле недоступны (например, будущие значения при расчёте скользящей средней).
- Оптимизация на всём историческом периоде — вы подгоняетесь под шум, а не под закономерность.
- Игнорирование издержек: стратегия, которая зарабатывает только на нулевой комиссии, нежизнеспособна.
- Отсутствие проверки стабильности параметров: одна маленькая цифра может превратить прибыль в убыток.
Прибыльный алгоритм — это не секретный индикатор, а честная система тестирования и управления рисками. Четыре принципа из этой статьи не гарантируют золотые горы, но они отсекают большинство самообманов. Начните с малого: перестаньте гнаться за идеальной кривой на истории, добейтесь, чтобы алгоритм пережил первое столкновение с реальностью.
Комментарии (0)
Войдите, чтобы комментировать.
Пока нет комментариев. Будьте первым.