baykovpro

← Quant

Моментум с гистерезисом: меньше шума, меньше оборота

25 августа 2026 · 22 мин · momentum, mean-reversion, режимный фильтр, бэктест

Суть идеи

Landolfi предлагает не новый источник альфы, а новую «сантехнику» вокруг старого моментума. Ключевых элемента два.

Первый — percentile-rank с разделением по знаку. Вместо того чтобы сравнивать текущий return с абсолютным порогом, каждый положительный ход ранжируется только против исторических положительных ходов, каждый отрицательный — только против отрицательных. Это убирает асимметрию распределения: у BTC, например, хвосты вверх и вниз принципиально разные по форме, и единый z-score их смешивает.

Второй — гистерезисная полоса. Сигнал не переключается, пока ранг не пробьёт верхний порог входа И не упадёт ниже нижнего порога выхода. Между ними — «мёртвая зона», в которой позиция остаётся неизменной. Механизм прямой: моментум-сигналы на дневном горизонте часто осциллируют вокруг порога, генерируя оборот без реальной смены режима. Гистерезис — это буфер, который требует «убедительного» разворота, прежде чем закрыть позицию.

Валидация у автора — сетка параметров (lookback, ширина полосы), что честнее одиночного in-sample fit, но всё равно требует OOS-проверки.

Применимость к крипте

BTC/ETH — идеальный полигон: высокая волатильность означает, что наивный моментум-сигнал переключается слишком часто и транзакционные издержки съедают альфу. Гистерезис здесь не косметика, а необходимость.

Наши ряды позволяют собрать всё напрямую: дневные и часовые returns BTC/ETH, rolling-z уже в движке. Percentile-rank по знаку реализуется как две отдельные эмпирические CDF — одна для r > 0, другая для r < 0 — на скользящем окне. Режимный фильтр логично подключить через ATM IV или реализованную волатильность: в периоды экстремальной vol (например, IV > 90-го перцентиля) моментум исторически ломается, и сигнал стоит глушить.

Замена акционного контекста на крипту: нет дивидендов, нет корпоративных событий, зато есть funding rate как прокси перегрева — его можно добавить как дополнительный фильтр входа.

Тестируемо ли

Да, высокая готовность. В нашем Python-движке: (1) считаем sign-split percentile-rank на rolling окне 30/60/90 дней, (2) задаём гистерезисную полосу как пару порогов (entry_pct, exit_pct), (3) прогоняем walk-forward с expanding window, (4) считаем Deflated Sharpe по сетке параметров.

Чего нет напрямую: тиковых данных для точного учёта спреда на разворотах — но на дневном горизонте это не критично. Для часового горизонта нужно добавить реалистичный slippage (0.05–0.1% на сделку).

Сомнения

Сетка параметров — это всё ещё in-sample оптимизация, даже если она шире одной точки. Число независимых моментум-режимов в истории BTC невелико: рынок прошёл через 3–4 структурных цикла, и красивый backtest может просто подогнаться под 2020–2021 bull run. Гистерезисная полоса добавляет два свободных параметра поверх lookback — риск переподгонки растёт нелинейно. Отдельный вопрос: работает ли percentile-rank лучше обычного z-score после учёта транзакционных издержек, или выигрыш исчезает?

Следующий шаг

Прогнать walk-forward на дневных returns BTC (2018–2024): sign-split percentile-rank с lookback=60 дней, гистерезисная полоса (entry=0.75, exit=0.40), режимный фильтр по ATM IV (выключать сигнал при IV > 80-го перцентиля). Сравнить Deflated Sharpe против baseline наивного моментума (raw z-score, тот же lookback). Если разница < 0.1 SR после издержек — идея не окупает сложность.

Результаты тестов

Дописано 25 августа 2026 — прогон «Следующего шага» на нашем движке и данных. Сама статья выше не менялась.

