Бэктесты лгут. Подгонка под кривую, опережающий взгляд, ошибка выжившего, нереалистичные предположения об исполнении — способы, которыми бэктест может вас обмануть, хорошо задокументированы.
Но если вы серьёзно относитесь к системной торговле, вам всё равно нужно тестировать. Вопрос не в том, делать ли бэктест. А в том, как делать это, не обманывая себя.
Вот методологии, которые действительно работают.
Начните с логики, а не с данных
Прежде чем запускать хоть один тест, объясните, почему ваша стратегия должна работать.
Не "потому что она работала исторически". Это круговое рассуждение. Вам нужна рыночная причина: институциональное поведение создаёт этот паттерн, человеческая психология производит эту тенденцию, структура рынка генерирует эту неэффективность.
Если вы не можете объяснить логику, вы занимаетесь поиском данных. Любое "преимущество", которое вы найдёте, вероятно, является шумом, который выглядел как сигнал.
Хорошие основания:
- Циклы существуют, потому что капитал вращается через фазы накопления и распределения
- Объём подтверждает направление, потому что денежный поток раскрывает институциональное намерение
- Конфлюэнс работает, потому что согласие независимых систем уменьшает ложные сигналы
Запишите свою гипотезу перед тестированием. Это предотвращает подгонку объяснений под результаты.
Заложите реалистичные издержки
Большинство бэктестов предполагают идеальное исполнение. Реальная торговля имеет трение.
Включите в каждый тест:
- Спред: Вы покупаете по ask, продаёте по bid. Смоделируйте это явно
- Проскальзывание: Предполагайте исполнение на 0,1-0,5% хуже вашей сигнальной цены
- Комиссии: Даже "бесплатные" брокеры имеют сборы SEC и издержки на оплату потока ордеров
- Влияние на рынок: Ваш ордер двигает цену, особенно на менее ликвидных инструментах
Стратегия, зарабатывающая 0,1% за сделку с издержками 0,15% в обе стороны — убыточная. Лучше узнать это сейчас, чем после реальных потерь.
Протокол вне выборки
Вот самая важная техника для честного бэктестинга: тестирование вне выборки.
- Разделите данные. Разбейте на внутривыборочные (скажем, 70%) и вневыборочные (30%)
- Разрабатывайте только на внутривыборочных. Делайте все тесты, настройки и оптимизации на внутривыборочных данных
- Тестируйте один раз вне выборки. Когда у вас есть финальная система, протестируйте её на вневыборочных данных, которые вы никогда не видели
- Один шанс. У вас только одна попытка. Если вы тестируете вне выборки, корректируете и тестируете снова, это уже не вне выборки
Если результативность значительно ухудшается на вневыборочных данных, вы переобучились. Если она держится, возможно, у вас есть что-то реальное.
Walk-Forward анализ
Ещё лучше, чем простое тестирование вне выборки — walk-forward анализ:
- Оптимизируйте на периоде 1 (скажем, 2015-2018)
- Тестируйте на периоде 2 (2019)
- Записывайте результаты
- Оптимизируйте на периоде 2 (2016-2019)
- Тестируйте на периоде 3 (2020)
- Повторяйте
Это имитирует то, что вы бы делали на самом деле: периодически переоптимизировать систему на свежих данных, затем торговать вперёд.
Если "тестовые" периоды стабильно показывают хорошие результаты, ваша система робастна. Если результативность в тестовых периодах намного хуже, чем в периодах оптимизации, вы занимаетесь подгонкой под кривую.
Проверка реальности Монте-Карло
Ваш бэктест показывает максимальную просадку 25%. Комфортно, да?
Но это лишь один путь через историю. Случайная вариация могла произвести намного худшее.
Анализ Монте-Карло рандомизирует порядок ваших сделок (или делает выборку с возвратом) и запускает тысячи симуляций. Это показывает диапазон результатов, которые могли произойти с теми же сделками в разных последовательностях.
Если ваша максимальная просадка могла быть 50% при другом везении, вам нужно размеряться на 50% просадки, а не 25%.
Итог
Бэктестинг — это не доказательство преимущества. Это способ опровергнуть плохие идеи — если вы честны в этом.
Хороший бэктест:
- Использует простые правила с рыночной логикой
- Избегает опережающего взгляда и ошибки выжившего
- Включает реалистичные транзакционные издержки
- Резервирует вневыборочные данные для финальной валидации
- Проводит стресс-тестирование с walk-forward и Монте-Карло анализом
Цель — не красивая кривая капитала. Это реалистичная оценка будущей результативности. Это очень разные вещи.
Индикаторы без перерисовки необходимы для честного бэктестинга. Если система, которую вы тестируете, использует анализ циклов, определение режима объёма и голосование моментума, которые финализируются при закрытии свечи, ваш исторический обзор показывает именно то, что вы увидели бы в реальном времени. Никакого опережающего взгляда. Никаких фантомных сигналов. То, что вы тестируете — это то, чем вы бы реально торговали.
Сигналы Pentarch без перерисовки разработаны для честного бэктестинга — то, что вы видите в истории, это именно то, что вы увидели бы в реальном времени, без опережающего взгляда.
Тестируйте с уверенностью →