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

Тогда вы можете сообщить свои параметры с помощью Годового коэффициента Шарпа 2.0, максимальной просадки 0,25 и скорости попадания 0,57. Но при тестировании на исторических данных или в бумажной торговле эта стратегия не работает так хорошо, как обещала. Даже ваши тщательно подобранные параметры хуже, чем параметры теста.

"Почему?" спросил ваш менеджер.

«Поскольку при выборе параметра происходит переоснащение, эффективность выбора параметра преувеличена».

«Почему происходит переоснащение, которое мы не используем ML)? Как выбрать параметры стратегии с меньшим переобучением? Как мы можем получить более надежную зрелую матрицу показателей на первом этапе? »

В этой статье я постараюсь ответить на эти вопросы на примере.

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

Под дисперсией мы понимаем ошибку измерения (если вы рассматриваете бэктест как измерение стратегии) ​​или чувствительность матриц бэктестинга к определенному набору данных. Если история повторялась много раз, или вы запускаете бэктест в нескольких синтетических ценовых путях, на каждом историческом пути у вас есть один коэффициент Шарпа, полностью во всех путях у вас есть набор коэффициентов Шарпа, дисперсия коэффициентов Шарпа - это дисперсия, о которой мы упоминали здесь. . (Это не дисперсия стратегии, а дисперсия стратегии Шарпа).

Если имеется всего 100 комбинаций параметров, которые вы зацикливали, 50 из них в группе A имеют распределение коэффициента Шарпа N (0,5, 1), другие 50 из них в группе B имеют распределение коэффициента Шарпа N (0, 3). Вы хотите использовать поиск по сетке, чтобы выбрать параметр группы A для своей стратегии, потому что ожидаемый коэффициент Шарпа больше. Однако, при тестировании на исторических данных, 5 лучших коэффициентов Шарпа будут более вероятными в группе B только потому, что дисперсия измерения в группе B больше, чем в группе A.

Кроме того, если параметры-кандидаты плохо распределены, например, 10 из Группы A и 90 из Группы B, и мы выбираем параметр по максимальному коэффициенту Шарпа, более вероятно, что будет выбран B.

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

Почему это явление называется «переобучением»? Коэффициент Шарпа, измеренный при тестировании на исторических данных, сильно зависит от шума в наборе данных. Например, один бэктест показывает, что коэффициент Шарпа для одной комбинации параметров в группе A составляет 0,7 = 0,5 (ожидание) + 0,2 (шум), один в группе B равен 2 = 0,0 (ожидание) + 2,0 (шум). Решение о том, что мы выбираем комбинации вторых параметров для торговой стратегии, зависит от шума, другими словами, мы узнали, что нам следует выбирать второй параметр, изучая шум. В моем понимании существует так много разных явлений, называемых «переобучением», хотя они произошли в совершенно разных ситуациях и имеют разные причины, их одно и то же называют «переобучением». Это может быть переоснащение под одним углом и недоосадка под другим углом одновременно.

После понимания проблемы, как мы можем решить проблему выбора параметра?

Тест чувствительности для уменьшения дисперсии. Анализ чувствительности проверяет изменение производительности после изменения параметров. Мы бы выбрали такие параметры, чтобы производительность не падала резко после возмущения параметров. Аналитики чувствительности могут рассматриваться как множественные коррелированные тесты и использовать среднее значение для уменьшения дисперсии измерения. Взяв среднее значение, поскольку корреляция члена ошибки ρ ‹1, мы уменьшаем нашу дисперсию измерения и получаем N (μ, σ² * ρ + σ² * (1-ρ) / N). ρ - корреляция ошибок между этими тестами на чувствительность, а N - номера тестов. Используя предыдущий пример, вы просто уменьшаете группу A N (0,5, 1) и группу B N (0, 3) до группы A N (0,5, 0,5), группы B (0, 0,5), вы можете выбрать лучшие параметры. Согласно тесту Монте-Карло, вы можете успешно выбрать параметр группы 1 в качестве верхних параметров. К сожалению, это настоящая проблема, потому что корреляция настолько высока, что вы не можете значительно уменьшить дисперсию. Мы будем использовать более продвинутые методы.

Дефлированный коэффициент Шарпа (DSR) обеспечивает скорректированную оценку SR под влиянием нескольких «ложноположительных» следов ¹. Основная идея заключается в том, что если вы попытаетесь N раз найти лучшие параметры производительности, что, если кто-то попробует случайные стратегии N раз, а также получит лучшую производительность в случайном эксперименте, и посмотрите, значительно ли ваша тщательно выбранная стратегия превосходит случайный выбор стратегий. Следуя Бейли и Лопес де Прадо [2014], DSR можно оценить как

