В той или иной форме мне чаще всего задают этот вопрос те, кто только что создал свою первую стратегию: сколько сделок нужно, чтобы результату можно было верить? Обычно к вопросу прилагается какое-нибудь число. «У меня 1,200 сделок — этого ведь достаточно?» Честный ответ всех раздражает, потому что дело вовсе не в количестве сделок.
Вот всё объяснение в одной строке. Остальную часть поста я посвящу тому, почему она так неприятна.
Какова стандартная ошибка коэффициента Sharpe?
Для Sharpe, рассчитанного по n периодическим доходностям, при условии, что они независимы и примерно нормально распределены, ошибка выборки равна:
SE(s) ≈ √((1 + s²/2) / n)
где s — Sharpe, рассчитанный с той же периодичностью. Если привести обе части к годовым значениям, получается простая формула. При k наблюдениях в год и T годах годовой Sharpe S имеет:
SE(S) ≈ √((1 + S²/(2k)) / T)
Посмотрите на 2k в знаменателе. Для дневных доходностей k = 252, поэтому даже Sharpe, равный 2, добавляет в числитель 4/504 ≈ 0.008. Всё выражение сводится к 1. Стандартная ошибка годового Sharpe приблизительно равна 1/√T, где T — количество календарных лет данных. Она почти не зависит от самого Sharpe, не зависит от периодичности выборки и совершенно не зависит от количества совершённых сделок.
Итак:
| Лет данных | SE(Sharpe) | 95% ДИ, если измеренный Sharpe равен 1.5 |
|---|---|---|
| 1 | 1.00 | от −0.46 до 3.46 |
| 2 | 0.71 | от 0.11 до 2.89 |
| 3 | 0.58 | от 0.37 до 2.63 |
| 5 | 0.45 | от 0.62 до 2.38 |
| 10 | 0.32 | от 0.88 до 2.12 |
Бэктест с Sharpe 1.5 на двух годах истории статистически неотличим от подбрасывания монеты на уровне значимости 95%. Для большинства исследований крипторынка это обычная ситуация: чистые данные с поправкой на систематическую ошибку выжившего и точным учётом комиссий у большинства начинаются где-то в 2022 году, а половины интересных тикеров до 2023 года вообще не существовало.
Но у меня 40,000 сделок. Разве это не решает проблему?
Нет. И именно это заблуждение мне больше всего хочется развеять.
Количество сделок и длина выборки — разные величины, и в формуле есть только одна из них. Если стратегия срабатывает 40,000 раз за шесть месяцев, у вас T = 0.5 и SE ≈ 1.41. 95% доверительный интервал для измеренного Sharpe 2.0 простирается от −0.8 до 4.8. Сорок тысяч сделок, а честный вывод такой: «может быть, стратегия хорошая, а может, она убыточная».
Дело в том, что эти 40,000 сделок — не 40,000 независимых ставок на 40,000 разных состояний рынка. Это 40,000 наблюдений за примерно 180 днями рыночного поведения; дни коррелируют друг с другом, как и режимы внутри каждого периода. Высокочастотная стратегия возврата к среднему, которая зарабатывает каждый день в течение четырёх месяцев, на деле сделала одну ставку — что краткосрочное возвращение к среднему сохранится при данном режиме ликвидности — и, возможно, лишь несколько раз независимо увидела её исход.
Я мысленно заменяю один вопрос другим: считайте рыночные режимы, а не исполнения. Сколько действительно разных рыночных условий пережила стратегия? Стратегия получения доходности на фандинге, работавшая в течение одного длительного периода положительного базиса, видела n = 1 — независимо от числа записанных почасовых ребалансировок.
Быстрая проверка: примените block bootstrap к дневному P&L с длиной блока 20 дней и посмотрите на разброс пересчитанных значений Sharpe. Если 5-й процентиль ниже нуля, количество сделок не имеет значения. Для этого нужно около девяти строк на numpy. Эта проверка отговорила меня от большего числа стратегий, чем любая другая.
Применима ли эта формула к реальным стратегиям?
Не совсем, и ошибка получается в ту сторону, которая вам не понравится. Формула 1/√T предполагает, что доходности независимы, одинаково распределены и нормальны. Доходности реальных стратегий автокоррелированы и имеют асимметричное распределение, причём у стратегий типа carry, short vol или возврата к среднему асимметрия обычно отрицательная. Поправка Mertens учитывает эти моменты:
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
где γ₃ — асимметрия, а γ₄ — эксцесс. При отрицательной асимметрии член −γ₃·s положителен, что расширяет интервал. Эксцесс расширяет его ещё сильнее. Для типичного криптовалютного P&L в carry-стратегии с асимметрией около −1.2 и эксцессом около 9 я видел, как скорректированная стандартная ошибка оказывалась на 30–40% больше наивной. В статье Lo 2002 года рассматривается автокорреляция, и эффект направлен туда же: положительная временная корреляция доходностей завышает наивный Sharpe и занижает видимую ошибку. Неприятное сочетание.
Поэтому считайте 1/√T нижней границей неопределённости. Это наилучший сценарий.
Насколько высоким должен быть Sharpe, если я проверил 500 вариантов?
Теперь перейдём к тому, что важно для всех, кто запускает автоматизированный исследовательский конвейер. Именно так у нас в Stratmill происходит каждый день: агент генерации создаёт не одного кандидата, а сотни.
Ожидаемый максимум M значений стандартного нормального распределения приблизительно равен √(2 ln M). Умножьте его на стандартную ошибку и получите Sharpe, который покажет самая удачливая из M заведомо бесполезных стратегий.
| Проверено стратегий | √(2 ln M) | Sharpe лучшей шумовой стратегии за 5 лет (SE 0.45) | Sharpe лучшей шумовой стратегии за 2 года (SE 0.71) |
|---|---|---|---|
| 10 | 2.15 | 0.96 | 1.52 |
| 100 | 3.03 | 1.36 | 2.16 |
| 500 | 3.53 | 1.58 | 2.50 |
| 5,000 | 4.13 | 1.85 | 2.93 |
Посмотрите на предпоследнюю строку. Если вы сгенерировали 500 кандидатов на двух годах данных, а у победителя Sharpe 2.4, значит, вы не нашли ровным счётом ничего. Это ниже уровня шума. Deflated Sharpe от Bailey и López de Prado формализует эту идею, используя дисперсию проверенных значений Sharpe вместо грубой оценки √(2 ln M). Метод стоит реализовать правильно, но даже грубого варианта достаточно, чтобы уже сегодня изменить подход.
Есть два фактора, из-за которых таблица недооценивает проблему. Во-первых, M — это не число сохранённых вами стратегий, а число тех, что вы оценили, включая каждую правку параметров, каждое «а попробую-ка lookback на 30 периодов», каждый повторный запуск после исправления ошибки. Никто не ведёт честный подсчёт. Во-вторых, ваши кандидаты — не независимые выборки, поэтому √(2 ln M) завышает эффективный размер пула. При этом коррелированные проверки означают, что один удачный режим может одновременно поднять целый кластер результатов.
Самое опасное число в количественных исследованиях — то, которое никто не записал: сколько раз вы заглядывали в данные.
Так что же мне делать на практике?
Пять вещей — именно в таком порядке.
- Записывайте каждую проверку. Счётчик, который увеличивается при каждом запуске бэктеста, сохраняется между запусками и никогда не сбрасывается. Если вы не знаете M, то не можете определить порог. Это самый ценный час инженерной работы во всём списке.
- Всегда указывайте интервал для Sharpe. Не выводите голое число. В наших отчётах о бэктестах показывается
1.72 ± 0.51 (2.9y, skew-adjusted), и ± — обязательная часть результата. Это меняет то, как вся команда обсуждает результаты. - Определите порог по M и T до того, как посмотрите на результат. Возьмите число из таблицы выше и запишите его. Порог, выбранный задним числом, помогает убедить себя в том, что подгонка под исторические данные — это успех.
- Если выборка мала, увеличивайте ширину, а не частоту. Добавить календарное время нельзя, но можно запустить тот же сигнал на 40 некоррелированных тикерах. Это действительно увеличит эффективное n, в отличие от повышения частоты сделок. Но следите за корреляциями: 40 бессрочных криптоконтрактов в час ухода от риска — это один инструмент.
- Затем торгуйте на бумаге. Время вне выборки накапливается по одному дню за каждый день, и обойти это невозможно. Именно поэтому такую выборку нельзя переобучить.
Всё это не делает короткие выборки пригодными для оценки. Это помогает честно понимать, какие выводы можно сделать по короткой выборке, — а они гораздо слабее, чем обычно подразумевают отчёты о бэктестах. Sharpe 1.5 за два года — гипотеза, которую стоит проверить в торговле на бумаге. Это ещё не установленный факт.
← Все статьи