Семь бэктестов, и чистый шум даст Шарп 0.98

Возьмите два года дневных данных, прогоните семь вариаций одной стратегии, и случайный шум выдаст вам коэффициент Шарпа около 1.0. Истинное преимущество такой стратегии равно ровно нулю, но на экране она выглядит как повод занести реальные деньги.

Два года данных. Семь попыток. Шарп 0.98.

Это результат в замкнутой форме, опубликованный в Notices of the American Mathematical Society в 2014 году. Авторы: Bailey, Borwein, Lopez de Prado и Zhu. Работа с тех пор лежит в открытом доступе, и почти никто из розничных трейдеров ее не открывал. Что удобно, потому что почти все розничные трейдеры занимаются ровно тем, от чего она предостерегает.

Число, которого нет в вашем бэктесте

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

Вспомните, как выглядит обычное исследование. Тестируем пересечение скользящих средних, не работает. Меняем окно с 20 на 50, стало лучше. Добавляем фильтр по RSI, еще лучше. Пробуем на другом активе, хуже, откатываемся. Двигаем стоп с 2 процентов на 1.5, снова лучше. Выкидываем обвал 2020 года, потому что это же аномалия. На выходе Шарп 1.4 и красивая кривая эквити.

Сколько стратегий вы протестировали? Большинство отвечает, что одну и просто ее дорабатывали. Реальная цифра лежит между тридцатью и сотней.

Каждый сдвинутый параметр был отдельной гипотезой. Каждый добавленный или убранный фильтр был отдельной гипотезой. Каждая замена актива тоже. То, что вы делали это руками и три недели подряд, а не в цикле for, для математики ничего не меняет. Вы запустили поиск, и поиск нашел самый красивый результат, потому что для этого поиск и нужен. А лучший из ста подбросов монеты выглядит великолепно, даже когда все монеты честные.

Математика тут несложная. Если протестировать N стратегий с нулевым истинным преимуществом, лучший внутривыборочный Шарп примерно равен стандартной ошибке оценки Шарпа, умноженной на матожидание максимума из N стандартных нормальных величин. Меньше лет данных, больше стандартная ошибка. Больше попыток, больше максимум. Оба множителя гонят фальшивый Шарп вверх.

На двух годах данных 7 попыток дают ожидаемый лучший Шарп 0.98, 100 попыток дают 1.79, а 1000 попыток дают 2.30. Все это от стратегий, которые по построению не стоят ничего. Шарп 2.3 умеет генерировать машина без всякого преимущества, ей достаточно разрешить попробовать нужное число раз.

Порог, которым все пользуются, неверный

На любом курсе статистики учат одному правилу: t-статистика выше 2.0 означает значимый результат, ниже 2.0 не означает.

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

Корректный порог растет с каждым проведенным тестом. Это классическая проблема множественных сравнений, и лекарству от нее сто лет. Одна стратегия, планка 1.96. Десять стратегий, планка 2.81. Сто, планка 3.48. Тысяча, планка 4.06.

Теперь приложите это к академическим финансам. В 2016 году Кэмпбелл Харви, Ян Лю и Хэцин Чжу прошли по литературе и пересчитали факторы, опубликованные как предикторы доходности акций. Их оказалось 316. Стоимость, моментум, размер, качество, низкая волатильность и еще три сотни, каждый со своей t-статистикой выше традиционных 2.0 и каждый подан как настоящая торгуемая аномалия.

Вывод авторов звучит мягко и убийственно одновременно. Если учесть, что профессия десятилетиями коллективно перебирала один и тот же массив данных, честная планка для нового фактора составляет около 3.0. Большая часть зоопарка факторов ее не проходит.

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

Проклятие победителя

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

Что измеряет лучший внутривыборочный Шарп? Он измеряет истинное преимущество плюс удачу. Две стратегии могут показать одинаковую цифру: одна со скромным реальным преимуществом и средней удачей, вторая без преимущества и с феерической удачей. Какая из них выиграет ваш перебор? Та, которой повезло сильнее.

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

Автор исходного материала прогнал симуляцию: тысяча исследовательских кампаний, в каждой 200 вариаций стратегии с истинным Шарпом ровно ноль. Берем лучшую по внутренней выборке и запускаем ее вперед на данных, которых она не видела. Средний внутривыборочный Шарп победителей 1.93. Средний Шарп тех же победителей вне выборки минус 0.01. Половина из них ушла в минус.

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

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

Что с этим делают на институциональных десках

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

Сначала они считают попытки. До старта перебора фиксируется, сколько конфигураций будет протестировано, и это число идет в расчет значимости как параметр, а не как сноска внизу отчета.

Потом они дефлируют Шарп. Для этого есть формальная статистика, Deflated Sharpe Ratio, опубликованная Bailey и Lopez de Prado в 2014 году. На вход идут заявленный Шарп, число попыток, длина выборки, асимметрия и эксцесс доходностей, на выходе вероятность того, что преимущество реальное, а не осадок от перебора. Большинство внутренних стратегий умирает на этом шаге, так и задумано.

Затем они разводят разработчика и проверяющего. Тот, кто строил модель, ее не валидирует. Другой человек, другой код, другой срез данных. Так работают Jane Street и Citadel. Причина не в бюрократии: автор модели хуже всех способен увидеть, что перед ним шум.

Отдельно они держат данные, к которым никто не прикасается. Не train test split, в который заглядывают пятьдесят раз, потому что после пятидесятого взгляда холдаут превращается в обычную обучающую выборку. Запечатанный период, вскрытый один раз ради одного решения.

И наконец, они напрямую измеряют вероятность переобучения бэктеста. Комбинаторно симметричная кросс-валидация Lopez de Prado считает, как часто стратегия, победившая на одном срезе истории, оказывалась хуже медианы на остальных. Если эта доля высокая, стратегия является артефактом перебора, каким бы красивым ни был заголовочный Шарп.

Ничто из этого не создает стратегий, все это их уничтожает. В том и смысл: на выходе институционального исследовательского процесса в основном похороны.

Самое неприятное во всей истории

Математика здесь не экзотическая. Поправка на множественные сравнения датируется 1936 годом, это Бонферрони. Теория экстремальных значений еще старше. Deflated Sharpe Ratio бесплатно лежит на SSRN. Работа Харви, Лю и Чжу с тремястами факторами бесплатна. Статья в Notices of the AMS с результатом про семь бэктестов тоже бесплатна.

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

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

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

Шарп 1.2, найденный с первой честной попытки, на заранее заданной гипотезе и десяти годах данных, стоит дороже Шарпа 2.5, найденного на четырехсотой попытке. Первый является свидетельством, второй зеркалом. Рынок отлично умеет брать плату за обучение с тех, кто их путает.

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

Источник: https://x.com/ch3nweiii/status/2077392072848400562

Поделиться:

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *