Backtesting моделирует результаты заранее определённых торговых правил на исторических данных при выбранных предположениях об исполнении сделок и расходах.
Пётр замечает, что за днём роста иногда следует ещё один подъём. Вместо покупки по наитию он записывает правило и применяет его к старым ценам. Это и есть Backtesting: проверка идеи на прошлом. Результат описывает выбранную модель, а не деньги, действительно заработанные Петром. Bailey et al. объясняют, почему привлекательный исторический результат следует отличать от надёжной проверки стратегии. [1]
Пётр вправе использовать только информацию, доступную до сделки. Если правило опирается на цену закрытия дня, нельзя на её основании купить утром того же дня. QuantConnect называет такую ошибку Look-ahead Bias: будущая информация проникла в прошлое решение. Для публикуемых данных важен момент выхода, а не только описываемый период; позднейшие исправления тоже ещё не были известны. Поэтому наш пример использует завершённые предыдущие закрытия и только следующую цену открытия. [2]
Выбор лишь рынков или компаний, сохранившихся до сегодняшнего дня, создаёт другое искажение. QuantConnect называет его Survivorship Bias и иллюстрирует использованием нынешнего состава индекса в прошлом. В данных Bitcoin важны также биржа, перебои и метод формирования цен. Котировка одного сервиса не обязательно была достижима на другом. Ошибки можно исправлять, сохраняя след изменений; удаление неудобных обвалов изменило бы сам исследуемый вопрос. [2]
Программа должна определить, когда, по какой цене и в каком объёме исполнится ордер. Для этого нужны модели исполнения, описанные QuantConnect. Касание цены на графике не доказывает, что весь объём можно было купить по ней. Реальные ордера могут исполняться частично; готовые модели этой платформы в backtest предполагают полное исполнение. Нужно проверить и давность котировки, и ликвидность — возможность найти контрагента для сделки. [3]
Slippage — разница между ожидаемой и полученной ценой исполнения; она может помочь трейдеру или навредить. QuantConnect описывает её моделирование. Также учитываются комиссии и, когда применимо, финансирование и прочие расходы стратегии. Уже включённый в цену расход нельзя вычитать повторно. Нулевой Slippage — предположение, а не установленное свойство реального рынка. Повторение теста с худшим исполнением и большими расходами помогает понять, сохраняется ли вывод. [4]
Если Пётр подгоняет правило на данных, по которым оценивает успех, он сдаёт экзамен с известными ответами. Сначала нужно выделить более ранние данные для разработки, а более поздние — для проверки. TimeSeriesSplit из scikit-learn помогает сохранить этот порядок. Сам он не предотвращает утечку информации при подготовке данных, пересечение целевых периодов или повторную настройку. Изменив правило после просмотра проверки, Пётр использовал и эти данные для разработки. [5]
Среди множества настроек одна может выглядеть прекрасно случайно. Показывая только победителя, мы скрываем число попыток. Bailey et al. исследуют Backtest Overfitting: подгонку стратегии под особенности конкретной истории. Записывайте проверенные параметры, периоды и рынки, а не только лучшую кривую. Авторы предлагают отдельную процедуру оценки вероятности этой проблемы; простое разделение данных её не заменяет. Наш пример такую оценку не вычисляет. [1]
Честный отчёт позволяет восстановить данные, версию правил, сделки, расходы и убыточные периоды. Стратегию для сравнения нужно оценивать при сопоставимых предположениях. Американская NFA также отмечает преимущество знания прошлого и отсутствие опыта настоящих финансовых потерь в гипотетических результатах; её рекламные правила относятся к определённым членам. Backtest помогает отвергнуть идею или изучить её глубже. Даже верный расчёт не доказывает, что она сработает на другом рынке или в реальной торговле. [6]
Правило, которое можно проверить вручную
Для полной картины прочитайте эту статью вместе с Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. На эту статью также ссылаются Technical analysis, OHLCV, Timeframe, Candlestick chart.
01Означает ли прибыльный backtest, что стратегия позволит заработать?+
Он показывает прибыль только на выбранных прошлых данных при определённых предположениях. Проверьте доступность информации, исполнение, расходы и число предшествовавших вариантов. Даже независимая историческая проверка не гарантирует будущий результат.
02Можно ли вычесть все комиссии только в конце?+
Лишь если это соответствует модели и текущие расходы не изменили бы доступные средства или решения. Обычно расход относится к соответствующей сделке. Исполнение и комиссии нужно учитывать без пропусков и двойного вычитания.