Path Signatures: форма ценового пути как предиктор
Суть идеи
Большинство технических индикаторов — 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-ряде держит уровень; повторный прогон детерминирован.
Что не проверено и где копаем дальше
- Нелинейность. Сигнатуры в литературе обычно скармливают деревьям или ядрам; линейный ridge может не видеть взаимодействий площадей с уровнем волатильности. Это следующий стенд, когда в окружении появятся деревья.
- Другой масштаб. Порядок событий на 5-минутных барах внутри часа — другой вопрос; на суточном окне его нет.
- Суточный реверсал «сутки → четыре часа» (IC −0.05, t −14) — сам по себе известный эффект, но его размер после издержек мы здесь не мерили; отдельная проверка.
- Читатели с собственным определением «формы пути» — пришлите, прогоним на том же стенде с тем же разложением и опубликуем с указанием автора.