Стратегии
COIN-M BTC Моментум временного ряда с подтверждением открытым интересом, длинные и короткие позиции (BTCUSD_PERP.BINANCE_CM, инверсный бессрочный контракт, дневные бары; торгуйте по знаку скользящей доходности за примерно 50 дней ONLY, когда рост открытого интереса подтверждает появление новых позиций; выход по трейлинг-стопу ATR, размер с поправкой на волатильность, 3 параметров)
Итог: Отменено
BtcCoinMOpenInterestConfirmedTsMomLS
Сводка по итогам
…полная версия в том виде, как она записана в файл.
Гипотеза
Реализация
Дневной моментум временного ряда лонг-шорт на инверсном бессрочном контракте COIN-M с маржированием в BTC (BTCUSD_PERP.BINANCE_CM). Направление определяется знаком доходности за последние ~50 дней; сделка открывается только при росте открытого интереса RISING в течение окна подтверждения (новые позиции открываются вслед за движением), а стратегия остаётся вне рынка, если OI не меняется/падает (движение вызвано закрытием позиций) или нет данных OI. Выход при смене знака моментума либо по скользящему стопу Чанделье ATR; после срабатывания стопа торговля в этом направлении блокируется до смены моментума. Размер позиции масштабируется по волатильности (постоянный риск на сделку через ATR) с жёстким ограничением валового номинала, выраженным в инверсных контрактах WHOLE через contracts_for_notional(). Найдено всего три параметра.
Результаты верификации
Убедитесь, что базовый шаблон действительно обращается к min_bars_required(); если нет, полагайтесь на внутренние проверки готовности (они уже корректны) и удалите переопределение либо переименуйте его, чтобы избежать предупреждения о затенении.
min_bars_required(self) переопределяет/затеняет метод фреймворка, на который базовый шаблон опирается при прогреве. Если базовый класс не вызывает это переопределение, предусмотренный прогрев max(mom_lookback, oi_lookback, atr_period)+2 игнорируется (это безвредно: собственные проверки deque/счётчика стратегии независимо предотвращают преждевременные сигналы, однако переопределение может оказаться мёртвым кодом).
Это дневной вариант TSMOM на одном инструменте с направленной торговлей — семейство, которое неоднократно погибало из-за переобучения/отрицательного матожидания на этапе аналитика (LtcCoinMDailyTsMom, SolIntermediateSkipWindowTsmom, несколько трендовых клонов DOGE/DOT/SOL). Дымовой тест в песочнице лишь умеренно положительный (коэффициент Шарпа 0.35, CI [-0.38, 1.15] пересекает ноль, total_return +20%, но терциль спокойной волатильности -5.1% / коэффициент Шарпа -0.28). Фильтр подтверждения OI и запас по комиссиям на площадке COIN-M — реальные отличия от оставленных аналогов USD-M, поэтому стратегия заслуживает полного бэктеста. Однако перед оптимизацией аналитик должен сопоставить преимущество на сделку (~0.35% в песочнице) с хорошо представленным кладбищем стратегий BTC/на одном инструменте TSMOM. Только рекомендация.
Обзор бэктеста
- Шарп
- 0,35
- Общая доходность
- 20,26%
- Максимальная просадка
- 16,61%
- Всего сделок
- 70
- Доля прибыльных
- 41,4%
- Профит-фактор
- 1,19
Механизм работает и соответствует гипотезе: 70 сделок за 6.1 лет (31 длинных / 39 коротких), все сигналы на вход отправлены (entry_diag 70->70, пропусков нет). Для дневного TSMOM с периодом около 50 дней это разумная частота, фильтруемая растущим OI.
Численно жизнеспособна на надёжной выборке: avg_trade_return_pct 0.19% (pct_notional) выше порога комиссий COIN-M ~0.10%, PF 1.19, положительный коэффициент Шарпа 0.35, максимальная DD 16.6% (ниже заранее зарегистрированного предела), 70 сделок, период 6.1 лет, metrics_reliable=true. Преимущество покрывает издержки, поэтому стратегию можно оптимизировать.
Реальные отличия от оставленных вариантов USD-M: перевод на инверсную площадку COIN-M с более низкими комиссиями для запаса по издержкам и фильтр подтверждения открытым интересом (структурный сигнал, недавно улучшивший варианты с подтверждённым трендом на USD-M OI). Всего 3 настраиваемых параметров, что ограничивает пространство множественных проверок.
Пограничная значимость: коэффициент Шарпа CI [-0.45, 1.16] пересекает ноль, терциль спокойной волатильности отрицательный (-5.1%, коэффициент Шарпа -0.28), а это хорошо представленное семейство дневного TSMOM на одном инструменте, которое неоднократно погибало из-за переобучения/отрицательного матожидания на этапе дефляции 3 (LtcCoinMDailyTsMom, SolIntermediateSkipWindowTsMom, несколько клонов DOGE/DOT/SOL).
end_unrealized_pct 15.2 от общей доходности 20.3 означает, что около 75% заголовочного показателя — это MTM по открытой позиции, а не реализованная прибыль. Это предостережение для этапа продвижения стратегии следует учитывать при ANALYZING и оценивать результат по реализованным метрикам с поправкой на риск.
Преимущество на сделку лишь немного превышает порог комиссий; оптимизатор должен найти действительно устойчивую область, а не подогнать кривую под периоды OI/моментума.
Анализ
Механизм работает и соответствует гипотезе: 78 оптимизированных сделок (38 длинных / 40 коротких) за 6.1 лет; все сигналы на вход отправлены. Для дневного TSMOM с периодом около 50 дней и фильтром растущего OI это разумная частота.
Преимущество на сделку покрывает издержки: оптимизированный avg_trade_return_pct 0.839% >> порога комиссий COIN-M 0.10%; profit_factor 1.67 > 1.3; комиссия составляет лишь 5.3% валовой суммы. Здесь комиссии не являются NOT причиной провала.
Окно отложенной выборки номинально положительное (коэффициент Шарпа 1.35 на 10 сделках).
Провал фильтра HARD: walk-forward-анализ is_overfitted=TRUE с IS 1.95 -> OOS -0.797, а два из трёх окон OOS отрицательны (-0.56, -2.96, +1.14). На данных вне выборки преимущество REVERSES, оно не просто ослабевает.
Провал фильтра HARD: средний коэффициент Шарпа вне выборки -0.797 <= 0 (порог валидности 0.5).
Дефлированный коэффициент Шарпа не прошёл проверку: DSR=0.0003, ожидаемый максимум=1.97 по 225 испытаниям (126 эффективных) — выбранный коэффициент Шарпа неотличим от шума лучшего результата из N вариантов. PSR устойчивых блоков 0.906 < 0.95, is_significant=false; результат не проходит проверку на уровне программы FDR (при q=0.10 Бенджамини—Хохберга сохраняются 4 из 277; candidate_p 0.9997).
Анализ чувствительности: ALL THREE настраиваемых параметров (mom_lookback, oi_lookback, atr_stop_mult) являются критическими: sharpe_grid скачет с -0.67 до +0.83 при небольшом изменении соседних периодов. Устойчивой области параметров для дальнейшей итерации нет.
Анализ режимов: убыток в BOTH спокойной (коэффициент Шарпа -0.07) и стрессовой (коэффициент Шарпа -0.22) третях — вся доходность получена в единственной трети с «нормальной» волатильностью (и за один день +17.6% на 2024-12-20); то есть результат обеспечен одним удачным периодом, а не устойчивым преимуществом.
Оптимизированный max_drawdown 26.1% превышает заранее зарегистрированный предел 22%; Кальмар 0.36 < 0.5.
Заранее зарегистрированный само-прогноз не угадал 3 из 5 (min_trades 78<120, OOS -0.80<0.9, DD 26.1>22).
При q=0.10 проверка Бенджамини—Хохберга оставляет 4 из 277 кандидатов программы. Кандидат, который её не проходит, неотличим от собственного шума программы, какими бы хорошими ни выглядели его отдельные статистики.
История итераций
sandbox_timeout: проверка не пройдена (уровень 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300 с на окне около 20000 баров (2400 дней с BTCUSD_PERP.BINANCE_CM-1-DAY-LAST-EXTERNAL). Обычно это означает, что вычисления на каждом баре растут вместе с историей — например, полный перебор ряда финансирования/дополнительного ряда либо создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно отсортируй массивы временных меток ONCE в __init__ и используй bisect либо кэшируй результаты поиска по временной метке: тогда затраты на бар составят O(log n), а не O(n).
Сводка по итогам
Перенос хорошо изученного механизма моментума на одном инструменте на площадку с более низкими комиссиями и фильтром подтверждения OI даёт запас по комиссиям, но не повышает устойчивость: на данных вне выборки преимущество по-прежнему исчезает.
От стратегии отказались после оптимизации на этапе ANALYZING из-за провала жёстких фильтров: переобучение в walk-forward-анализе (отрицательный средний коэффициент Шарпа OOS), дефлированный коэффициент Шарпа неотличим от шума (не пройден фильтр программы FDR), все три параметра критические — устойчивой области для дальнейших итераций нет.
Дневная стратегия лонг-шорт на основе моментума временного ряда следует за трендом по знаку доходности за последние ~50 дней на инверсном бессрочном контракте COIN-M BTC, только если растущий открытый интерес подтверждает появление новых позиций. Используются скользящий стоп Чанделье ATR и размер позиции с поправкой на волатильность; стратегия переведена на площадку COIN-M с более низкими комиссиями.
Первичный бэктест: 70 сделок за 6.1 лет, средний результат на сделку 0.19% (выше порога комиссий около 0.10%), PF 1.19, коэффициент Шарпа 0.35, максимальная просадка DD по 16.6%. После оптимизации PF вырос до 1.67, а результат на сделку — до 0.84%, но walk-forward-анализ показал обратное: от коэффициента Шарпа IS 1.95 до OOS -0.797, DSR 0.0003 в 225 испытаниях, а DD превысил лимит 22%, достигнув 26.1%.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.