Спека выполнена буквально: дневные BTC и ETH, sign-split percentile-rank, гистерезисная полоса (0.75, 0.40), режимный гейт по ATM IV выше 80-го перцентиля, walk-forward с expanding-окном, Deflated Sharpe против наивного z-score того же lookback, порог решения «разница < 0.1 SR — идея не окупает сложность». Сверх буквы: сетка из 2160 конфигураций на актив, два режима (long/short и long/flat), лестница издержек 0–20 б.п., три эмпирических нуля и синтетический мир, в котором статья верна по построению.

Данные — Binance, дневные закрытия 2017-08-17 … 2026-08-24 (перп со спот-бэкфиллом левее сентября 2019), фандинг перпа по фактическим выплатам (в среднем +10.6% годовых у BTC и +12.5% у ETH — постоянный налог на лонговую ногу), DVOL Deribit с марта 2021. Окна: ART 2018–2024 (буква спеки), POST 2025-01 … 2026-08 (истинный OOS к её же окну) и полная история. Решение по данным на закрытии дня d, сделка днём d+1.

Как ингредиенты вообще сравнивать

Главная методическая проблема спеки: percentile-rank живёт в шкале [0, 1], а z-score — в сигмах, и «порог 0.75» в них значит разное. Пороги сравнимы только после приведения к одной шкале, поэтому все три трансформа отдают score ∈ [−1, +1] как одну и ту же величину — квантиль хода в его собственной истории:

Так «top 25% ходов вверх» у sign-split и «верхние 12.5% всех ходов» у пула — это один и тот же порог 0.75, и разница в результате принадлежит ингредиенту, а не шкале. Горизонт хода K ∈ {1, 5, 20, 60, 90} дней, окно ранга W ∈ {30, 60, 90, 252}. Слово «lookback = 60» в спеке читается двояко (горизонт хода или окно ранга), поэтому оба прочтения прогнаны отдельно и обозначены явно.

Наивному семейству дали свои ручки снижения оборота — порог, длину K, ширину W и EMA-сглаживание скора. Без этого сравнение нечестно: гистерезис снижает оборот, но снижать оборот умеет и голый порог.

Премиса: съедают ли издержки альфу

Статья исходит из того, что «наивный моментум переключается слишком часто и транзакционные издержки съедают альфу», а значит гистерезис «не косметика, а необходимость». На дневной крипте это просто арифметически не так. Годовая волатильность в окне спеки — 69% у BTC и 88% у ETH; оборот 50 единиц в год при 6 б.п. стоит 3.0% годовых, то есть 0.04 SR у BTC и 0.03 у ETH.

издержки, б.п. лучший конфиг БЕЗ полосы, BTC ETH
0 +1.08 +1.08
6 +1.07 +1.05
20 +1.05 +0.97

Лучший наивный конфиг теряет при переходе от нулевых издержек к 20 б.п. 0.03 SR у BTC и 0.11 у ETH; медианный конфиг семейства — 0.13 и 0.10. Съедать тут нечего: поиск и без всякого гистерезиса выбирает конфигурации с оборотом 4–50 в год. Необходимости в полосе на этом горизонте нет — вопрос только в том, добавляет ли она что-нибудь сверх.

Ингредиент 1: разделение ранга по знаку

Прямое парное сравнение — тот же K, то же W, та же полоса или порог, меняется только трансформ (ART, long/short, 6 б.п., ~700 пар):

контраст BTC ΔSR доля Δ>0 ETH ΔSR доля Δ>0
sign_pct − pool_pct +0.030 0.54 +0.083 0.63
sign_pct − gauss_z +0.026 0.54 +0.094 0.62
pool_pct − gauss_z −0.006 0.47 +0.011 0.51

На OOS-окне 2025–2026 знаки переворачиваются: у BTC sign_pct − gauss_z = −0.157 (доля 0.37), у ETH −0.106 (0.38). Разброс между парами (p10…p90 от −0.23 до +0.31 у BTC) в разы больше самих средних.

