Перейти к содержимому
Все стратегии

Стратегии

Спред импульса отношения ETH-BTC на Hyperliquid (4H, длинно-короткая парная сделка, кросс-секционный тренд)

Итог: Отменено

HyperliquidEthBtcRatioMomentumPair

Сводка по итогам

HyperliquidEthBtcRatioMomentumPair — отличающаяся от других, корректно реализованная рыночно-нейтральная парная стратегия на Hyperliquid с барами 4H: длинная/короткая позиции по ETH и BTC на импульсе логарифма отношения; всего три параметра сигнала, чтобы снизить риск переобучения. Несмотря на корректную реализацию — 243 парных входов с равным долларовым номиналом, без пропусков по размеру, номиналу или денежным средствам, — стратегия теряла деньги во все три года: итоговая доходность -69.8%, Sharpe -1.22, фактор прибыли 0.888. Аналитик отказался от неё на этапе проверки бэктеста до оптимизации после итерации 4, заключив, что неверна сама предпосылка, а не выбранный для настройки порог. Вывод: спред ETH/BTC возвращается к среднему вокруг тренда, поэтому импульсные входы систематически приводят к whipsaw. Корректным выражением такого преимущества стал бы возврат к среднему — совершенно отдельная гипотеза.

Гипотеза

Рыночно-нейтральная парная торговля на импульсе относительной динамики бессрочных контрактов Hyperliquid использует устойчивую склонность ETH и BTC попеременно лидировать на крипторынке. Стратегия торгует ETH/BTC RATIO, а не абсолютными ценами: открывает длинную позицию по ETHUSD.HYPERLIQUID и короткую по BTCUSD.HYPERLIQUID, когда отношение растёт, и наоборот, когда оно падает. Это классическая сделка на факторе относительной силы, известная на фондовом рынке (спред активов с высоким и низким импульсом); в……Показать большеСвернуть

Рыночно-нейтральная парная торговля на импульсе относительной динамики бессрочных контрактов Hyperliquid использует устойчивую склонность ETH и BTC попеременно лидировать на крипторынке. Стратегия торгует ETH/BTC RATIO, а не абсолютными ценами: открывает длинную позицию по ETHUSD.HYPERLIQUID и короткую по BTCUSD.HYPERLIQUID, когда отношение растёт, и наоборот, когда оно падает. Это классическая сделка на факторе относительной силы, известная на фондовом рынке (спред активов с высоким и низким импульсом); в криптовалютах она работает, потому что: (a) доминирование BTC меняется циклично примерно от 38 до 58% в течение нескольких месяцев; (b) нарративы экосистемы ETH (летние всплески DeFi, запуски L2, спекуляции на ETF) вызывают многонедельное опережение ETH относительно других активов; (c) периоды снижения риска на макроуровне вызывают опережение BTC (BTC — цифровое золото и защитный актив в криптовалютах). Стратегия целиком использует Hyperliquid (обе ноги на HL), стремясь закрыть наиболее недопредставленную квоту площадки: HYPERLIQUID на уровне 4.1% при целевом значении 20%. Это длинно-короткая стратегия (исполнение 9.3% при целевом значении около 45%), торгующая парами (исполнение 13.9%); использует безопасные бары 4H на BTC+ETH — самой длинной истории на HL. Механизм принципиально отличается от тренда абсолютной цены, который не работает из-за шума: спред двух высококоррелированных активов чаще возвращается к среднему вокруг импульсного тренда, чем каждый актив по отдельности. Это NOT классический графический паттерн (что позволяет избежать провалов паттернов 8+), NOT арбитраж базиса между площадками (он уже есть в конвейере как BtcInverseLinearBasisArbitrage и CrossVenueEthBasisArbitrage) и NOT направленная стратегия на одном активе. Всего три параметра (период расчёта, порог, exit_band), чтобы снизить риск переобучения после повторяющихся проблем с замороженным сигналом и переобучением.

