baykovpro

← Quant

Path Signatures: форма ценового пути как предиктор

29 сентября 2026 · 8 мин · momentum, режимные фильтры, бэктест, волатильность

Суть идеи

Большинство технических индикаторов — momentum, RSI, Bollinger bands — работают на rolling-окне и по сути сводят историю цены к скалярным агрегатам: суммарная доходность, дисперсия, экстремумы. При этом теряется информация о порядке событий внутри окна. Два двухчасовых отрезка с одинаковым суммарным движением и одинаковым расширением диапазона получат идентичный сигнал — хотя в одном случае цена пошла вверх, а волатильность подтянулась следом (классический breakout), а в другом сначала взорвалась волатильность, а цена догнала (скорее mean-reversion после шока).

Авторы предлагают использовать path signatures — математический объект из теории грубых путей (rough path theory, Lyons, 1990-е). Сигнатура пути — это иерархический набор итерированных интегралов от многомерного сигнала (цена, объём, IV и т.д.). Первый уровень — обычные приращения. Второй уровень — итерированные интегралы вида ∫(X_s dY_s), которые кодируют, что произошло раньше: движение X или движение Y. Третий уровень — ещё более тонкие взаимодействия. Формально сигнатура является универсальным нелинейным признаком пути: любая непрерывная функция от пути может быть аппроксимирована линейной функцией от его сигнатуры (теорема Чена).

Практически это означает: вместо того чтобы вручную конструировать «цена выросла до того, как IV выросла», можно скормить модели вектор сигнатуры и дать ей самой найти такие паттерны. Авторы тестируют предсказательную силу сигнатур на ценовых рядах, сравнивая с baseline из стандартных rolling-признаков.

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

Для BTC/ETH идея ложится органично. Крипторынок богат именно теми ситуациями, где порядок событий критичен: funding spike → price dump отличается от price dump → funding spike по своим последствиям для позиционирования. Аналогично: IV jump → spot rally (gamma squeeze) vs spot rally → IV jump (directional flow). Эти различия стандартный rolling-z не улавливает.

В качестве многомерного пути можно взять вектор (log-price, ATM IV, funding rate, GEX-прокси через open interest). Второй уровень сигнатуры такого вектора будет кодировать именно причинно-следственные паттерны между этими рядами внутри окна. Это прямая замена ручным правилам вроде «если IV выросла раньше цены — это X-режим».

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

Технически — да, библиотека esig (или signatory для PyTorch) позволяет вычислить сигнатуру за секунды. Ряды есть: hourly OHLCV BTC/ETH с 2019 года, ATM IV с Deribit (с ~2020), funding rate. Проблема в размерности: сигнатура уровня L от d-мерного пути имеет (d^(L+1)-1)/(d-1) компонент — при d=4, L=3 это уже 85 признаков на одно окно. Без регуляризации или отбора признаков это прямая дорога к переподгонке. Нашему rolling-z движку потребуется либо PCA поверх сигнатур, либо ridge-регрессия вместо порогового правила.

Данных по GEX в машиночитаемом виде за длинную историю нет — придётся ограничиться трёхмерным путём (price, IV, funding), что даёт более скромный набор признаков.

Сомнения

Главный риск — размерное проклятие и data-snooping. Сигнатура уровня 3+ генерирует десятки признаков из одного окна; при стандартном IS/OOS сплите на крипто-истории (3-5 лет) независимых событий мало, и красивый IS-Sharpe почти гарантирован. Авторы, судя по аннотации, сравнивают с baseline — но важно, насколько строго выбран уровень сигнатуры и длина окна до просмотра OOS. Второй момент: сигнатуры чувствительны к масштабированию пути — нормировка внутри окна (time-normalization vs lead-lag normalization) существенно меняет второй уровень, и выбор нормировки — ещё один скрытый гиперпараметр.

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

Поставить walk-forward тест на hourly BTC: путь = (log-price, log-ATM-IV, funding), окно 48 часов, сигнатура уровня 2 (всего 9 признаков — управляемо), ridge-регрессия на следующие 4h return. IS = 2020-2022, OOS = 2023-2024. Сравнить Deflated Sharpe против baseline (только momentum + IV-carry). Если сигнатурные признаки второго уровня дают значимый инкремент — копать глубже.

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

Проверено на наших данных до публикации (2026-09-05) — оригинал закрыт (Substack по приглашению), поэтому прогнали сам тезис: сохраняет ли порядок событий внутри окна информацию, которой нет у «слепых» индикаторов. Сигнатура уровня 2 трёхмерного пути раскладывается точно на приращения, их произведения и площади Леви — и только площади несут порядок. На часовых BTC и ETH за 2021–2026 площади Леви не добавляют ничего; сигнатура обыгрывает «слепые» признаки, но через приращения, в которых сидит обычный суточный реверсал. Денег в этом при 5 б.п. нет.

