Опасности бэктестинга в алготрейдинге

Опасности бэктестинга в алготрейдинге



Автоконспект главы 11, книги:
Advances in Financial Machine Learning.
by Marcos Lopez de Prado.

Бэктестинг — один из важнейших инструментов в арсенале количественных трейдеров, но одновременно и один из наименее понимаемых. Часто его воспринимают как средство для исследования торговых стратегий. Однако такое представление ошибочно. Исследование и бэктестинг — это как вождение в состоянии алкогольного опьянения. Нельзя проводить исследования, находясь под влиянием бэктестинга. Многие бэктесты, опубликованные в научных журналах, имеют критические ошибки из-за предвзятости выбора и многократного тестирования.

Этот материал посвящён основным проблемам и ошибкам, возникающим при бэктестинге, а также рекомендациям по их минимизации.

Почему невозможно создать идеальный бэктест

Бэктест — это историческая симуляция, показывающая, как стратегия могла бы работать в прошлом. Это гипотетическая проверка, а не эксперимент. В отличие от физического эксперимента, где можно управлять переменными для установления причинно-следственных связей, бэктест ничего не доказывает. Он не гарантирует ни заявленных метрик, ни успеха в будущем. Прошлое никогда не повторится в точности, а случайные факторы будут другими.

Зачем тогда нужен бэктест? Это своего рода проверка адекватности стратегии в различных аспектах: управление размерами ставок, издержками, устойчивостью к расходам и поведением в разных сценариях. Однако создание хорошего бэктеста — задача крайне сложная. Даже корректный бэктест может не учесть реальную рыночную динамику, например, эффект скольжения, недостаточную ликвидность или влияние крупных ордеров на рынок.

Семь смертных грехов бэктестинга

Команда исследователей из Deutsche Bank в 2014 году выделила следующие основные ошибки:

  1. Предвзятость выживших: использование текущего инвестиционного универсума, игнорируя обанкротившиеся компании и делистингованные активы. Это приводит к чрезмерно оптимистичным результатам, поскольку "выжившие" активы демонстрируют успешные результаты, не отражающие общую картину рынка.
  2. Предвзятость заглядывания в будущее: использование данных, которые не были доступны на момент принятия решения. Например, включение финансовой отчётности, опубликованной после торгового дня, в расчёт сигналов.
  3. Создание историй: оправдание случайных паттернов задним числом. Это порождает иллюзию закономерности там, где её нет.
  4. Переобучение: использование тестового набора данных для обучения. Стратегия показывает выдающиеся результаты на исторических данных, но проваливается на новых.
  5. Игнорирование издержек: моделирование транзакционных издержек без учёта реальных условий рынка, таких как спред, комиссия и проскальзывание.
  6. Упор на выбросы: построение стратегии на экстремальных событиях, которые могут не повториться. Например, извлечение прибыли из кризисных событий, которые трудно воспроизвести.
  7. Игнорирование условий для шорта: недооценка затрат и ограничений на заимствование активов для коротких позиций. На практике шортинг может оказаться невозможным для определённых инструментов или слишком дорогим.

Даже идеальный бэктест может быть ошибочным

Допустим, вы создали бэктест, который воспроизводим, устойчив к критике и учитывает все возможные издержки. Тем не менее, даже идеальный бэктест может быть ложным. Причиной этого является эффект множественного сравнения: при тестировании большого количества гипотез вероятность ложноположительных результатов значительно возрастает. Например, если проверять 20 гипотез с уровнем значимости 5%, статистически одна из них окажется успешной случайно, даже если она не имеет реальной обоснованности. Таким образом, множество повторных тестов приводит к увеличению вероятности статистических ошибок, которые могут создать иллюзию успеха. Почему? Потому что создание такого бэктеста требует множества повторных тестов, что повышает вероятность статистической ошибки.

Каждый раз, когда вы модифицируете стратегию или параметры и снова запускаете бэктест, вы увеличиваете вероятность случайного успеха. Это называется "ловушкой многократного тестирования". Например, если вы протестировали 100 гипотез, даже при уровне значимости 5% пять из них могут оказаться успешными просто случайно.

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

Бэктестинг — не инструмент для исследования

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

Вместо этого важно уделять внимание следующим аспектам:

  • Качественная подготовка данных: очищение данных от аномалий, корректная синхронизация с событиями рынка и учёт доступности информации на момент принятия решения.
  • Корректная валидация и взвешивание: использование кросс-валидации и оценка риска переобучения.
  • Определение значимости признаков: применение методов снижения размерности, таких как главные компоненты или регуляризация.
  • Управление размерами ставок: тестирование стратегии на разных уровнях риска, чтобы определить её устойчивость к просадкам.

Рекомендации по снижению риска переобучения

  1. Разрабатывайте стратегии для классов активов, а не для конкретных инструментов. Это повышает вероятность того, что стратегия будет успешной на новых данных.
  2. Используйте методы агрегирования (bagging), чтобы предотвратить переобучение. Агрегирование снижает чувствительность к шуму в данных.
  3. Не проводите бэктестинг, пока не завершены исследования. Бэктест не должен использоваться для принятия решений на этапе исследования, иначе риск переобучения возрастает.
  4. Записывайте все проведённые бэктесты, чтобы оценить вероятность ошибки. Это помогает учитывать количество протестированных гипотез и корректировать уровень значимости.
  5. Моделируйте сценарии, а не повторяйте историю. Сценарное моделирование позволяет оценить поведение стратегии в новых условиях, таких как изменения ликвидности или волатильности.
  6. Если бэктест неудачен, начните заново. Не пытайтесь "спасать" провалившуюся стратегию, меняя параметры, чтобы улучшить результаты.

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

Report Page