Тестирование: проверить правила на данных
Проверка отделяет воспроизводимую гипотезу от удачно подобранного прошлого. Методика задаёт порядок работы с данными, расходами и вариантами правил; положительный тест остаётся историческим наблюдением.
1Зафиксируй протокол до расчёта
Опиши инструмент, источник данных, период, правила входа и выхода, размер позиции и способ учёта расходов. Укажи, в какой момент каждое значение становится известно. Сигнал по закрытию свечи нельзя без дополнительного обоснования исполнять по уже прошедшей цене внутри неё. Заранее выбери показатели оценки и простое сравнение. Сохрани версию правил и журнал всех изменений, чтобы отличать исходную гипотезу от вариантов, возникших после просмотра результатов.
2Раздели разработку и проверку по времени
Выдели ранний участок для разработки и следующий для проверки зафиксированных правил. При последовательной проверке двигай окно вперёд: параметры определяются на прошлых данных и применяются к следующему отрезку. Запиши длину окон и частоту пересмотра заранее. Учитывай даты публикаций и состав доступных тогда инструментов. Если после просмотра проверочного периода изменены правила, этот период уже участвовал в разработке и больше не является независимой финальной проверкой.
3Смоделируй сделку и проверь устойчивость
Добавь комиссии, спред, проскальзывание, расходы удержания и условия частичного либо отсутствующего исполнения там, где это важно для инструмента. Проверь несколько сделок вручную по исходным данным. Затем оцени, как меняются выводы при большем расходе, задержке входа и небольшом изменении параметров. Сильная зависимость от одного значения или нескольких исключительных сделок требует объяснения. Допущения симуляции должны быть видимы рядом с результатом, чтобы сравнение оставалось содержательным.
4Оцени результат вместе с ограничениями
Сравни чистый итог, число сделок, средний исход, просадку и распределение результатов по периодам. Укажи число проверенных вариантов: выбор лучшего из множества повышает риск подгонки. Ни отдельная проверочная выборка, ни последовательные окна не устраняют его автоматически. Сохрани отрицательные результаты и причины следующего изменения. Дальнейшее наблюдение на новых данных проверяет переносимость правил; успешный исторический тест сам по себе не подтверждает будущую доходность и качество реального исполнения.
Расходы меняют смысл результата
В вымышленном тесте получено 60 сделок: 27 прибыльных со средним результатом $40 и 33 убыточные со средней потерей $25 до расходов. Валовой итог равен 27 × 40 − 33 × 25 = $255. При расходе $3 за полный оборот чистый итог составляет $75, или $1,25 на сделку. Если расход увеличится до $5, итог станет −$45. Эти расчёты показывают чувствительность модели; количества сделок и положительного первоначального результата недостаточно для вывода о будущем преимуществе.
Что получаем на выходе
Протокол исследования с версиями правил, временным разделением данных, моделью расходов, перечнем испытанных вариантов и итогами независимой проверки.
Где легко ошибиться
- Использовать будущие значения, пересмотренные публикации или сегодняшний состав инструментов как известные в прошлом.
- Подбирать параметры по проверочному периоду и продолжать называть его независимым.
- Показывать лучший вариант, скрывая остальные попытки, расходы и допущения исполнения.
Источники и механика
QuantConnect · последовательная настройка на прошлых данных ↗QuantConnect · различия симуляции и реального исполнения ↗Bailey, Borwein, López de Prado, Zhu · The Probability of Backtest Overfitting ↗Самостоятельный учебный разбор World Trading. Числовые условия примеров заданы для объяснения.