baykovpro

← Quant

Внутримесячный цикл моментума: институциональная механика

21 августа 2026 · 15 мин · momentum, позиционирование, CME-COT, funding

Суть идеи

Традиционный моментум — покупай то, что росло последние 3–12 месяцев, продавай отстающих — работает уже 30+ лет, и никто толком не договорился, почему. Психология? Медленное распространение информации? Компенсация за риск? Авторы предлагают другой ответ: институциональные игроки управляют кэшем по календарному расписанию. Подписки/выкупы фондов, ребалансировки, margin calls и аллокации происходят в предсказуемые точки месяца — и именно это создаёт повторяющийся внутримесячный паттерн в доходностях моментум-портфелей.

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

Это принципиально отличается от «поведенческих» объяснений: здесь есть конкретный агент с конкретным расписанием, а не абстрактная «недореакция рынка». Если механизм реален — он должен быть стабилен во времени и воспроизводим в других классах активов, где институционалы играют заметную роль.

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

На первый взгляд крипта — не то место: розничный поток, 24/7, нет классических fund flows. Но это уже не так. С 2021 года CME-фьючерсы на BTC/ETH несут значимый институциональный отпечаток. COT-отчёт показывает позиции dealer’ов, asset managers и lev funds — и их ребалансировки тоже привязаны к календарю (квартальные экспирации, месячные роллы, funding-окна).

Funding rate на перп-фьючерсах — это прокси на агрегированный спрос лонгов/шортов и меняется предсказуемо вокруг экспираций и конца месяца. Basis между спотом и CME-фьючерсом тоже имеет сезонность вокруг роллов. Если внутримесячный цикл моментума — это артефакт институциональных cash flows, то в крипте его аналог нужно искать именно там: в funding, basis и COT-позиционировании, а не в классическом price momentum.

Что адаптировать: вместо fund-flow дат брать даты экспирации опционов/фьючерсов Deribit и CME, даты funding-расчётов, конец календарного месяца. Сигнал — не просто «цена росла», а «цена росла И институциональный поток по COT подтверждает направление».

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

Да, частично. У нас есть: спот BTC/ETH (дневные/часовые), CME-COT еженедельно, funding rate (8h), basis, даты экспираций. Чего нет: реальных fund-flow данных по крипто-фондам с дневной разбивкой — это существенный пробел, придётся использовать COT как прокси. Rolling-z по funding и basis можно считать прямо в движке. Walk-forward с окном 6–12 месяцев реален.

Сомнения

Главный риск — data-snooping на акциях: авторы нашли паттерн, разбив месяц на дни, что само по себе умножает число проверяемых гипотез. Перенос на крипту добавляет ещё один слой подгонки — мы выбираем «похожие» даты постфактум. Режимная хрупкость очевидна: в 2022 году институциональный поток в крипту схлопнулся, и любой calendar-based сигнал должен был сломаться. Независимых «месяцев» с устойчивым институциональным участием в BTC/ETH — от силы 30–40, это статистически бедно.

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

Прогнать walk-forward на дневном BTC: сигнал — лонг в первые 5 торговых дней месяца при условии, что COT lev-funds net > rolling-z(+0.5) за последние 52 недели; выход — на 6-й день или при развороте funding ниже нуля. Горизонт теста: 2020–2024, OOS-окно 6 месяцев, метрика — Deflated Sharpe.

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

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

Спека выполнена буквально: дневной BTC, лонг в первые 5 дней месяца при условии COT lev-funds net > rolling-z(+0.5) за 52 недели, выход на 6-й день или при развороте funding ниже нуля, горизонт 2020–2024, walk-forward с OOS-окном 6 месяцев, Deflated Sharpe. Сверх буквы: ETH вторым рукавом, семейство из 48 конфигураций на актив (окно {3, 5, 7} дней × счёт дней {календарные, биржевые} × гейт {нет, z>0, z>+0.5, z>+1.0} × выход {фиксированный, по развороту funding}) и — главное — три отдельные проверки самого механизма, а не только его торговой обёртки: профиль дня месяца у цены, у кросс-секционного моментум-портфеля и у денежного потока спотовых ETF.

Инструмент — перп Binance (спот-бэкфилл левее сентября 2019), издержки 6 б.п. на единицу оборота, funding в P&L по фактическим выплатам, вход на следующий день. Приговор выносит ротационный max-T; DSR приводим, раз спека его просила.

