597 / 691BT

Backtesting

Историческое тестирование стратегии

Backtesting моделирует заранее заданные правила на исторических данных. Результат зависит от момента доступности информации, отбора данных, модели исполнения и издержек. Историческая прибыль не является реально исполненной сделкой или гарантией будущей доходности.

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]

ПримерПРИМЕР · BT

Сигнал из прошлого периода, исполнение в следующем

Наш вымышленный пример использует четыре периода одинаковой длины A, B, C и D. Начальные денежные средства составляют 1000 USD, открытых позиций, долга, пополнений и выводов нет. Две цены закрытия перед периодом A равны [100, 100] USD/BTC. Цены открытия периодов от A до D равны [101, 103, 102, 105] USD/BTC, а цены закрытия — [102, 101, 104, 103] USD/BTC. Заранее установленное правило покупает 1 BTC в начале периода, только если последняя завершённая цена закрытия превышает предыдущую завершённую цену закрытия; в конце того же периода всё продаётся. Поэтому сигналы равны [0, 1, 0, 1], где 1 означает сделку, а 0 — бездействие. Модель предполагает полное исполнение точно по указанным ценам открытия и закрытия, нулевые spread и Slippage, без иных издержек, кроме комиссии 0.1 USD за каждую покупку или продажу. В B покупка происходит за 103 USD, а продажа за 101 USD; в D — за 105 USD и 103 USD. Валовые результаты периодов равны [0, -2, 0, -2] USD. Четыре исполненные стороны сделок обходятся суммарно в 0.4 USD, а чистые результаты равны [0, -2.2, 0, -2.2] USD. Валовая сумма составляет -4 USD, чистая сумма -4.4 USD, конечные денежные средства 995.6 USD. График показывает чистый вклад отдельных периодов, а не баланс счёта или вероятность. Это проверяемое вручную моделирование временного порядка и учёта, а не реальные рыночные данные, оптимизация или доказательство будущей результативности.

Для полной картины прочитайте эту статью вместе с Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. На эту статью также ссылаются Technical analysis, OHLCV, Timeframe, Candlestick chart.

01Доказывает ли прибыльный бэктест, что стратегия будет приносить доход?

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

02Достаточно ли вычесть комиссии только из итоговой прибыли?

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

DOC · 001Bailey et al. — The Probability of Backtest OverfittingПервичный источник ↗DOC · 002QuantConnect — Research GuideДокументация ↗DOC · 003QuantConnect — Trade Fills: Key ConceptsДокументация ↗DOC · 004QuantConnect — Slippage: Key ConceptsДокументация ↗DOC · 005scikit-learn — TimeSeriesSplitДокументация ↗DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance ResultsДокументация ↗
Сначала источники · Не является инвестиционной рекомендацией