Ингредиент при этом не бездействует: позиции sign_pct и pool_pct расходятся на 3–35% дней (тем сильнее, чем длиннее K и короче W). И асимметрия, на которую ссылается статья, у BTC действительно есть — но она меняет знак с горизонтом: скошенность логарифмического хода −0.98 на одном дне, −0.44 на пяти, +0.18 на двадцати, +0.62 на девяноста. То есть единый z-score «смешивает» разные хвосты сильнее всего на однодневном горизонте — ровно там, где ход предсказывает завтрашний день с ОБРАТНЫМ знаком (см. ниже), а на горизонтах, где моментум вообще имеет смысл, смешивать почти нечего.

Ингредиент 2: гистерезисная полоса

Механизм реализован и работает как обещано: полоса снижает оборот в среднем на 16–17 единиц в год (проверено на всех 12 парах порогов — исключений нет). Вопрос в том, что она даёт по деньгам. Парная выгода против того же порога входа, тот же скор:

издержки, б.п. BTC, mean Δ(полоса − порог) ETH
0 +0.019 +0.033
2 +0.029 +0.041
6 +0.049 +0.057
10 +0.069 +0.073
20 +0.118 +0.113

Выгода строго монотонна по издержкам и обращается в ноль при нулевых издержках. То есть полоса не улучшает сигнал — она экономит комиссию. Это ровно то, чем она заявлена, но тогда её надо сравнивать не с тем же порогом, а с любым другим способом торговать реже.

При равном обороте преимущество исчезает. Фронтир (максимум нетто-SR внутри каждой из 12 корзин оборота): на BTC лучший конфиг без полосы выше лучшего с полосой в 11 корзинах из 12, медианная разница −0.13 SR; на ETH — ничья, 6 корзин из 12 и медиана −0.02.

Более чувствительная форма того же вопроса — матчинг каждого конфига с полосой на ближайший по обороту наивный (±10%): средняя Δ = −0.58 у BTC и −0.69 у ETH, доля выигрышей 1–3%. (Здесь один конфиг сравнивается с максимумом по корзине, то есть статистика смещена против полосы; насколько именно — показано ниже эмпирическим нулём.) Если наивному семейству запретить EMA и оставить только голый порог — то есть сравнивать ровно так, как предлагает статья, — картина не меняется: матчинг-Δ = −0.49 (BTC) и −0.49 (ETH), доля выигрышей 7% и 14%.

Нуль, который решает вопрос

Парная выгода полосы (+0.05 при 6 б.п.) выглядит маленькой, но положительной. Чтобы понять, значит ли она хоть что-нибудь, тот же контраст прогнан в двух синтетических мирах: iid-перестановка реальных пар (доходность, фандинг) — распределение и снос сохранены точно, погибла только временная структура; и марковский мир, где статья верна по построению — скрытый устойчивый режим средней длительности 30 дней плюс наблюдательный шум, из-за которого наивный порог обязан дребезжать.

BTC, окно ART, 100 перетасованных и 30 режимных миров:

мир 0 б.п. 6 б.п. 20 б.п. матчинг-Δ (6 б.п.)
реальный +0.012 +0.043 +0.112 −0.454
iid-перестановка −0.003 ± 0.052 +0.034 ± 0.052 +0.117 ± 0.053 −0.429 ± 0.112
скрытый режим +0.007 ± 0.054 +0.046 ± 0.054 +0.135 ± 0.054 −0.434 ± 0.111

Три вывода сразу.

Первый: реальные данные неотличимы от перетасованных — pEmp 0.42 при 0 б.п., 0.45 при 6 и 0.56 при 20 (у ETH 0.16 / 0.18 / 0.23). При 20 б.п. реальная выгода полосы даже ниже, чем в перетасованном ряду.

Второй, более неприятный для самой конструкции: в мире, где режим существует и полоса обязана помогать, гросс-выгода тоже +0.007, то есть ноль. Наш парный контраст не различает мир с режимом и мир без него — значит, отрицательный результат по нему нельзя читать как «режима нет»; он читается как «этот контраст меряет только сэкономленную комиссию». MDE парной статистики — 0.13 SR при наблюдаемых значениях 0.01–0.06.