где V - дисперсия оцененного SR трасс, N - количество независимых испытаний, Z - CDF стандартного нормального распределения, γ - постоянная Эйлера-Маскерони. Подробности можно найти в Lopez de Prado [2018] ². Как он упоминал в статье Достижения в области финансового машинного обучения ³,

«Каждый результат бэктеста должен сообщаться вместе со всеми трейлами, участвовавшими в его производстве. Без этой информации невозможно оценить вероятность «ложного открытия» бэктеста ».

Затем я покажу пример того, как легко получить идеальный, но «ложноположительный» бэктест и как мы можем использовать тест на чувствительность и DSR, чтобы выяснить, что это «ложноположительный». Вначале я буду использовать наиболее распространенную импульсную стратегию на дневном уровне SP500. Мы вычисляем более короткую экспоненциальную скользящую среднюю (коэффициент затухания α1) и более длинную экспоненциальную скользящую среднюю (коэффициент затухания α2 ›α1). Поскольку мы используем стратегию импульса, мы хотим уменьшить шанс попасть в колебание. Мы используем историческую волатильность и объем, чтобы предсказать, может ли быть тренд. Если простая скользящая средняя с более коротким окном (window1) реализованной волатильности и торгового объема больше, чем простая скользящая средняя с более длинным окном (window2), умноженная на коэффициент масштабирования, мы войдем в позицию. Эта стратегия использовалась более 50 лет, и я считаю, что она не принесет хороших результатов. Но есть 5 параметров, коэффициент затухания EMA α1, коэффициент затухания EMA α2, окно фильтра 1, окно фильтра 2, масштабный коэффициент 5, чтобы у нас было достаточно места для «ложного срабатывания».

Затем мы построили систему мини-бэктеста. Чтобы все было просто, мы предполагаем, что транзакционные издержки отсутствуют, и каждый день проводим ребалансировку.

Затем мы можем объединить структуру мини-бэктеста и наш модуль EMA и Filter, чтобы получить конвейер, входные параметры и производительность стратегии возврата.

Затем мы ищем в сетке все параметры. Я искал комбинацию из 7k параметров, и на моем 4-летнем Surface Pro 4 у меня уходит 1 час.

Мы сортируем результат по коэффициенту Шарпа, чтобы получить лучшие результаты, мы обнаружили, что, скорее всего, выберем очень длинную скользящую среднюю для более длинной EMA (0,001 - самый длинный из возможных параметров, а α - коэффициент убывания), но очень короткое скользящее среднее для более короткая MA (0,4, 0,5, 0,8 - почти самый короткий период среди кандидатов в параметры). Их дисперсия очень велика, и окно дает нам несколько снимков, чтобы получить максимальное количество. Если мы будем использовать эти параметры для торговли, мы однозначно потеряем все. Затем мы можем рассчитать коэффициент Шарпа с пониженным давлением:

DSR составляет 0,873. Это означает, что если мы попробуем случайную стратегию N = 7k раз, ожидаемый максимальный коэффициент Шарпа будет 0,873, что очень близко к нашей стратегии коэффициент Шарпа 0,827. Это указывает на отсутствие существенной разницы между нашей стратегией импульса и случайной стратегией. Это разумно, потому что рынок эффективен и адаптивен.

В заключение, как отметил Маркос Лопес, бэктест не является надежным инструментом исследования из-за «ложного открытия». Я применил его идею к методологии выбора параметров стратегии и пришел к выводу, что мы, скорее всего, выберем параметры с наибольшим разбросом, а не с наибольшим ожиданием.

Ссылки

  1. Бейли, Дэвид Х. и Маркос Лопес де Прадо. «Сниженный коэффициент Шарпа: поправка на смещение выборки, переобучение на исторических данных и ненормальность». Журнал управления портфелем 40.5 (2014): 94–107.
  2. Лопес де Прадо, Маркос и Майкл Дж. Льюис. «Обнаружение ложных инвестиционных стратегий с использованием методов обучения без учителя». Количественные финансы 19.9 (2019): 1555–1565.
  3. Де Прадо, Маркос Лопес. Достижения в области финансового машинного обучения. Джон Вили и сыновья, 2018.

Спасибо за прочтение. Все коды можно найти на моем Github, https://github.com/XiaotongAndyDing/GridSearchBacktestMedium.