Нуль: перестановка порядка дней ВНУТРИ месяца

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

Дальше сравниваем не отдельные дни (15 ячеек — это 15 гипотез), а контрасты: среднее по окну против среднего по остальным дням того же месяца. Контраст свободен от сноса по построению и втрое мощнее поячеечного теста. Окон три — классическое окно смены месяца [−1, +1, +2, +3], окно статьи [+1..+5] и зеркальное [−1..−5]; перестановки общие для всех трёх, поэтому максимум по строке — честный family-wise порог.

Калибровка: что этот тест вообще способен увидеть

Прежде чем что-то отрицать, надо показать, что тест работает. Прогоняем ту же машинку на индексе Nasdaq Composite за 55 лет — эффект конца месяца в акциях документирован десятилетиями:

выборка месяцев окно смены месяца t p MDE
Nasdaq 1971–2026 665 +9.5 б.п./день 3.49 0.001 8.9 б.п.
Nasdaq, последние 8 лет 95 +3.3 б.п./день 0.39 0.695 26.6 б.п.
S&P 500, последние 8 лет 95 +2.8 б.п./день 0.43 0.663 21.0 б.п.

Первая строка — тест находит эффект там, где он есть. Вторая — тот же эффект на выборке нашего размера уже невидим: минимально детектируемая величина 26.6 б.п. против истинных 9.5. Это не придирка, а рамка всего прогона: на сотне месяцев сильнейшая документированная календарная аномалия акций не обнаруживается в принципе.

Для крипты MDE ещё хуже — волатильность выше в разы:

месяцев окно смены месяца p MDE сколько месяцев нужно
BTC 107 +16.5 б.п./день 0.341 53.9 б.п. 1142 (95 лет)
ETH 107 +34.7 б.п./день 0.112 70.7 б.п. 444 (37 лет)

Знак у обоих активов тот же, что в акциях, и точечная оценка BTC даже вдвое больше «акционной» — но чтобы отличить её от нуля, нужен век наблюдений. Отрицательный результат ниже — это в первую очередь свойство выборки, и формулировать его надо именно так.

Торгуемая спека: не работает, и гейт мешает

Sharpe в рынке p (ротац.) p_max DSR
BTC, первичная ячейка, 2020–2024 +0.08 2.2% 0.544 0.992 0.108
BTC, первичная, весь спан COT −0.02 4.0% 0.654 0.996 0.059
BTC, только календарь (без гейта) +0.45 16.4% 0.350 0.930 0.345
BTC, только гейт (без календаря) +0.24 16.1% 0.626 0.998 0.192
BTC, buy & hold +0.90 100% 0.725
ETH, первичная ячейка, 2020–2024 −0.37 2.3% 0.894 1.000 0.001
ETH, только календарь +0.86 16.4% 0.218 0.738 0.392
ETH, только гейт −0.23 20.7% 0.936 1.000 0.003

Walk-forward по букве спеки (expanding IS ≥ 365 дней, OOS 182 дня): BTC +0.24 против +0.50 у buy&hold на том же куске, ETH на полном спане +0.02 против +0.36. Ни один из 48 конфигов ни на одном активе не подошёл к family-wise порогу: E[max Sharpe] под ротационным нулём и так 0.99–1.13 годовых, то есть перебор сеткой сам по себе рисует «стратегию» лучше всего, что мы нашли.

Два разложения объясняют, почему.

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

база без гейта Δ от гейта p нуль: среднее / p95
BTC 2020–2024 +0.45 −0.37 0.608 −0.25 / +0.41
BTC весь спан +0.44 −0.48 0.844 −0.18 / +0.27
ETH 2020–2024 +0.86 −0.93 0.820 −0.49 / +0.29

Настоящий гейт хуже случайно сдвинутого гейта той же скважности. Причина видна напрямую, без бэктеста, — по лаговому профилю самого ряда COT: корреляция недельного Δ(lev-funds net) с недельной доходностью даёт пик на k = 0 (неделя, закончившаяся отчётным вторником) величиной −0.32 у BTC и −0.41 у ETH, а на следующей неделе — +0.04 и +0.05, то есть ноль. Ряд датирован верно и смотрит строго назад; вперёд он не смотрит вовсе. И знак важнее величины: на росте недели хедж-фонды CME сокращают нетто-лонг, а не наращивают — они ведут себя как носители базисной сделки, а не как «институциональный поток, толкающий победителей». Агента, которого требует механизм статьи, в этом ряду нет.