Третий: во всех девяти конфигурациях режимного мира (идеальный SR 0.5/1.0/2.0 × длительность режима 10/30/60 дней) лучший конфиг с полосой оказался ниже лучшего без неё — на 0.01–0.17 SR. Даже там, где дребезг реален, EMA-сглаживание и широкий порог гасят его не хуже полосы.

Буквальный «следующий шаг» — уверенный минус

Самое буквальное прочтение спеки (ранг дневного хода против 60-дневной истории того же знака, полоса 0.75/0.40) даёт SR −1.05 у BTC и −1.07 у ETH в окне 2018–2024, pEmp 0.98 против ротационного нуля. Причина не в полосе, а в горизонте: предиктивный IC ранга однодневного хода против завтрашней доходности отрицателен и значим — −0.045 (p = 0.02) у BTC и −0.067 (p = 0.00) у ETH. На одном дне крипта возвратна, и конструкция торгует строго против измеренного знака.

Полоса там вдобавок не работает вовсе: у K = 1 её оборот 160 в год против 161 у голого порога на том же скоре, а «мёртвая зона» удерживает позицию всего 5% дней. Гистерезис гасит колебания вокруг порога, но бессилен против знакопеременного сигнала: вход в противоположную сторону всегда открыт при |score| ≥ entry.

Два других прочтения lookback ведут себя пристойнее (K = 20 / W = 60: SR +0.61 у BTC и +0.77 у ETH; K = 60 / W = 252: +0.57 и +0.05), но ни одно не проходит family-wise порог.

Правило самой статьи

«Если разница < 0.1 SR после издержек — идея не окупает сложность». Считаем Δ авторского конфига против наивного z-score того же lookback во всех ячейках (2 актива × 3 окна × 3 прочтения lookback = 18):

K=1 / W=60 K=20 / W=60 K=60 / W=252
BTC 2018–2024 −0.33 +0.32 −0.11
BTC 2025–2026 −0.76 −0.05 −0.80
BTC полная −0.33 +0.22 −0.23
ETH 2018–2024 +0.26 +0.21 −0.35
ETH 2025–2026 +0.09 −0.40 +0.11
ETH полная +0.20 +0.17 −0.21

Порог берут 7 ячеек из 18 — и каждый раз разные. Конфиг, прошедший на BTC 2018–2024, проваливается на нём же в 2025–2026 и на ETH. Правило работает как подбрасывание монеты.

Семейство целиком

Приговор выносит ротационный max-T по всем 2160 конфигам (500 круговых сдвигов, издержки и обороты сохранены):

лучший SR pEmp p_max E[max SR | H₀] DSR
BTC 2018–2024 +1.07 0.020 0.696 0.98 0.111
BTC полная +1.11 0.000 0.052 0.85 0.353
ETH 2018–2024 +1.09 0.010 0.410 0.97 0.070
ETH полная +1.02 0.004 0.176 0.84 0.072

Ни одна ячейка не проходит family-wise. И тот же ответ приходит с другой стороны: лучший из 2160 конфигов на перетасованном BTC даёт в среднем SR 0.93 при p95 = 1.23 — наши 1.07 сидят внутри (pEmp 0.20). Перебор сеткой сам по себе рисует «стратегию» не хуже найденной.

Walk-forward expanding (IS ≥ 365 дней, OOS 91, 32 фолда): argmax-склейка +0.59 у BTC и +0.25 у ETH против +0.82 и +0.74 у buy & hold на том же отрезке (склейка начинается на год позже начала истории); равновзвешенное всё семейство — +0.33 и +0.08. Выбор конфига на истории проигрывает пассивной покупке, что для long/short-конструкции с полурыночной экспозицией — приговор.

Отдельная оговорка про long/flat: он выглядит лучше (лучший SR 1.46 у BTC), но половина такого бэктеста — тождественно buy & hold: long/flat моментум ≡ ½·B&H + ½·знаковая стратегия. B&H в том же окне даёт 0.75.

Что всё-таки шевельнулось

