baykovpro

← Quant

Моментум как задача ранжирования: учимся сортировать, а не предсказывать

22 сентября 2026 · 9 мин · моментум, ранжирование, кросс-секционные стратегии, машинное обучение

Суть идеи

Кросс-секционный моментум — это, по сути, задача сортировки: на каждом ребалансе расположи активы от худшего к лучшему, купи топ, продай аутсайдеров. Классика делает это через прокси — 12-месячную доходность. Нейросетевые подходы идут чуть дальше: предсказывают будущую доходность каждого актива, а потом сортируют по предсказанию. Это и есть regress-then-rank: оптимизируешь MSE/MAE по уровню доходности, а ранг получаешь как побочный продукт.

Авторы указывают на принципиальный изъян: ошибка регрессии и ошибка ранжирования — разные вещи. Модель, минимизирующая MSE, не обязана правильно упорядочивать активы — особенно в середине распределения, где доходности кластеризуются. Learning-to-rank (LTR) решает задачу напрямую: функция потерь штрафует за неправильный порядок пар или списков, а не за отклонение предсказанного числа от реального. Классические алгоритмы здесь — RankNet, LambdaRank, ListNet, знакомые по задачам поиска и рекомендаций.

На акционных данных авторы демонстрируют, что LTR-подход даёт более стабильный ранговый порядок и меньше «шумных» перестановок на границах лонг/шорт-корзин. Конкретные числа в аннотации не раскрываются, но тезис понятен: если цель — ранг, оптимизируй ранг.

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

На крипто-юниверсе идея ложится естественно. BTC, ETH и ликвидные альты уже торгуются как кросс-секционный набор — именно так работают многие CTA-стратегии на Deribit/Binance. Признаки для ранжировщика можно взять шире, чем просто прошлая доходность: funding rate (carry-сигнал), basis (фьючерсная премия), ATM IV (ожидаемая волатильность), GEX (gamma exposure как прокси ликвидности опционного рынка). Всё это наши ряды.

Главная адаптация: крипто-юниверс мал (10–30 ликвидных инструментов против тысяч акций), а LTR-алгоритмы любят большие юниверсы — чем больше пар для сравнения, тем лучше обучается ранжировщик. Это реальное ограничение, которое нельзя игнорировать.

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

Технически — да. В Python есть lightgbm с objective='lambdarank' и xgboost с rank:pairwise. Наш bt_engine может на каждом ребалансе (еженедельно/ежемесячно) скармливать модели rolling-окно признаков, получать ранги и формировать лонг/шорт-корзины. Rolling z-score по признакам — стандартная нормализация.

Честная оговорка: исторических данных по альтам до 2020 года мало, а walk-forward с LTR требует достаточного числа независимых ребалансов для обучения. На 5-летней истории с месячным ребалансом — около 60 точек, что на грани статистической значимости для сложной модели.

Сомнения

Малый юниверс — главная проблема. LTR на 15 активах с сотнями параметров — это почти гарантированная переподгонка. Классический sort-on-past-return может оказаться сильнее просто потому, что у него нет степеней свободы для переподгонки. Кроме того, крипто-моментум режимно хрупок: в 2022 году он работал в шорт, в 2023–2024 — в лонг, и никакой LTR-модели это не объяснит без явного режимного фильтра. Data-snooping риск высок — авторы тестируют на акциях, и прямой перенос выводов на крипту без OOS-теста некорректен.

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

Поставить walk-forward сравнение: baseline — sort-on-12m-return по топ-15 ликвидным альтам; challenger — LightGBM LambdaRank с признаками (12m return, funding, basis, ATM IV), обучение на 24-месячном окне, тест на следующем месяце. Метрика — Deflated Sharpe и ранговая корреляция предсказанного и реализованного порядка. Если LTR не бьёт baseline по Deflated Sharpe — идея не работает на нашем юниверсе.

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

Проверено на наших данных до публикации (2026-09-05) — повторили конструкцию работы на кросс-секции 30 перпов Binance: те же признаки, тот же портфель «три лучших в лонг, три худших в шорт», четыре ранжировщика плюс случайный, дневная и недельная ребалансировка, 2021–2026. Тезис про порядок подтверждается: ранжировщик, обученный на порядок, ранжирует лучше всех. Тезис автора про рассинхрон NDCG и Sharpe подтверждается ещё сильнее, чем он предупреждал: лучший по порядку — худший по деньгам, а зарабатывает старый добрый MACD-блэнд.

Провенанс. Статья открыта и разбирает SSRN 5255258: LambdaMART против «предсказать и отсортировать» (MLP под MSE), сортировки по прошлой доходности (JT) и MACD-блэнда (Baz) на четырёх классах активов; в акциях дневной Sharpe 3.40 без издержек, недельный 0.54; NDCG@3 0.556 против 0.540 у случайного. LambdaMART у нас в окружении нет, поэтому обучение на порядок реализовано линейным попарным ранжировщиком (логистическая потеря на парах внутри даты, вес ×3 у пар с участием истинных топ-3 и низ-3 — акцент на краях, как у NDCG@3). Это изолирует ровно то, что изолирует работа: одни признаки, одна модель, две цели обучения — ошибка прогноза против порядка. Деревья мы не воспроизводим, и это оговорка.

