Це запитання мені найчастіше ставлять люди, які щойно завершили роботу над своєю першою стратегією, — хоч і формулюють його по-різному: скільки угод потрібно, щоб результат був справжнім? Зазвичай до нього додають число. «У мене 1,200 угод, цього ж достатньо, правда?» І чесна відповідь дратує всіх, бо річ зовсім не в кількості угод.
Ось усе в одному рядку, а далі я поясню, чому від нього так некомфортно.
Яка стандартна похибка коефіцієнта Шарпа?
Для коефіцієнта Шарпа, обчисленого за n періодичними дохідностями, якщо вважати їх незалежними й приблизно нормально розподіленими, похибка вибірки дорівнює:
SE(s) ≈ √((1 + s²/2) / n)
де s — коефіцієнт Шарпа, виміряний із тією самою частотою. Якщо річними зробити обидві частини, отримуємо простий результат. За k спостережень на рік і T років річний коефіцієнт Шарпа S має таку похибку:
SE(S) ≈ √((1 + S²/(2k)) / T)
Подивіться на 2k у знаменнику. Для денних дохідностей k = 252, тож навіть коефіцієнт Шарпа 2 додає до чисельника лише 4/504 ≈ 0.008. Увесь вираз зводиться до 1. Стандартна похибка річного коефіцієнта Шарпа приблизно дорівнює 1/√T, де T — календарна кількість років у ваших даних. Вона майже не залежить від самого коефіцієнта Шарпа, не залежить від частоти вибірки й зовсім не залежить від кількості ваших угод.
Отже:
| Років даних | SE(Sharpe) | 95% ДІ, якщо виміряний коефіцієнт дорівнює 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 |
Бектест із коефіцієнтом Шарпа 1.5 на дворічній історії не дає змоги статистично відрізнити стратегію від підкидання монети на рівні 95%. Для більшості досліджень крипторинку це звичайна ситуація, адже чисті дані з урахуванням упередження виживших і точних комісій у більшості починаються приблизно з 2022 року, а половини цікавих символів до 2023 року взагалі не існувало.
Але ж у мене 40,000 угод. Хіба це не вирішує проблему?
Ні, і саме це хибне уявлення я найбільше хочу розвіяти.
Кількість угод і довжина вибірки — різні величини, і у формулі є лише одна з них. Якщо ваша стратегія здійснила 40,000 угод за шість місяців, то T = 0.5, а SE ≈ 1.41. Для виміряного коефіцієнта Шарпа 2.0 ваш 95% інтервал становить від −0.8 до 4.8. Сорок тисяч угод, а чесний висновок такий: «стратегія може бути прибутковою, а може бути збитковою».
Причина в тому, що ці 40,000 угод — не 40,000 незалежних ставок на 40,000 різних станів ринку. Це 40,000 вибірок із приблизно 180 днів ринкової поведінки, причому дні корелюють між собою, як і режими всередині себе. Високочастотна стратегія повернення до середнього, яка заробляє щодня протягом чотирьох місяців, насправді зробила одну ставку — що на цьому режимі ліквідності зберігатиметься реверсія на короткому горизонті, — і спостерігала її результат лише кілька разів, які можна вважати незалежними.
Я використовую таке просте правило: рахуйте ринкові режими, а не виконані угоди. Скільки справді різних ринкових умов пережила ця стратегія? Стратегія фінансування, що працювала протягом одного тривалого періоду додатного базису, має n = 1, скільки б погодинних ребалансувань вона не зафіксувала.
Швидка перевірка: застосуйте блочний бутстреп до денного P&L із довжиною блока 20 днів і подивіться на розкид перерахованих коефіцієнтів Шарпа. Якщо 5-й перцентиль нижчий за нуль, кількість угод не має значення. Для цього потрібно приблизно дев'ять рядків коду numpy, і жодна інша окрема перевірка не допомогла мені відмовитися від більшої кількості стратегій.
Чи справджується формула для реальних стратегій?
Не зовсім, і похибка йде в напрямку, який вам не сподобається. Результат 1/√T передбачає IID-нормальні дохідності. У реальних стратегій дохідності автокорельовані й асиметричні, причому асиметрія зазвичай від'ємна в усього, що схоже на стратегії перенесення, короткої волатильності чи повернення до середнього. Поправка Мертенса враховує ці моменти:
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
де γ₃ — асиметрія, а γ₄ — ексцес. За від'ємної асиметрії доданок −γ₃·s стає додатним, а це розширює інтервал. Надлишковий ексцес розширює його ще більше. Для типового P&L стратегії перенесення на крипторинку з асиметрією близько −1.2 і ексцесом близько 9 я бачив, як скоригована стандартна похибка виявлялася на 30–40% більшою за наївну оцінку. У статті Ло 2002 року розглянуто автокореляцію, і знак ефекту той самий: додатна серійна кореляція дохідностей завищує наївний коефіцієнт Шарпа й занижує видиму похибку — неприємне поєднання.
Тож вважайте 1/√T нижньою межею невизначеності. Це найкращий можливий випадок.
Наскільки високим має бути коефіцієнт Шарпа, якщо я перевірив 500 варіантів?
Тепер перейдемо до теми, важливої для всіх, хто запускає автоматизований конвеєр досліджень. У Stratmill ми стикаємося з цим щодня: агент генерації створює не одного кандидата, а сотні.
Очікуваний максимум M вибірок зі стандартного нормального розподілу приблизно дорівнює √(2 ln M). Помножте це на стандартну похибку й отримаєте коефіцієнт Шарпа, який покаже найвдаліша з M стратегій, що насправді не мають жодної цінності.
| Перевірено стратегій | √(2 ln M) | Коефіцієнт Шарпа найкращої випадкової стратегії за 5 років (SE 0.45) | Найкраща випадкова стратегія за 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 кандидатів на дворічних даних і переможець показує коефіцієнт Шарпа 2.4, ви не знайшли нічого. Це нижче рівня шуму. Дефльований коефіцієнт Шарпа Бейлі та Лопеса де Прадо формалізує цей підхід, використовуючи дисперсію ваших коефіцієнтів Шарпа замість грубої оцінки √(2 ln M). Його варто належно реалізувати, але й грубої оцінки достатньо, щоб уже сьогодні змінити підхід.
Є дві причини, чому ситуація гірша, ніж показує таблиця. По-перше, M — це не кількість збережених вами стратегій, а кількість тих, які ви оцінили, зокрема кожну зміну параметра, кожне «а спробую-но період 30 для ретроспективного аналізу», кожен повторний запуск після виправлення помилки. Ніхто не рахує чесно. По-друге, ваші кандидати — не незалежні вибірки, тож √(2 ln M) завищує ефективну кількість перевірок. Водночас кореляція між випробуваннями означає, що одного вдалого режиму може вистачити, аби разом підняти цілий кластер стратегій.
Найнебезпечніше число в кількісних дослідженнях — те, яке ніхто не записав: скільки разів ви перевіряли свої ідеї.
То що ж я роблю на практиці?
Ось п'ять речей у тому порядку, у якому я б їх виконав.
- Записуйте кожну оцінку. Лічильник має збільшуватися після кожного запуску бектесту, зберігати значення й ніколи не скидатися. Якщо ви не знаєте M, то не знаєте й свого порога. Це найцінніша година роботи інженера з усього списку.
- Завжди вказуйте інтервал для коефіцієнта Шарпа. Не виводьте голе число. У звітах наших бектестів є
1.72 ± 0.51 (2.9y, skew-adjusted), а знак ± обов'язковий. Це змінює те, як уся команда обговорює результати. - Визначте поріг за M і T, перш ніж переглядати результати. Візьміть число з таблиці вище й запишіть його. Пороги, визначені постфактум, — це спосіб переконати себе, що підгонка кривої працює.
- Коли бракує даних, віддавайте перевагу ширшому охопленню, а не вищій частоті. Ви не можете додати календарного часу, але можете застосувати той самий сигнал до 40 некорельованих символів. Це справді збільшує ефективний n, чого не дає вища частота угод. Але стежте за кореляціями: 40 криптовалютних безстрокових контрактів у годину уникання ризику — це один інструмент.
- Потім протестуйте її на паперовому рахунку. Час поза вибіркою накопичується по одному дню за раз, і скоротити його неможливо. Саме тому цю вибірку й не можна перенавчити.
Ніщо з цього не робить короткі вибірки придатними для використання. Це допомагає чесно оцінити, які висновки можна зробити на основі короткої вибірки, — і вони набагато скромніші, ніж натякає більшість звітів бектестів. Коефіцієнт Шарпа 1.5 за два роки — це гіпотеза, яку варто перевірити на паперовому рахунку. Це ще не результат.
← Усі статті