Sign-split на горизонте 60 дней — как предиктор, а не как стратегия. IC ранга против завтрашней доходности: +0.037 (p = 0.04) у BTC и +0.041 (p = 0.01) у ETH, тогда как пул-перцентиль (+0.011 / +0.014) и z-score (+0.015 / +0.021) незначимы. Знак и горизонт совпали на двух активах — это единственное место, где разделение по знаку что-то дало. Но испытаний 15 на актив (5 горизонтов × 3 трансформа), поправка на них съедает значимость, а в SR это не конвертируется: конфиги K = 60 дают +0.57/+0.05 с p_max ≈ 0.99.

Третий, вскользь упомянутый ингредиент — гейт по волатильности — интереснее первых двух. Глушение сигнала в верхнем квантиле воли (нуль фильтра — циклический сдвиг только гейта, скважность сохраняется):

актив, гейт база с гейтом Δ pEmp
ETH, RV20 > 80 пк +1.03 +1.12 +0.09 0.087
ETH, DVOL > 80 пк +0.35 +0.70 +0.35 0.027
BTC, DVOL > 80 пк +0.69 +1.12 +0.43 0.000
BTC, RV20 > 80 пк +1.07 +1.00 −0.07 0.443

Знак чаще положительный, но выборка DVOL начинается в 2021 году, тестов 16, и на BTC два гейта дают противоположные ответы. Это кандидат на отдельный прогон, а не результат.

Контроли и верификация

Мощность теста: внедрённый в реальные доходности моментум-эдж амплитудой 10 б.п./день поднимает лучший SR с 1.07 до 1.33, 40 б.п. — до 2.36. Мощность конструкции (мир со скрытым режимом): описана выше — конструкция ловит режим (SR растёт с его силой), но преимущества полосы не находит даже там, поэтому вывод формулируется как «контраст меряет комиссию», а не как «режима нет».

Лукахед: future-shock (скор строится из ходов, сдвинутых на 5 дней в будущее) поднимает SR авторского конфига с +0.73 до +3.21 — проводка на месте. Лаговый профиль корреляции скора с доходностью: −1 день +0.228, тот же день +0.239, следующий +0.052 — ряд смотрит строго назад.

Независимый верификатор (verify_hysteresis_momentum.py, 16 проверок, реализация с нуля) прошёл 16 из 16: sign-split ранг, посчитанный наивным циклом по окну, совпал с векторной версией побитово (max|Δ| = 0.0); гистерезис, реализованный явным конечным автоматом, совпал с векторным трюком из двух forward-fill на всех 12 парах порогов без единого расхождения; P&L, посчитанный на pandas, совпал с матричным; оборот совпал; цены сверены с независимо скачанным спотовым рядом Binance (медианное относительное расхождение 0.04%, корреляция дневных доходностей 0.9999). Отдельная проверка механизма: полоса обязана снижать оборот против порога = entry — выполнено во всех 12 парах.

Вердикт

Обе «сантехнические» идеи статьи на дневной крипте не подтверждаются.

Разделение перцентиль-ранга по знаку даёт +0.03 SR у BTC и +0.08 у ETH в окне спеки, меняет знак на OOS-окне и неотличимо от перетасованного ряда (pEmp 0.34). Пул-перцентиль без разделения знака не отличается от обычного z-score вовсе — то есть дело не в «разделении», а в том, что перцентильная шкала как таковая ничего не добавляет.

Гистерезисная полоса делает ровно то, что заявлено — снижает оборот на 16–17 единиц в год, — и ровно этим исчерпывается: её выгода равна нулю при нулевых издержках и линейно растёт с ними. При равном обороте она проигрывает наивному конфигу в 97–99% пар (86–93%, если наивному семейству запретить EMA и оставить голый порог), причём проигрывает и в синтетическом мире, построенном специально под неё. Сама премиса — «издержки съедают альфу» — на дневном горизонте при воле 69–88% годовых количественно неверна: лучший наивный конфиг теряет на 20 б.п. всего 0.03–0.11 SR.