Провенанс. Аннотация роундапа: скользящие индикаторы выбрасывают порядок событий; два окна с одинаковой доходностью и одинаковым расширением диапазона — разные события (пробой против «сначала вола, потом цена»); сигнатура пути этот порядок сохраняет. Карточка предлагала путь (лог-цена, лог-ATM-IV, фандинг), сигнатуру уровня 2, ridge на 4-часовую форвард-доходность. IV у нас с 2025 года, поэтому вторая координата — реализованная волатильность; остальное по карточке. Разложение сигнатуры — математический факт: уровень 2 = ½·Δᵢ·Δⱼ (функция концов пути, порядка не видит) плюс антисимметричная часть, площади Леви A_ij = ½∫(x_i dx_j − x_j dx_i), которые меняют знак при обращении обхода и равны нулю на любой прямой. «Форма предсказывает» означает ровно одно: площади Леви добавляют предсказательной силы сверх приращений и их произведений.

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

Часовые бары BTC и ETH, май 2021 — июль 2026, около 45 тысяч; координаты пути — лог-цена, лог реализованной волатильности (EWM по часовым лог-доходностям, span 24), накопленный фандинг. Окно 24 часа, шаг час, таргет — лог-доходность следующих 4 часов. Наборы признаков: BLIND (8 «слепых» признаков окна: доходность, диапазон, стандартное отклонение, сумма фандинга, RSI-14, z-score цены, моментум 6 часов, число смен знака), L1 (3 приращения), L1+L2sym (плюс 6 произведений), полная сигнатура (плюс 3 площади Леви), сигнатура + BLIND, только площади Леви. Модель одна — ridge с λ по валидации на последних 20% обучения; walk-forward расширяющимся окном, минимум 8000 часов, рефит каждые 1000. Метрики: ранговый IC (по неделям, t по Ньюи–Уэсту, и по пулу с блочным бутстрепом), long/short по знаку прогноза с четвертью позиции на каждый часовой транш, 5 б.п. на единицу оборота, фандинг; контроли — плацебо (таргет перемешан при обучении, 20 перестановок), сигнал из будущего, проверка на случайность по меню. Всё зафиксировано до прогона.

Площади Леви не добавляют ничего

набор признаков BTC: IC t по неделям ETH: IC t по неделям
BLIND (слепые к порядку) +0.004 −2.3 +0.005 −2.3
L1 — приращения +0.015 +9.2 +0.015 +9.8
L1 + произведения +0.022 +7.9 +0.012 +4.2
полная сигнатура +0.024 +6.3 +0.015 +3.7
сигнатура + BLIND +0.021 −1.0 +0.011 −1.7
только площади Леви +0.010 +1.0 +0.002 +0.7
плацебо, 20 перестановок +0.002 ± 0.008 −0.006 ± 0.008

Разность «полная сигнатура − без площадей Леви» по неделям: BTC −0.013 (t = −3.1), ETH −0.005 (t = −1.0); по пулу +0.002 и +0.004 — в пределах шума блочного бутстрепа. Площади сами по себе — внутри разброса плацебо. Порядок событий на суточном окне часовых баров не несёт ничего, что не было бы в приращениях и их произведениях.

Что сигнатура действительно делает — обыгрывает «слепой» набор: +0.082 по неделям (t = 7.3) у BTC, +0.056 (4.7) у ETH; добавленная к BLIND, даёт +0.013 (t = 2.1) и +0.008 (1.5). Но источник этого виден в первой же строке таблицы: L1, три приращения, уже даёт IC 0.015 с t около 9 — а знак суточной доходности как прогноз следующих 4 часов имеет IC −0.045 (t = −14). На часовых BTC и ETH есть сильный реверсал «сутки → четыре часа», ridge на приращениях его берёт, а BLIND-набор с RSI и z-score — хуже. Это не форма пути, это знак суточного хода.

Денег в этом нет

long/short по знаку прогноза, 5 б.п. BTC: Sharpe нетто оборот, ед./день ETH: Sharpe нетто
полная сигнатура +0.24 1.6 −0.59
сигнатура + BLIND +0.09 2.5 −0.09
только площади Леви −0.81 1.8 −1.04
знак суточной доходности −1.28 −1.14

IC 0.015–0.024 при обороте 1–2.5 единицы в день не покрывает 5 б.п.; у ETH все наборы в минусе. Проверку на случайность проходит единственная ячейка у BTC — сигнатура плюс слепые признаки, с Sharpe +0.09.

Санитария

Площадь Леви единичного круга равна π с точностью дискретизации, меняет знак при обратном обходе и равна нулю на прямой; симметричная часть совпадает с ½·Δᵢ·Δⱼ; шум, подставленный в точки после момента t, не меняет признаки t; таргет t — лог-цена t+4 минус t; прогноз t не зависит от таргетов t−4…t; сигнал, построенный из будущих приращений, поднимает IC до 0.32 и Sharpe до 13 — стенд лукахед видит; NW-t на iid-ряде держит уровень; повторный прогон детерминирован.

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

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