Окно «первые 5 дней» ничем не выделено среди 28 фаз месяца. Тот же однонаправленный трейд, запущенный с любого дня месяца: факт +0.45 — это 61-й перцентиль (BTC 2020–2024) и 75-й на полном спане, при медиане фаз +0.33 и +0.16 и разбросе от −0.34 до +1.32. Любое пятидневное окно на растущем активе даёт около трети Sharpe — это экспозиция, а не календарь.

Механизм: где его нет и где он всё-таки виден

Кросс-секционный моментум крипты — прямой аналог того, что меряет исходная статья (у неё моментум-портфель, а не один актив). Собрали WML на 93 парах Binance (ребаланс 1-го числа, лонг верхняя шестая по 90-дневному моментуму с пропуском 5 дней, шорт нижняя, универсум — топ-30 по трейлинг-обороту с ≥180 днями истории на момент ребаланса): сам фактор за 81 месяц даёт Sharpe −0.79 (кросс-секционный моментум в крипте отрицателен и без всякого календаря), а его внутримесячный профиль пуст: окно [+1..+5] даёт −14.5 б.п./день при MDE 63.8 — не просто незначимо, а с обратным знаком. Ноги по отдельности — то же самое.

Зато самый прямой тест премисы дал результат. «В начале месяца свежие деньги заходят в фонды» — в крипте это наблюдаемо буквально: чистые создания/погашения спотовых ETF. (Ловушка данных, которую пришлось снять: ряд идёт по биржевым дням, и праздники США записаны ровно нулём — 26 дней из 675. Нули сидят на фиксированных календарных позициях, 1 января это ячейка +1, и без чистки они смещают ровно те ячейки, которые мы тестируем.)

BTC, поток спотовых ETF (30 мес.) отклонение t p p_FWER
начало [+1..+5] +14.9 $млн/день 0.45 0.670 0.951
смена месяца [−1,+1,+2,+3] −11.4 $млн/день −0.33 0.753 0.981
конец [−1..−5] −77.0 $млн/день −2.76 0.007 0.021
последний биржевой день −113.3 $млн/день −2.75 0.005 0.121

Средний приток в последние пять биржевых дней месяца — 32 $млн/день против 97 в остальные; в последний день 2024–2026 годов он в среднем отрицателен (−7.7 $млн при +85.5 в обычный день). Эффект переживает переход к рангам внутри месяца (то есть держится не на одном выбросе: p = 0.009 для последнего дня) и одинаков по знаку в обеих половинах выборки.

То есть вторая половина механизма статьи — «в конце месяца фонды продают для выплат и ребалансировок» — в крипте видна прямо в деньгах. Первой половины — притока в начале месяца — нет.

Находка, которую мы не засчитываем (и почему)

Дальше напрашивается очевидное: если поток в конце месяца сохнет, должна сохнуть и цена. В эре спотовых ETF так и есть. Шорт BTC в последний биржевой день месяца, январь 2024 — июль 2026: 31 сделка, Sharpe +1.87 нетто, суммарно +32.6%, 25 падений из 31, средний день −1.15%. ETH в том же окне — −1.23% и 17 падений из 25. До запуска ETF (2017–2024, 77 месяцев) тот же день давал +0.74% и 48% падений. Ротационный max-T по семейству из 42 фаз бизнес-месяца: p = 0.000.

И всё же это не находка, а кандидат. Три причины.

Первая и главная: окно «эра ETF» мы выбрали, посмотрев на данные — сначала нашли просадку потока, потом пошли искать цену там же. Ротационный нуль корректирует выбор фазы, но не выбор окна. Плацебо на два этапа сразу: прогоняем те же 42 фазы по всем 78 скользящим 31-месячным окнам истории BTC и смотрим, какой Sharpe даёт лучшая фаза в каждом. Медиана +1.05, p90 +1.83, максимум +2.02. Наши +1.87 — это 91-й перцентиль, то есть p ≈ 0.09. Как только заплатить за оба этапа поиска, значимость исчезает.