Собственное правило статьи («меньше 0.1 SR — не окупает сложность») выполняется в 7 ячейках из 18 и каждый раз в разной, а всё семейство из 2160 конфигураций не проходит family-wise порог ни на одном активе ни в одном окне (p_max 0.05–0.70, DSR 0.07–0.35) и не отличается от лучшего конфига на перетасованных данных.

Единственное, что заслуживает продолжения, — не первый и не второй ингредиент, а третий, упомянутый в спеке одной строкой: глушение моментума в верхнем квантиле волатильности. И отдельно — наблюдение, что sign-split ранг на 60-дневном горизонте показал значимый предиктивный IC на обоих активах, не превратившийся в Sharpe.

Скрипты: research_hysteresis_momentum.py (прогон), research_hysteresis_extra.py (дискриминирующая статистика, IC, буква сравнения), verify_hysteresis_momentum.py (верификация).

Дополнение: гейт по волатильности прогнан отдельно

Хвост выше («кандидат на отдельный прогон») закрыт в тот же день — вердикт отрицательный.

Хинт в таблице выше мерялся неправильно, и это стоит сказать прямо: база там была выбрана (argmax из 2160 конфигов), а ΔSharpe от гейта путает два эффекта — «моментум ломается в шторм» и «гейт срезает экспозицию именно в дни с высокой σ, то есть уменьшает и знаменатель». Отдельный прогон сделан на фиксированных базах и с пассивным контролем.

Конструкция. Базы не выбираются: TSMOM_K = знак K-дневной логдоходности, K ∈ {20, 60, 90}; конфиг статьи; постоянный лонг (контроль на vol-managed бету) и та же траектория экспозиции со случайным знаком (контроль «гейт работает от тайминга экспозиции, а не от сигнала»). Первичная ячейка объявлена заранее: TSMOM_60 + RV20, трейлинг-перцентиль по 400 наблюдениям (семантика прод-индикатора), порог 80, глушить верх. Сетка — 48 гейтов (4 меры волы × 2 окна × 3 порога × 2 направления). Правило решения тоже объявлено заранее: гейт признаётся живым, только если механизм показан значимо, ΔSharpe проходит нуль фильтра, знак одинаков на BTC и ETH и эффект переживает выравнивание риска.

Механизм: не подтверждается. Вола-нормированный IR по квинтилям трейлинг-перцентиля (TSMOM_60):

квинтиль (ср. вола) BTC: IR стратегии hit ETH: IR стратегии hit
1 (32% / 45%) +0.95 0.486 +1.34 0.487
2 (44% / 59%) +1.19 0.519 +2.14 0.518
3 (53% / 72%) +0.20 0.519 +1.01 0.519
4 (64% / 84%) +2.30 0.545 +1.21 0.547
5 (89% / 117%) +0.73 0.530 −0.35 0.505

Ключевая деталь — точность знака в шторм не падает: 0.530 против 0.486 в тихом квинтиле у BTC, 0.505 против 0.487 у ETH. Сигнал угадывает направление не хуже; хуже становится размер потерь на тех днях, когда он ошибся. Это описание хвоста, а не поломки сигнала.

Формально: DiD «(моментум верх − низ) − (пассив верх − низ)» у первичной базы даёт −1.30 CI95 [−3.53, +0.67] на BTC и −0.97 [−2.75, +0.76] на ETH; непрерывная форма (наклон по перцентилю) — −0.34 [−4.38, +2.99] и −1.01 [−4.81, +2.56]. Знак везде «в сторону статьи», ноль везде внутри CI.

Бэктест: значимость есть, но не там, где механизм.

без гейта с гейтом Δ pEmp (нуль фильтра)
BTC, TSMOM_60 +0.74 +0.83 +0.09 0.124
ETH, TSMOM_60 +0.69 +1.01 +0.32 0.007
BTC, постоянный лонг +0.66 +0.43 −0.22 0.827
ETH, постоянный лонг +0.64 +0.71 +0.07 0.180
BTC/ETH, случайный знак −0.62 / +0.45 −0.74 / +0.44 −0.12 / −0.01 0.843 / 0.383

