Я построил платформу, которая забраковала все 231 мои торговые стратегии. Это лучший результат проекта

Полгода я строил себе персональную платформу для проверки торговых идей: 30 лет данных по американским акциям, генератор стратегий, статистический гейт из семи тестов. Хотел найти свой грааль, как все мы.
Прогнал через неё 231 стратегию. Среди них были красавицы с Sharpe 1.49 на истории — такие в телеграм-каналах продают за деньги.
Строгую проверку не прошла ни одна.
Сначала я расстроился. Потом понял, что именно ради этого всё и строил. Сейчас расскажу, как выглядит проверка, после которой от 231 стратегии не остаётся ничего, покажу, кто всё-таки выжил, — и почему две мои любимые гипотезы умерли особенно красиво.
Почему ваш бэктест вам врётНе «может врать» — врёт. Четыре стандартные дырки, которые есть почти в каждом бэктесте «на коленке»:
1. Переподгонка. Переберите достаточно параметров — какая-нибудь комбинация нарисует красивую эквити. Случайно. Монетка, подброшенная 120 раз, тоже иногда выдаёт серию из десяти орлов. 2. Ошибка выжившего. «Тестирую на акциях S&P 500» — а состав индекса чей? Сегодняшний. В нём нет Enron, Lehman и ещё пары сотен покойников. Ваша стратегия торгует только теми, кто гарантированно доживёт до 2026 года. Неплохое преимущество, да? 3. Подглядывание в отчётность. Квартальная прибыль «известна» бэктесту в последний день квартала. В реальности — через несколько недель, после публикации отчёта. Фундаментальные стратегии на этом ломаются пополам. 4. Ценовая доходность вместо полной. Сравнили эквити с графиком S&P — а дивиденды индекса кто считать будет? Это 1,5–2 % годовых форы вашей стратегии на ровном месте.Сила воли от этого не спасает. Спасает только схема данных, в которой ошибиться невозможно.
Скучный фундамент, без которого всё остальное — гаданиеПрежде чем проверить первую стратегию, пришлось построить:
16,9 млн дневных котировок, 5 264 тикера NYSE/NASDAQ, с 1996 года — плюс 15,4 млн сырых, нескорректированных цен для честного total return;
исторические составы S&P 500 на каждую дату — какие бумаги входили в индекс именно в тот день прошлого;
1 083 делистинга из SEC Form 25 — чтобы покойники оставались в выборке;
2,8 млн фундаментальных записей из SEC EDGAR — привязанных к дате публикации отчёта, а не к отчётному периоду;
автотест, который сверяет «сырая цена + дивиденды = полная доходность» с точностью 0,0004 % годовых.
Да, это самая скучная часть проекта. И самая важная: всё интересное ниже существует только потому, что данным можно верить.
Гейт: семь кругов ада для кандидатаСтратегия считается рабочей, только если на walk-forward разбиении (скользящие окна «обучение → тест» по всей 30-летней истории, 14–18 фолдов) проходит всё это:
Sharpe, CAGR и просадка лучше каждого из трёх бенчмарков — S&P 500, NASDAQ, Dow — одновременно;
превосходство по Sharpe статистически значимо (тест Джобсона–Корки, p < 0.05);
bootstrap-интервалы (блочный, 5 000 репликаций) не задевают ноль;
Deflated Sharpe Ratio выше порога — о нём ниже, это гвоздь программы;
плюс минимум в 12 из 15 ячеек «режим волатильности × период»;
подтверждение на данных, которые модель вообще не видела;
минимум 60 независимых наблюдений вне обучающей выборки.
Про Deflated Sharpe — самое важное, что я вынес из всей затеи. Интуиция такая: чем больше вариантов вы перепробовали, тем выше планка для лучшего из них. Нашли «грааль» с пятой попытки — одно дело. Со сто двадцатой — вы почти наверняка нашли красивый шум. У меня счётчик попыток честно рос вместе с гридом: 30 → 48 → 96 → 120, и каждая новая пачка экспериментов ужесточала планку самой себе.
Много ли вы видели продавцов сигналов, которые говорят, сколько вариантов перебрали до того, как нашли «рабочий»?
Драма в цифрахПо «простому» walk-forward — точечные оценки против одного бенчмарка, как в 90 % публичных бэктестов — у меня было 25 прошедших стратегий. Четверть сотни граалей! Я уже мысленно выбирал яхту.
По строгому гейту из тех же кандидатов прошло: ноль.
Самый обидный случай: value-стратегия по P/E, in-sample Sharpe 1.49. Ноль пройденных фолдов. Математика жестока: при моём количестве наблюдений, чтобы пройти Deflated Sharpe, кандидату нужен честный Sharpe примерно 1.7+. Всё, что ниже, — неотличимо от удачи.
Bottleneck shift: находка, ради которой стоило страдатьКогда у тебя тысячи fold-отчётов с машинно-читаемыми причинами отказов, сами отказы становятся данными. Частотный анализ показал штуку, которую я нигде не встречал в явном виде — узкое место мигрирует в зависимости от схемы взвешивания портфеля:
равновзвешенные портфели валятся на статистике (60,7 % отказов — DSR и компания): превосходство над индексом *есть*, но доказать, что оно не случайно, — нельзя;
взвешенные по капитализации статистически чисты (блок статкоррекции падает до 16,4 %), но валятся на самом превосходстве (74,5 %): взвесил по капе — получил индекс. Обгонять нечем.
Бесплатного обеда через схему взвешивания не существует. Проверено на 231 кандидате, извините.
Как красиво умерла моя лучшая гипотезаВ какой-то момент родилась спасительная идея: «Сравнивать равновзвешенный портфель с cap-weighted индексом нечестно! Возьму равновзвешенный бенчмарк — RSP (S&P 500 Equal Weight ETF) — и всё сойдётся».
Залил 5 788 строк истории RSP. Прогнал counterfactual. Против RSP стало… хуже, чем против обычного S&P 500. Равновзвешенный индекс сам собирает премию диверсификации и ребалансировки — обыграть его концентрированным факторным портфелем ещё труднее.
Гипотеза прожила один вечер. И это, пожалуй, главный кайф платформы: гипотезы умирают за вечер и с некрологом, а не живут годами в самообмане и просаженных депозитах.
После четырёх таких «векторов атаки» я принял скучный взрослый вывод: разрыв фундаментален. Индекс эпохи мегакэпов — сам по себе momentum-машина с ~30 % веса в семи компаниях, и концентрированные факторные портфели проигрывают ему системно. Остановить эту ветку исследований — тоже результат. Может быть, главный.
Кто выжилЕдинственный класс, показавший устойчивость, — гибридная momentum-reversion стратегия с адаптацией под режим рынка. Режимов пять — от BULL до BEAR_PANIC, размечаются по комбинации трендов S&P, уровня VIX, соотношения SPY/TLT и кредитного стресса HYG/LQD, с защитой от дребезга переключений.
Цифры выжившего: на кризисе 2007–2010 — Sharpe 1.21 при CAGR +16 %. Просадка на 28-летнем окне −20 % против −57 % у S&P 500 в 2008-м. Не грааль. Но честно и стабильно.
А теперь мой любимый эпизод всего проекта. Платформа однажды поймала на приукрашивании собственную лучшую стратегию: в секторных данных нашлась ошибка выжившего, и после исправления её Sharpe сдулся с 0.77 до 0.49. Без драм, без оправданий — просто циферка стала честной. Ради инструмента, который режет правду даже про себя, всё и затевалось.
Три вопроса, которые убивают 90 % продавцов сигналовНа каком составе индекса тестировалось — сегодняшнем или историческом, на каждую дату?
Сколько вариантов было перепробовано до этого «рабочего»? Deflated Sharpe с учётом этого числа считали?
Доходность полная или ценовая?
По моему опыту — до третьего вопроса разговор не доживает.
А если строите своё: закладывайте честность в схему данных, а не в силу воли. Воля сдаётся первой, проверено.
Пара слов про кухню, если интересно: стек — гибрид, от которого у айтишников дёргается глаз: headless-база на 1С (сто четыре объекта, ноль форм, всё через HTTP-API) + Python (vectorbt, pandas) + LLM-агент в Telegram, через которого я запускаю бэктесты и смотрю отчёты. Ордера уходят брокеру только после ручного подтверждения кнопкой в телеге — human-in-the-loop, никакой autopilot не разорит депозит, пока я сплю. Подробный разбор архитектуры с картинками: tezbase.kz/keysy/stratlab-kvant-platforma-na-1c
Дисклеймер: всё выше — статистические наблюдения из личного исследовательского проекта, а не инвестиционные рекомендации. Платформа работает в режиме paper-trading.
Это отрывок статьи. Полную версию читайте на сайте источника по ссылке ниже.
Источник: Smart-Lab