Стенд и предрегистрация

Дневная панель всех USDT-перпов Binance (только текущие листинги — выживаемость), юниверс на дату — топ-30 по 90-дневному объёму с историей ≥ 300 дней (работа ограничивает ~31). Признаки по букве: сырая доходность за 21 день, вол-нормированные доходности за 1, 3, 5, 10, 21, 63 дня (σ — EWM за 63 дня), нормированные MACD 8/24, 16/48, 32/96. Ранжировщики: JT (сортировка по 252-дневной доходности; плюс крипто-адаптация по 63 дням), Baz (среднее φ(MACD) по трём масштабам), RtR — ridge на вол-нормированную доходность следующего периода с λ по валидации, LTR — попарный ранжировщик, Random — сто случайных порядков на дату. Портфель: топ-3 лонг, низ-3 шорт, равные веса, позиция ×15%/σ, фандинг по знаку, издержки 0 (как в работе) и 5/10 б.п. на единицу оборота. Walk-forward расширяющимся окном, минимум год, рефит каждые полгода. NDCG@3 = среднее по топу и низу с перевёрнутыми метками; экспоненциальный gain по рангу (буква; случайный при N = 30 даёт 0.10), плюс «половинная» шкала, на которой случайный даёт 0.50 (как 0.540 в работе), плюс доля попаданий в истинные топ-3. Решающее правило зафиксировано до прогона.

По порядку выигрывает обучение на порядок

Дневная ребалансировка, 1732 дня вне выборки (ноябрь 2021 — август 2026):

ранжировщик NDCG@3, gain по рангу парный t к случайному / к RtR NDCG@3, половинная шкала попадание в топ-3
LTR (обучение на порядок) 0.175 +18.2 / +5.1 0.529 0.162
RtR (ridge под MSE) 0.147 +12.6 / — 0.501 0.138
JT, 63 дня 0.134 +9.2 / −2.7 0.502 0.129
Baz, MACD-блэнд 0.133 +9.2 / −2.9 0.519 0.127
JT, 252 дня 0.120 +6.1 / −5.5 0.511 0.118
случайный 0.099 0.500 0.100

Перевес обучения на порядок над сортировкой прогноза значим (t = 5.1), над сортировкой по доходности — тем более (t = 10.5). Он же тонкий: на половинной шкале 0.529 против 0.500 у случайного, у авторов 0.556 против 0.540. Всё как в работе.

По деньгам — наоборот

ранжировщик Sharpe брутто, дневная нетто при 5 / 10 б.п. недельная, брутто недельная, 10 б.п.
Baz, MACD-блэнд +1.05 +0.97 / +0.90 +0.63 +0.54
JT, 63 дня +0.81 +0.61 / +0.42 +0.52 +0.39
JT, 252 дня +0.60 +0.48 / +0.35 +0.41 +0.32
случайный +0.51 +0.38
RtR (ridge под MSE) +0.21 −0.70 / −1.61 +0.09 −0.19
LTR (обучение на порядок) −0.49 −1.16 / −1.82 −0.31 −0.58

Ранжировщик с лучшим NDCG — последний по Sharpe, с отрывом от случайного в минус целый пункт. Разница LTR − RtR по Sharpe −0.70 (p под ротационным нулём 0.84). Ротационный нуль по меню из пяти: Baz p = 0.01 без поправки и 0.14 с поправкой на меню, JT-63 0.06, LTR 0.85. Автор предупреждал, что «NDCG и Sharpe не ходят вместе» и что случайное ранжирование в валютах обходит LambdaMART; в крипте это не оговорка, а главный результат. NDCG@3 меряет, попали ли крайние имена в крайние слоты; деньги делает величина того, что происходит с этими шестью позициями дальше, и в крипте с её лотерейными хвостами точное попадание в «самых экстремальных» — не то же самое, что заработать на них.

Дневное против недельного, и издержки

Тезис автора о том, что дневная цифра — демонстрация без издержек, воспроизводится: ML-ранжировщики умирают на 5–10 б.п. (RtR с +0.21 до −1.61, LTR с −0.49 до −1.82), потому что перебирают состав каждый день; hand-built Baz с оборотом в разы меньше переживает (1.05 → 0.90). Переход на неделю режет всех: Baz 0.63, JT 0.4–0.5, ML около нуля или ниже. По годам лидер меняется: LTR в минусе 2022–2024, +0.75 в 2025 и −2.51 в 2026; RtR +1.60 в 2022 и минус два следующих года; JT-252 +1.40 и +1.14 в 2025–2026. «Структура ранжирования не универсальна» — не только между классами активов, но и между годами внутри одного.

Санитария

NDCG: идеальный порядок = 1 на всех трёх шкалах, обратный = 0, случайный 0.102 / 0.500; аналитический градиент попарной потери совпал с конечными разностями до 10⁻¹⁰, на синтетике с известным линейным порядком ранжировщик восстанавливает его с корреляцией 1.00; шум в таргетах последней недели не меняет прогноз; портфель одной даты пересчитан руками; оракул со знаком будущей доходности даёт Sharpe 12.5, тот же оракул со сдвигом на дату — обычный 1.06; повторный прогон побитово тот же.

Что не проверено и где копаем дальше

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