Исправление итерации 4 для сбоя Layer-2: `HyperliquidEthBtcRatioMomentumPair._ts() takes 1 positional argument but 2 were given`. Первопричина: проверочный прокси Layer-2 перестраивает стратегию, копируя все вызываемые объекты в обычную обёртку с `types.MethodType(val.__func__ if hasattr(val,'__func__') else val, wrapper)`; `@staticmethod` (у которого нет `__func__`) привязывается как метод экземпляра, добавляя фиктивный `self`, поэтому последующий `self._ts(bar)` передаёт функции с 1 аргументами 2 аргументов.……Показать большеСвернуть

Исправление итерации 4 для сбоя Layer-2: `HyperliquidEthBtcRatioMomentumPair._ts() takes 1 positional argument but 2 were given`. Первопричина: проверочный прокси Layer-2 перестраивает стратегию, копируя все вызываемые объекты в обычную обёртку с `types.MethodType(val.__func__ if hasattr(val,'__func__') else val, wrapper)`; `@staticmethod` (у которого нет `__func__`) привязывается как метод экземпляра, добавляя фиктивный `self`, поэтому последующий `self._ts(bar)` передаёт функции с 1 аргументами 2 аргументов. Окончательное исправление SMALLEST, устраняющее этот режим сбоя, — перенести вспомогательную функцию временной метки бара OUT из класса на уровень модуля как функцию `_bar_ts_ns(bar)`: она разрешается через глобальные имена модуля и никогда не подвергается повторной привязке метода прокси. Два прежних места вызова `self._ts(bar)` (в `on_extra_bar` и `calculate_signal`) теперь вызывают `_bar_ts_ns(bar)`. Другая логика не менялась: непрерывный сигнал моментума логарифма отношения, парное исполнение с нейтральностью по долларовой стоимости (`_submit_entry`/`_submit_exit`), расчёт размера позиции с учётом плеча и все пороговые значения идентичны предыдущей версии — всё, что уже прошло Layer 1, сохранено. Локальная проверка: Layer 1 (статический) проходит, и все 6 синтетических сценариев Layer-2 (steady_uptrend, steady_downtrend, flat_ranging, volatility_spike, zero_volume, price_gap) проходят без исключений.

Отказ до оптимизации: пара MOMENTUM с отношением ETH/BTC не имеет преимущества и стабильно убыточна после учёта комиссий и импакта Hyperliquid — Sharpe -1.22, Sortino -2.06, total_return -69.8%, CAGR -45.5%, profit_factor 0.888 и NEGATIVE в каждом году (2024 -14.8%, 2025 -43.7%, 2026 -48.4%); скользящий Sharpe отрицателен почти на всём промежутке. Реализация корректна (243 чистых парных входов, обе ноги HL, нейтральность к доллару, без пропусков), значит, причина не в ошибке соединения компонентов или……Показать большеСвернуть

Отказ до оптимизации: пара MOMENTUM с отношением ETH/BTC не имеет преимущества и стабильно убыточна после учёта комиссий и импакта Hyperliquid — Sharpe -1.22, Sortino -2.06, total_return -69.8%, CAGR -45.5%, profit_factor 0.888 и NEGATIVE в каждом году (2024 -14.8%, 2025 -43.7%, 2026 -48.4%); скользящий Sharpe отрицателен почти на всём промежутке. Реализация корректна (243 чистых парных входов, обе ноги HL, нейтральность к доллару, без пропусков), значит, причина не в ошибке соединения компонентов или замороженном сигнале — неверна сама предпосылка: как признаёт гипотеза, спред ETH/BTC возвращается к среднему вокруг своего импульсного тренда, поэтому вход по MOMENTUM систематически приводит к whipsaw (win_rate 44.6%, матожидание -$154.8/сделку). Sharpe -1.22, отрицательный все три года, — не обрыв и не артефакт периода, который можно обратить в плюс подбором параметров импульса 3 (период расчёта/порог/exit_band). Разворот сигнала на возврат к среднему стал бы новой гипотезой, а не настройкой параметров, поэтому оптимизация в течение 2 часов не оправдана. FAILURE PATTERN: кросс-секционный MOMENTUM по логарифму отношения ETH/BTC не даёт торгуемого преимущества на бессрочных контрактах 4H HL: спред высококоррелированных крупных активов возвращается к среднему, а не следует тренду, поэтому импульсные входы стабильно убыточны при любых режимах рынка, несмотря на чистую, отличающуюся от других рыночно-нейтральную реализацию. Корректно выразить любое преимущество отношения ETH/BTC можно было бы через возврат к среднему — это отдельная гипотеза.