Пул по двум активам: +0.20 при общем нуле (одинаковый сдвиг гейта на обоих) pEmp = 0.008; family-wise по сетке из 48 гейтов ETH проходит (pMax 0.007), BTC — нет (0.157). Медиана Δ по сетке отрицательна на обоих активах (−0.14 и −0.17), доля положительных 0.38 и 0.46; направление статьи всё же лучше зеркального (mute-high +0.04 / +0.15 против mute-low −0.53 / −0.75).

Три проверки, которые эту значимость снимают.

Потолок. В синтетическом мире, где слом привязан ровно к тому же порогу, что и гейт (то есть гейт попадает в режим идеально), полное обнуление моментума в шторме даёт всего:

слом SR моментума в тихом / в шторм ΔSharpe гейта
нет +0.74 / +0.60 −0.03
половина +0.99 / +0.12 +0.10
полный +0.85 / +0.17 +0.09
разворот +0.87 / −0.31 +0.19
сильный разворот +0.71 / −1.02 +0.32

Наблюдаемые на ETH +0.32 соответствуют миру, где моментум в верхнем квинтиле имеет SR около −1.0. Измеренный там IR — −0.35, и его CI накрывает ноль. ΔSharpe требует поломки втрое большей, чем та, которую видно напрямую.

Эпизоды. Гейт выключает позицию 53 раза на BTC и 38 на ETH (18% дней). Джекнайф по эпизодам: один отрезок 8 марта — 4 апреля 2020 даёт 149% всего прироста BTC и 60% ETH, топ-3 эпизода — 257% и 98%. Без 2020 года пул падает с +0.20 до +0.05 (BTC +0.00, ETH +0.10). По годам знак пляшет: у BTC Δ отрицательна в 4 годах из 9, у ETH — в 4 из 9.

Выравнивание риска. Непрерывное масштабирование 1/σ забирает половину: у ETH Δ гейта падает с +0.32 до +0.16 поверх вола-таргета, у BTC с +0.09 до +0.03. Но и сам вола-таргетинг держится на том же эпизоде — без 2020 он даёт +0.05 (BTC) и +0.11 (ETH) при разбросе по годам от −0.81 до +0.76. Рекомендовать его как «правильную форму гейта» на этих данных нельзя.

Мощность. Механизм-тест слаб: в мире, где моментум в шторм ломается ПОЛНОСТЬЮ, DiD и наклон ловят это в 0–17% миров. CI статистики — ±3–5 IR-единиц при эффекте порядка 1–1.5, то есть для приговора механизму нужно примерно вдесятеро больше истории. Поэтому формулировка отрицательного результата — «не проверяемо на нашей выборке», а не «опровергнуто». Проверено и обратное: калибровка CI честная — при циклически сдвинутом перцентиле доля ложных значимостей 3% и 5% из 60 прогонов.

Вердикт по хвосту. Собственное пре-регистрированное правило не выполнено: механизм не показан ни на одном активе, BTC не проходит нуль фильтра, а весь пул держится на одном месяце 2020 года. То, что осталось после снятия этого месяца (+0.05 Sharpe), не окупает лишнюю степень свободы. В прод не идёт ни бинарный гейт, ни его непрерывная форма. Единственное, что стоит забрать из прогона как знание: в верхнем квинтиле волы у моментума не портится точность знака — портится распределение потерь, и это вопрос сайзинга, а не фильтра.

Верификатор verify_vol_gate.py — 14 проверок, 14 пройдено (трейлинг-перцентиль циклом против векторного, DiD и наклон независимо на pandas и явном МНК, калибровка CI на сдвинутом перцентиле, скважность гейта на белом шуме, гейт «из будущего» обязан быть лучше честного — +0.48 против +0.32).

Скрипты: research_vol_gate.py, verify_vol_gate.py.

Источник: Aligrithm · оригинал на английском, разбор — авторский на русском.