Вторая: датировка не сходится с объяснением. По годам последний биржевой день был положительным в 2017–2022 (+2.45%, −1.13%, +2.35%, +0.30%, +1.78%, +1.06%) и отрицательным в 2023–2026 (−0.62%, −1.56%, −0.93%, −0.82%). Знак сменился в 2023 — за год до запуска спотовых ETF. Поток ETF корреспондирует с эффектом только на его второй половине.

Третья: сам по себе внутримесячный профиль нестабилен ровно так, как боялась статья. Контраст окна смены месяца по эрам:

эра месяцев BTC ETH
2017–2020, до институтов 39 +51.2 б.п. +39.3 б.п.
2021–2023, CME-эра 34 +15.3 б.п. +99.5 б.п. (p_FWER 0.027)
2024+, эра спотовых ETF 30 −31.6 б.п. −51.9 б.п.

Единственная ячейка, прошедшая family-wise порог во всём прогоне помимо потока ETF, — ETH в CME-эре — в следующей же эре меняет знак на противоположный. Статья сама писала: «если механизм реален — он должен быть стабилен во времени». На наших данных он не стабилен.

Контроли

Пустышки (20 миров с циклически сдвинутым рынком): ложных срабатываний max-T 5% у BTC и 0% у ETH, ложных профилей 0% — нуль откалиброван по номиналу. Мощность теста (эдж внедряется прямо в дни 1–5): профиль ловит его начиная с 40–80 б.п./день, при 20 б.п. и ниже не ловит. Мощность конструкции (мир, где статья верна: бамп в дни 1–5 ровно тогда, когда настоящий COT-z > +0.5, — эдж входит как вход, который вся связка обязана найти): 6% миров при 5–10 б.п., 31% при 40, 81% при 80 и 100% при 160 б.п./день. То есть конструкция статьи начинает работать с эффекта примерно вдесятеро больше акционного.

Датировка COT проверена против первоисточника CFTC: 436 недель, расхождений ноль. Отчётная дата — вторник, кроме пяти праздничных недель, где CFTC сдвигает её на понедельник; фиксированный «+3 дня» давал бы тогда четверг, то есть на день раньше пятничного релиза, поэтому доступность считается как «докатить до пятницы недели релиза, затем +1 день» — суббота во всех 436 неделях без исключения. Лукахед проверен порчей будущего: всё правее середины выборки заменяется шумом, позиции левее обязаны совпасть побитово — совпали.

Независимый верификатор (verify_intramonth.py, 34 проверки, реализация с нуля: свои перестановки явным циклом, свой контраст Уэлча, свой numpy-бэктест, свой DSR по формуле, эффект конца месяца перепроверен на Yahoo против FRED) прошёл 34 из 34. Одна ловушка сверки заслуживает упоминания отдельно: pandas.std() считает с ddof = 1, numpy.std() — с ddof = 0, и на выборке в 1827 дней это расхождение Sharpe в четвёртом знаке, которого достаточно, чтобы завалить побитовую сверку на ровном месте. Конвенции обязаны совпадать между реализациями.

Вердикт

Торгуемая спека — мертва. Первичная ячейка даёт Sharpe +0.08 на BTC и −0.37 на ETH, ни один из 48 конфигов не проходит family-wise порог, walk-forward уступает buy&hold, а COT-гейт активно вычитает — потому что нетто хедж-фондов на CME по прямому измерению не несёт форвардной информации и вдобавок движется против цены, а не за ней. Перенос механизма через COT в том виде, как он предложен, не работает.

Клейм о механизме — не проверяем на нашей выборке, а не опровергнут. Ни BTC, ни ETH, ни кросс-секционный моментум-портфель не показывают внутримесячного профиля, но MDE в 50–70 б.п./день против «акционных» 9.5 означает, что мы бы не увидели и настоящий эффект. Честная формулировка: чтобы отличить наблюдаемые +16.5 б.п. у BTC от нуля, нужно 95 лет истории.

Единственное, что реально видно, — денежная половина механизма. Приток в спотовые ETF BTC статистически значимо проседает в последние пять биржевых дней месяца (−77 $млн/день, p_FWER 0.021), и в те же дни в 2024–2026 слаба цена. Но окно эры выбрано постфактум, плацебо двухэтапного поиска даёт p ≈ 0.09, а смена знака в ценах датируется 2023 годом — раньше самих ETF. Это кандидат на форвард-трек, а не результат.

Скрипты: research_intramonth.py (прогон), verify_intramonth.py (верификация).

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