Реализация

Рыночно-нейтральная парная торговля на импульсе относительной динамики на бессрочных контрактах Hyperliquid. Переменная решения — импульс логарифма отношения ETH/BTC (log(ETH/BTC)[now] - log(ETH/BTC)[lookback ago]), непрерывно рассчитываемый на каждом баре длительностью 4H с помощью SyncedBuffer, синхронизированного по временным меткам для обеих ног. Когда отношение растёт выше +порога, стратегия открывает длинную позицию по ETHUSD и короткую по BTCUSD; когда оно падает ниже -порога — наоборот. Размеры ног уравнены по номиналу USD (нейтральность к доллару и дельте относительно BTC) и рассчитываются как капитал счёта x capital_fraction x плечо. Позиции закрываются, когда импульс возвращается внутрь нейтрального диапазона exit_band. Обе ноги всегда открываются и закрываются одновременно, поэтому непокрытая позиция в одном активе не возникает.

Результаты верификации

Проверка не пройдена (уровень 2 — синтетические сценарии): Использованные параметры: ['lookback', 'exit_band', 'threshold', 'min_notional', 'capital_fraction'] Проверьте, что __init__ задает все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000) - steady_downtrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка……Показать большеСвернуть

Проверка не пройдена (уровень 2 — синтетические сценарии): Использованные параметры: ['lookback', 'exit_band', 'threshold', 'min_notional', 'capital_fraction'] Проверьте, что __init__ задает все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000) - steady_downtrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000) - flat_ranging: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000) - volatility_spike: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000) - zero_volume: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000) - price_gap: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() ожидает 1 позиционных аргументов, получено 2 (временная метка бара: 1735689600000)

Обзор бэктеста

Шарп
-1,22
Общая доходность
-69,83%
Максимальная просадка
72,92%
Всего сделок
486
Доля прибыльных
44,7%
Профит-фактор
0,89

Чистая, корректно реализованная рыночно-нейтральная парная сделка: 243 парных входов, обе ноги HL, нет пропусков размера, номинала или средств, размеры нейтральны по долларовой стоимости

Действительно отличающаяся площадка и область применения (длинно-короткая парная сделка на Hyperliquid), а также сигнал всего с 3 параметрами для снижения риска переоптимизации

Коэффициент Шарпа -1.22 и коэффициент Сортино -2.06 — глубоко отрицательная доходность с поправкой на риск у стратегии, для которой эталонный показатель не имеет смысла, поэтому определяющими являются абсолютные метрики

Стратегия явно и постоянно теряет деньги: total_return -69.8%, CAGR -45.5%, profit_factor 0.888, отрицательный результат во все ALL года (2024/2025/2026)

Предпосылка о моментуме отношения, по-видимому, неверна по направлению: спред ETH/BTC возвращается к среднему относительно своего тренда (согласно самой гипотезе), поэтому входы по моментуму систематически приводят к убыточным колебаниям позиции

Положительные месяцы — это редкие резкие всплески с тяжелыми хвостами (эксцесс 71, асимметрия 5.9; выброс в мае +32.5% -2025), а не повторяемое преимущество; probabilistic_sharpe 0.053

Издержки на комиссии и проскальзывание ($38 тыс. комиссий + $25 тыс. проскальзывания) усугубляют потери сигнала без валового преимущества

