Backtesting — историческое моделирование торговых правил или правил принятия решений с явно заданными данными, временной последовательностью и предположениями об исполнении. Оно позволяет изучить поведение правила на прошлой выборке, но информативность результата зависит от устройства всего теста.
Backtesting воспроизводит правила на исторических данных и рассчитывает результат, который они дали бы при выбранных предположениях. Бейли и соавторы описывают его как историческое моделирование алгоритмической стратегии и одновременно предупреждают о риске ложных открытий. Наша редакционная граница: результат относится к конкретной версии правил, данных и модели исполнения. Он не доказывает, что кто-либо действительно совершил эти сделки. Воспроизводимый расчёт может выявить ошибку или неподходящую идею, но сам по себе не превращает прошлое в надёжный прогноз. [Bailey et al. — The Probability of Backtest Overfitting]
QuantConnect описывает искажение, при котором моделирование использует будущую информацию, например бухгалтерские данные до их публикации или позднейшие исправления. Наш собственный временной контракт требует для каждого входного значения момента его доступности, а не только даты периода, к которому оно относится. Без дополнительного предположения сигнал закрывшейся свечи не может получить сделку по цене, которая уже была недоступна. В нашем примере предыдущие цены закрытия используются лишь для следующего периода, а модель явно определяет его исполнение на открытии. [QuantConnect — Research Guide]
QuantConnect предупреждает о тестировании только ценных бумаг, доживших до конца периода, и ретроспективном применении сегодняшнего состава индекса. Наш более общий вопрос: сохраняет ли исторический набор также инструменты, доступные тогда, но исчезнувшие позднее. Необходимо документировать пропуски данных, изменения методики и выбор рынков. В моделировании биткоина нельзя автоматически считать цену одного сервиса достижимой на другом. Чистота данных означает прослеживаемость исправлений, а не удаление неудобных результатов. [QuantConnect — Research Guide]
Документация QuantConnect отделяет сигнал и заявку от модели, определяющей цену и объём исполнения. Она также отмечает различие между частичным исполнением в реальной торговле и предположением полного исполнения в готовых моделях. Наше требование — описать, когда заявка может исполняться, что происходит при недостаточной ликвидности и как обрабатывается устаревшая цена. Касание ценового уровня в исторических данных само по себе не доказывает наличие контрагента для заявки произвольного размера. Результат модели исполнения остаётся предположением симуляции. [QuantConnect — Trade Fills: Key Concepts]
QuantConnect описывает Slippage как разницу между ожидаемой и фактической ценой исполнения и указывает на влияние задержек, соединения и рыночных условий; отклонение бывает благоприятным и неблагоприятным. Наша проверка издержек разделяет комиссии, цену исполнения и возможные иные расходы на удержание позиции или финансирование. Издержку, уже включённую в цену исполнения, нельзя вычитать повторно. Нулевое значение — конкретное модельное предположение, а не доказательство рынка без издержек. Чувствительность к более высоким затратам помогает понять, зависит ли небольшая историческая прибыль от оптимистичных настроек. [QuantConnect — Slippage: Key Concepts]
Документация TimeSeriesSplit объясняет хронологическое разделение, чтобы модель не обучалась на будущем и не оценивалась на прошлом. Наше методическое требование — назначить период разработки правил и период их последующей проверки ещё до просмотра результатов. Если после неудачи правила снова меняют по данным проверочного периода, этот период уже повлиял на разработку. Одно хронологическое разделение не устраняет утечку информации из предобработки, перекрывающихся целевых переменных или повторного выбора вариантов. Нужно описать и процедуру, и границы данных. [scikit-learn — TimeSeriesSplit]
Бейли и соавторы показывают, что повторный поиск лучшей конфигурации на одних данных повышает риск ложных открытий и подгонки под прошлый шум. Наше правило отчётности — раскрывать историю попыток, а не только выигравшую кривую. Это включает изменения параметров, периодов и набора инструментов. Результат, выбранный после множества испытаний, не обладает той же информативностью, что заранее установленное неизменное правило. Их метод оценки вероятности переобучения в нашем простом примере не применяется и не заменяется единственным разделением данных. [Bailey et al. — The Probability of Backtest Overfitting]
NFA предупреждает, что гипотетические результаты не отражают реальную торговлю, могут использовать знание последующих событий и неточно моделировать ликвидность, проскальзывание или поведение при реальном убытке. Поэтому наш отчёт должен сохранять версии данных и кода, правила, предположения об исполнении, учтённые издержки и полный список моделируемых сделок. Общей доходности нужен контекст риска и сравнение в одинаковых условиях; выбранного красивого графика недостаточно. Даже безошибочная реализация исторического теста не гарантирует осуществимость или доходность на будущем рынке. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]
Сигнал из прошлого периода, исполнение в следующем
Для полной картины прочитайте эту статью вместе с Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. На эту статью также ссылаются Technical analysis, OHLCV, Timeframe, Candlestick chart.
01Доказывает ли прибыльный бэктест, что стратегия будет приносить доход?+
Нет. Результат может зависеть от конкретных данных, издержек, модели исполнения или выбора лучшего варианта. Необходимо проверить временную корректность, предположения и процедуру выбора; даже после этого гарантии будущей доходности нет.
02Достаточно ли вычесть комиссии только из итоговой прибыли?+
Только если такой способ точно соответствует модели и не влияет на доступный капитал или последующие решения. Обычно издержки нужно учитывать при соответствующих событиях, различать цену исполнения и комиссии и предотвращать двойное вычитание.