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

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

Мой стенд поймал мою же лучшую стратегию на вранье. Показываю, по какой цифре это вскрылось
  • Источник smart-lab Сегодня 11:22
  • 54
  • Нейтральная окраска записи

Под прошлым постом Ветерок посоветовал: купи Сбер и успокойся. Я ответил, что в 1998 году Сбер был одним из многих кандидатов, и знать, который из них доживёт до 2026-го, тогда было неоткуда. Ответил и понял, что должен рассказать историю, которую полгода откладываю. Потому что ровно на этой ошибке однажды попался я сам, и стоила она мне лучшего результата проекта.

В самом первом посте я обмолвился одной строчкой: платформа поймала на приукрашивании собственную лучшую стратегию, Sharpe сдулся с 0.77 до 0.49. Строчку заметили, подробностей я не дал. Даю сейчас.

Как выглядела радость

Стратегия HMR (её устройство разбирал во второй части) к тому моменту прошла три итерации. Первая версия считала ATR по ценам закрытия и получала слишком плотные стопы, Sharpe болтался в районе 0.45-0.57. Потом я подключил реальные внутридневные максимумы и минимумы, добавил трейлинг и портфельный стоп по просадке.

Прогон на 2015-2024 дал Sharpe 0.77.

Для того, что я строил, это было отлично. Не грааль, но уровень, на котором система уже имеет смысл. Я сидел и смотрел на эквити минут двадцать.

Дальше по регламенту полагается out-of-sample. Тот же код, те же параметры, но кусок истории, который стратегия ни разу не видела: 2005-2014. Кризис 2008 внутри, то есть проверка честная и злая.

Sharpe 0.19.

Первая версия случившегося была неправильной

Разрыв 0.77 против 0.19 объясняется скучно и стандартно: переподгонка. Я перебрал достаточно параметров на десятилетке, нашёл комбинацию, которая красиво легла на этот конкретный кусок, а на другом куске она рассыпалась. Классика, про которую я сам писал в первом посте.

Была и вторая версия, поприятнее: рынок 2005-2014 просто другой. Другая структура, другие лидеры, до эры FAANG. Стратегия под старый рынок не заточена, ничего страшного.

Обе версии оказались мимо. Правда нашлась в цифре, на которую я сначала вообще не смотрел.

Цифра, которая не может быть такой

Я гонял отчёты по обоим периодам и зацепился глазом за строку с количеством сделок.

прогон 2015-2024: 894 сделкипрогон 1996-2024, то есть двадцать восемь лет: 133 сделки

Перечитайте два раза. Длинное окно включает в себя короткое. За двадцать восемь лет система совершила в семь раз меньше сделок, чем за десять лет внутри этих же двадцати восьми.

Так не бывает. Это как если бы поездка Москва-Владивосток заняла меньше времени, чем участок Москва-Казань той же поездки. Здесь можно не разбираться в трейдинге вообще: цифра противоречит сама себе, и дальше нужно искать не объяснение, а поломку.

Мне повезло, что стенд печатает число сделок рядом с Sharpe. Если бы в отчёте был только Sharpe, я бы честно записал «стратегия плохо работает на старых данных» и пошёл дальше. С этой записью можно было прожить ещё полгода.

Что было сломано

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

Вот тут и была дырка. Относительная сила секторов считалась по ETF, с ними всё в порядке. А список бумаг внутри сектора приезжал из справочника, собранного один раз. Сегодняшнего.

Что это значит на практике. Стенд заходит в 1998 год, определяет режим, выбирает два сектора и просит список компаний. Получает тех, кто числится в этих секторах в 2026 году. Половины из них в 1998-м ещё не существует, часть торгуется под другими тикерами, а те, кто действительно был в секторе тогда и умер потом, в списке отсутствуют полностью.

Вселенная в старых годах оказывалась почти пустой. Покупать было некого, отсюда и жалкие 133 сделки за двадцать восемь лет. А там, где сделки всё-таки случались, стратегия торговала исключительно теми, кто гарантированно дожил до наших дней. Enron, Lehman и ещё пара сотен покойников в мою выборку не попадали никогда.

Красивый Sharpe 0.77 на десятилетке 2015-2024 держался на том же самом. Просто на свежем куске истории смещение почти не заметно: с 2015 года состав секторов поменялся мало, вселенная выглядела полной, и подвох не бросался в глаза.

Фикс и его цена

Лечится это одним способом: состав вселенной надо хранить с привязкой к дате. На каждый торговый день своя выборка, вместе с теми, кто позже обанкротился и был из сектора исключён. Тот самый point-in-time, ради которого я в своё время затащил к себе фундаменталку из SEC EDGAR с датами публикации.

После перевода секторных составов на point-in-time картина стала такой:

  было стало Sharpe 2015-2024 0.77 0.49 Сделок на 28 годах 133 кратно больше

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

Мой лучший результат просел на треть за один вечер. Никакой драмы при этом не произошло: 0.77 существовал только внутри моего компьютера, а 0.49 хотя бы описывает что-то похожее на реальность. Потом я добрал обратно до 0.69 за счёт нормальных фильтров входа, но это уже была честная работа с честной базой.

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

Как проверить у себя за пятнадцать минут

Если вы гоняете бэктесты на американских акциях или на нашем рынке, три проверки, которые ловят ту же болезнь:

Прогоните одну и ту же стратегию на длинном окне и на его свежем куске, сравните число сделок. Не доходность, не Sharpe, а именно количество сделок и сколько дней портфель стоял пустым. Если на длинном окне сделок мало, ваша вселенная в старых годах дырявая.Посмотрите, откуда берётся список бумаг. Если это один файл без даты, вы торгуете сегодняшним списком в прошлом, каким бы точным ни был источник котировок.Найдите в своей базе хоть одну компанию, которая обанкротилась или была поглощена. Нет ни одной? Значит, в вашей истории никто никогда не умирал, и такой рынок вы, к сожалению, не тестировали.

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

Чем это кончилось

После всех фиксов стратегия честно показывает Sharpe около 0.7 на десятилетке 2015-2024 и выше единицы на кризисном отрезке 2007-2010. Формальный статистический гейт она всё равно не проходит, я про это писал в первом посте: порог у меня выставлен жёстче, чем нужно для практики, и HMR в него не влезает.

Заманчиво было бы закончить на том, как честность победила. Не победила. У меня было красивое число, стало некрасивое, и работы прибавилось. Единственная выгода в том, что теперь я знаю, какое из двух чисел неправда.

И вопрос к тем, кто считает сам. Когда вы последний раз проверяли, что ваш бэктест торгует не только выжившими? Не «в курсе ли вы про ошибку выжившего», про неё все в курсе, а именно проверяли руками, на своих данных.

Я был в курсе. Полгода.

Не инвестиционная рекомендация. Всё описанное — бумажная торговля и исследование, деньгами по этой стратегии я не рискую. Предыдущие части: про платформу и 231 стратегию, устройство HMR, режимы рынка, сколько стоит защита.

Вам также может понравиться

Экономический дайджест 16.08.2026

Экономический дайджест 16.08.2026

  • Источник smart-lab
  • Сегодня 19:21
  • 24
MIX (1д). Имбаланс на 200000

MIX (1д). Имбаланс на 200000

  • Источник smart-lab
  • Сегодня 19:24
  • 24
Odyssey UK100 или чёрный список белого трейдера

Odyssey UK100 или чёрный список белого трейдера

  • Источник smart-lab
  • Сегодня 18:00
  • 92

НОВОСТНАЯ РАССЫЛКА

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

отписаться