Анализ

Не отправляйте NOT на оптимизацию: базовая версия убыточна во все три года, коэффициент Шарпа -1.22, и при переборе параметров нет положительной области, которую можно было бы найти. Механизм закодирован правильно, но направление SIGN перепутано. В вашей собственной гипотезе сказано, что спред ETH/BTC возвращается к среднему, однако should_enter() торгует импульс (длинная позиция по ETH/короткая по BTC, когда импульс логарифма отношения > +порогового значения, то есть AFTER отношение уже выросло).……Показать большеСвернуть

Не отправляйте NOT на оптимизацию: базовая версия убыточна во все три года, коэффициент Шарпа -1.22, и при переборе параметров нет положительной области, которую можно было бы найти. Механизм закодирован правильно, но направление SIGN перепутано. В вашей собственной гипотезе сказано, что спред ETH/BTC возвращается к среднему, однако should_enter() торгует импульс (длинная позиция по ETH/короткая по BTC, когда импульс логарифма отношения > +порогового значения, то есть AFTER отношение уже выросло). Рыночно-нейтральная парная сделка с симметричным коэффициентом Шарпа -1.22 во всех режимах — классический признак инвертированного входа. Нужны два конкретных изменения: (1) FLIP на возврат к среднему — открывать длинную позицию по ETH/короткую по BTC, когда отношение отклоняется вниз до DOWNSIDE (импульс < -порогового значения или z-оценка ниже границы), рассчитывая на возврат; при отклонении вверх открывать обратные позиции. Закрывать позицию по мере возврата к среднему. Эквивалентный вариант — инвертировать текущее распределение BUY/SELL и заново настроить exit_band. (2) Сильно CUT частоту сделок: текущий оборот составляет 306x, а суммарные комиссии и проскальзывание — около $63 тыс.; увеличьте порог входа и/или задайте минимальный срок удержания, чтобы издержки круговой сделки по двум инструментам не съедали преимущество возврата к среднему. Повторите бэктест; если развернутый вариант с меньшей частотой сделок все еще показывает отрицательное преимущество или преимущество ниже издержек, от этой предпосылки следует отказаться (или передать ее на revise_hypothesis).

История итераций

Проверка не пройдена (leverage_set_but_unused): конфигурация задает плечо=3.0, но стратегия нигде не использует плечо при расчете размера позиции. Рассчитывайте размер позиции с учетом него — номинал = капитал * доля * плечо / цена (считывая self.config.leverage) — или задайте плечо=1.0. В текущем виде плечо не действует, и бэктест идентичен 1x.

Сводка по итогам

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

На этапе проверки бэктеста до оптимизации аналитик вынес вердикт «отказаться»: реализация была чистой (243 корректно связанные парные входы, нейтральные по долларовой стоимости, пропусков нет), поэтому причиной убытков признали неверную предпосылку, а не ошибку; стратегия не прошла пороги коэффициента Шарпа, коэффициента Сортино, общей доходности и фактора прибыли. До оптимизации, заключительной проверки аналитиком и проверки рисков дело не дошло.

Рыночно-нейтральная парная сделка на Hyperliquid: длинная позиция по ETH / короткая по BTC (или наоборот) на основе импульса логарифма отношения спреда ETH/BTC; ставка на то, что циклы доминирования BTC и нарративов ETH позволяют спреду следовать тренду чище, чем каждому активу по отдельности.

За 695 дней стратегия стабильно несла убытки: общая доходность -69.8%, CAGR -45.5%, Sharpe -1.22, Sortino -2.06, фактор прибыли 0.888, доля прибыльных сделок 44.6% из 486 сделок (243 длинных / 243 коротких), максимальная просадка — 72.9%. Результат был отрицательным в каждом году (2024 -14.8%, 2025 -43.7%, 2026 -48.4%); комиссии $38k и импакт $25k усугубили убытки сигнала без преимущества.

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.