Контртрендовый возврат к среднему на экстремумах финансирования крупных активов Hyperliquid, лонги и шорты (несколько инструментов, BTC/ETH/SOL бессрочных контрактов, одна площадка, бары 1H, контртрендовая торговля при скоплении позиций с фильтром исчерпания движения цены, независимый размер позиции по каждому активу, мало параметров)
Стратегия была создана, чтобы обойти все прежние проблемы стратегий на ставках финансирования: без второй ноги и межплощадочного базиса, финансирование используется только как сигнал, размер позиции по каждому активу задаётся независимо, чтобы избежать ошибки учёта ротации. Всё это удалось: бэктест прошёл без сбоев в логике обработки данных, было 348 сделок, риск был разумным, бета — почти нулевой. Однако без артефактов реализации у самой контртрендовой стратегии не оказалось преимущества: коэффициент Шарпа -1.995, фактор прибыли 0.846, отрицательное математическое ожидание, убыток почти в каждом месяце; комиссии за частые сделки на таймфрейме 1H съели 16.8% валовой прибыли, а вероятностный коэффициент Шарпа составил 0.03. Аналитик отказался от стратегии на этапе проверки бэктеста после 5 итераций, отметив, что это реальное отрицательное преимущество, а не исправимая ошибка, и что истории Hyperliquid длительностью около 181 дней всё равно слишком мало для проверки. До оптимизации или итогового решения аналитика дело не дошло.
Стратегия возврата к среднему LONG-SHORT, SINGLE-VENUE, MULTI-INSTRUMENT на небольшой диверсифицированной корзине ликвидных крупных активов Hyperliquid (BTCUSD, ETHUSD, SOLUSD) торгует против экстремальных ставок бессрочного финансирования EXTREME — используемых как показатель скопления позиций в одну сторону — только когда движение цены на таймфрейме 1H подтверждает его исчерпание. На Hyperliquid финансирование начисляется HOURLY, поэтому ставки достигают экстремумов быстрее и чётче, чем на площадках с……Показать большеСвернуть
Стратегия возврата к среднему LONG-SHORT, SINGLE-VENUE, MULTI-INSTRUMENT на небольшой диверсифицированной корзине ликвидных крупных активов Hyperliquid (BTCUSD, ETHUSD, SOLUSD) торгует против экстремальных ставок бессрочного финансирования EXTREME — используемых как показатель скопления позиций в одну сторону — только когда движение цены на таймфрейме 1H подтверждает его исчерпание. На Hyperliquid финансирование начисляется HOURLY, поэтому ставки достигают экстремумов быстрее и чётче, чем на площадках с интервалом 8 ч. Основной источник прибыли и убытка — PRICE возврат к среднему после движения бессрочного рынка с чрезмерным плечом и скоплением позиций, NOT перенос позиции: финансирование — это SIGNAL ONLY (ряд ставок финансирования и прогнозируемого финансирования, который предоставляет HL), поэтому стратегия не подвержена проблемам начисления и зачисления финансирования или доминирования комиссий между площадками, погубившим все предыдущие хеджированные попытки на ставках финансирования CARRY и между площадками SPREAD: здесь нет второй ноги, межплощадочного базиса и двойного полного цикла сделки. Каждый инструмент торгуется INDEPENDENTLY (со своими входами, выходами и размером позиции), а не как NOT одна сменяющаяся позиция; так устраняется отмеченная аналитиком ошибка учёта ротации движка для нескольких инструментов при одной позиции. Корзина (3 крупных активов, не связанных общими шоками) снижает уязвимость к внутридневным новостным гэпам отдельного альткоина, которая уничтожила дневной портфель XRP. Эта стратегия ORTHOGONAL от продвигаемых фабрикой стратегий на тренд, импульс и моментум: она контртрендовая, запускается при любом рыночном режиме (скопление позиций бывает и на бычьем, и на медвежьем рынке) и совершает сделки часто. Благодаря этому её проще статистически проверить, чем направленные трендовые стратегии на короткой истории Hyperliquid (около 6 мес.), где трендовые стратегии не обобщались на недавний режим рынка.
Исправление итерации -5 для тайм-аута по часам на уровне -3 («работа на каждом баре растёт вместе с длиной истории»). Причина: _compute_funding_z пересчитывал window.mean()/window.std() по максимум funding_lookback наблюдениям финансирования на каждом баре EVERY для ноги EVERY (O(lookback) на бар для каждой ноги). Исправление заранее вычисляет ряд скользящего z-показателя финансирования ENTIRE отдельно для каждой ноги ONCE в on_start одним векторизованным проходом cumsum (O(n) единожды), после чего на каждом баре……Показать большеСвернуть
Исправление итерации -5 для тайм-аута по часам на уровне -3 («работа на каждом баре растёт вместе с длиной истории»). Причина: _compute_funding_z пересчитывал window.mean()/window.std() по максимум funding_lookback наблюдениям финансирования на каждом баре EVERY для ноги EVERY (O(lookback) на бар для каждой ноги). Исправление заранее вычисляет ряд скользящего z-показателя финансирования ENTIRE отдельно для каждой ноги ONCE в on_start одним векторизованным проходом cumsum (O(n) единожды), после чего на каждом баре остаётся только поиск searchsorted за O(log n) и индексирование массива за O(1) — именно это требует диагностика: «один раз заранее вычислить отсортированные массивы; O(log n) на бар». Расчёт скользящего z-показателя побайтно воспроизводит исходную семантику окна (та же структура массива без удаления дубликатов, поэтому funding_lookback по-прежнему учитывает записи; то же стандартное отклонение генеральной совокупности; те же проверки min_funding_obs, периода расчёта и устаревания данных), поэтому сигнал не изменился и ранее пройденные уровни не регрессировали. Импорт не затронут (уровень 1 пройден); логика входа, выхода и размера позиции, кэш z-показателя и вспомогательная функция для обхода ограничений staticmethod сохранены (уровень 2 пройден). funding_lookback закреплён за ограниченным 168 в конфигурации, поэтому даже однократный предварительный расчёт остаётся быстрым.
Контртрендовая стратегия теряет деньги; имеющиеся данные не подтверждают наличие преимущества: коэффициент Шарпа -1.995 (CI -4.02..+0.34), profit_factor 0.846, омега 0.674, отрицательное матожидание (-$23.8/сделку), total_return -8.82%, а вероятность положительного истинного коэффициента Шарпа составляет лишь probabilistic_sharpe 0.0345 (~0). Убыток возникает почти каждый месяц, а комиссии съедают 16.81% валовой прибыли из-за частых контртрендовых сделок на 1H. Причина NOT в ошибке кода (данные о финансировании……Показать большеСвернуть
Контртрендовая стратегия теряет деньги; имеющиеся данные не подтверждают наличие преимущества: коэффициент Шарпа -1.995 (CI -4.02..+0.34), profit_factor 0.846, омега 0.674, отрицательное матожидание (-$23.8/сделку), total_return -8.82%, а вероятность положительного истинного коэффициента Шарпа составляет лишь probabilistic_sharpe 0.0345 (~0). Убыток возникает почти каждый месяц, а комиссии съедают 16.81% валовой прибыли из-за частых контртрендовых сделок на 1H. Причина NOT в ошибке кода (данные о финансировании загружаются, 87 сигналы входа срабатывают корректно, размеры позиций и экспозиция разумны — 48%), поэтому итерации не помогут; никакая настройка порога/RSI/стопа не превратит контртрендовую стратегию с отрицательным матожиданием и коэффициентом Шарпа -2.0 в пригодное для продвижения преимущество при таких комиссиях — оптимизация лишь подгонит модель под выборку длиной 181 дней. Кроме того, история Hyperliquid длительностью около 6 месяцев слишком коротка для проверки методом walk-forward-анализа или на отложенной выборке; это повторяющийся тип неудачи HL, связанный с короткой историей и неспособностью контртрендовой стратегии к обобщению, который отмечен и в самой гипотезе. Оптимизация впустую отняла бы около 2 часов.
Реализация
Контртрендовая стратегия возврата к среднему: лонги и шорты, одна площадка, несколько инструментов (BTCUSD/ETHUSD/SOLUSD бессрочных контрактов Hyperliquid, бары 1H); торгует против экстремальных ставок бессрочного финансирования EXTREME, используемых как показатель скопления позиций в одну сторону, с фильтром — подтверждением исчерпания движения цены на таймфрейме 1H по индикатору RSI. Финансирование — это SIGNAL ONLY (z-показатель финансирования относительно скользящего окна самого инструмента); прибыль и убыток……Показать большеСвернуть
Контртрендовая стратегия возврата к среднему: лонги и шорты, одна площадка, несколько инструментов (BTCUSD/ETHUSD/SOLUSD бессрочных контрактов Hyperliquid, бары 1H); торгует против экстремальных ставок бессрочного финансирования EXTREME, используемых как показатель скопления позиций в одну сторону, с фильтром — подтверждением исчерпания движения цены на таймфрейме 1H по индикатору RSI. Финансирование — это SIGNAL ONLY (z-показатель финансирования относительно скользящего окна самого инструмента); прибыль и убыток возникают при возврате цены после чрезмерного скопления позиций, поэтому нет второй ноги, базиса и начисления переноса позиции. Каждый инструмент торгуется независимо, со своими входами, выходами и размером позиции (обычный портфель с несколькими позициями). Экстремальная положительная ставка финансирования → скопление лонгов → контртрендовый вход в шорт, если RSI остаётся повышенным; экстремальная отрицательная ставка финансирования → скопление шортов → контртрендовый вход в лонг, если RSI остаётся пониженным. Выход при стопе (4%), фиксации прибыли (3%), нормализации z-показателя финансирования (|z|<=0.5) или максимальном удержании в течение 48 ч. Размер позиции рассчитывается относительно капитала, а в номинальной стоимости используется 2x кредитного плеча.
Результаты верификации
Проверка не пройдена (уровень 3 — бэктест в изолированной среде): дымовой тест превысил лимит времени 300 с. Обычно это означает, что работа на каждом баре растёт вместе с длиной истории — например, полный пересчёт ряда финансирования или дополнительных данных либо повторное создание списка и вызов min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Заранее вычисли отсортированные массивы временных меток ONCE в __init__ и используй bisect либо кэшируй значения по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).
Обзор бэктеста
Шарп
-2,00
Общая доходность
-8,82%
Максимальная просадка
13,00%
Всего сделок
348
Доля прибыльных
47,4%
Профит-фактор
0,85
Механизм реализован правильно: загружается hl_funding_rates (3327 событий финансирования), было подано 87 основных входных сигналов; торгуются дополнительные части стратегии — ошибки данных с нулём сделок и артефакта ротации или наслоения позиций на этот раз нет.
Разумный профиль риска: exposure_pct 48%, avg_position_pct 24.7%, только max_drawdown 13% — портфель действительно диверсифицирован и близок к рыночно-нейтральному (бета 0.047).
Частые сделки (348) позволяют оценить преимущество, а не принять случайность малой выборки за результат.
probabilistic_sharpe 0.0345 — практически нет шансов, что истинный коэффициент Шарпа положительный.
Убыток почти в каждом месяце (положительным был только первый неполный месяц); avg_win $276 < avg_loss $294.
commission_pct_of_gross 16.81% — частые контртрендовые сделки на таймфрейме 1H сильно снижают результат из-за комиссий; даже при правильном направлении сигналов эти затраты сохраняются.
История Hyperliquid охватывает лишь 181 дней — этого слишком мало для проверки методом walk-forward-анализа или на отложенной выборке; это повторяющийся тип неудачи HL, связанный с короткой историей и неспособностью контртрендовой стратегии к обобщению.
отрицательный
<1, убыточная
отрицательное математическое ожидание
Вероятность положительного истинного коэффициента Шарпа > 0 составляет около 0
сильное влияние комиссий на контртрендовые сделки на таймфрейме 1H
Анализ
Пока не оптимизируй NOT: текущий бэктест не реализует гипотезу и показывает убыточную конфигурацию (коэффициент Шарпа -2.26, PF 0.83, -15%). Перед повторным бэктестом исправь следующее: 1. IMPLEMENT THE EXHAUSTION GATE (критично). rsi_ob=rsi_os=50.0 превращают «подтверждение истощения движения цены на 1H» — центральную предпосылку — в бессмысленный выбор орлом или решкой. Задай настоящие пороги перекупленности и перепроданности, чтобы контртрендовый сигнал срабатывал только при истощении движения цены, например……Показать большеСвернуть
Пока не оптимизируй NOT: текущий бэктест не реализует гипотезу и показывает убыточную конфигурацию (коэффициент Шарпа -2.26, PF 0.83, -15%). Перед повторным бэктестом исправь следующее:
1. IMPLEMENT THE EXHAUSTION GATE (критично). rsi_ob=rsi_os=50.0 превращают «подтверждение истощения движения цены на 1H» — центральную предпосылку — в бессмысленный выбор орлом или решкой. Задай настоящие пороги перекупленности и перепроданности, чтобы контртрендовый сигнал срабатывал только при истощении движения цены, например rsi_ob=68, rsi_os=32 (задать их по умолчанию, а не 50/50). Это самое важное изменение: сейчас стратегия реагирует на экстремальные ставки финансирования практически без подтверждения со стороны цены, из-за чего рынок её переигрывает.
2. VERIFY POLARITY EMPIRICALLY. После установки настоящего фильтра выборочно проверь, действительно ли экстремальные ставки финансирования на HL 1H REVERT или CONTINUE в течение следующих 24-48h. Постоянные убытки (PF 0.83, каждый месяц из 2026 убыточный) — предупреждение: возможно, ставки финансирования продолжают экстремальное движение (моментум), а не возвращаются к среднему. Если стратегия с корректным фильтром всё равно убыточна, контртрендовая предпосылка имеет неверный знак, и следующий вердикт — отказаться/revise_hypothesis.
3. BALANCE THE BOOK. Соотношение 290 лонгов к 58 шортам означает преобладание одной стороны; «диверсифицированная корзина LS» на деле не торгует в обе стороны. Убедись, что сигналы на отрицательном финансировании (контртрендовый лонг) и положительном финансировании (контртрендовый шорт) симметричны, а порог entry_z одинаково применяется в обе стороны.
4. TIGHTEN ENTRY SELECTIVITY. Значение entry_z=1.5 при отключённом фильтре пропускает слишком много слабых сигналов (17% валовой прибыли ушло на комиссии за 6mo). Рассмотри более высокий порог entry_z (2.0-2.5), чтобы сделки совершались только при настоящих экстремумах скопления позиций.
Повтори бэктест после этих исправлений. Переходи к оптимизации, только если версия с фильтром и проверенной симметрией сигналов показывает реальное положительное преимущество (коэффициент Шарпа > 0.5, PF > 1.1).
История итераций
Проверка не пройдена (уровень 2 — синтетические сценарии): Использованные параметры: ['exit_z', 'rsi_ob', 'rsi_os', 'entry_z', 'rsi_period', 'min_notional', 'stop_loss_pct', 'target_weight', 'max_hold_hours', 'min_funding_obs', 'take_profit_pct', 'funding_lookback', 'max_funding_lag_s'] Проверь, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000) - steady_downtrend:……Показать большеСвернуть
Проверка не пройдена (уровень 2 — синтетические сценарии):
Использованные параметры: ['exit_z', 'rsi_ob', 'rsi_os', 'entry_z', 'rsi_period', 'min_notional', 'stop_loss_pct', 'target_weight', 'max_hold_hours', 'min_funding_obs', 'take_profit_pct', 'funding_lookback', 'max_funding_lag_s']
Проверь, что __init__ задаёт все атрибуты из self.parameters.get().
- steady_uptrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000)
- steady_downtrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000)
- flat_ranging: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000)
- volatility_spike: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000)
- zero_volume: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000)
- price_gap: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690740000)
Сводка по итогам
Даже безупречно реализованная, хорошо диверсифицированная и близкая к рыночно-нейтральной стратегия может иметь действительно отрицательное преимущество: контртрендовые сделки против экстремальных ставок финансирования на крупных активах Hyperliquid принесли чистый убыток из-за высоких комиссий за частые сделки на таймфрейме 1H. Истории длиной около 6 месяцев слишком мало для проверки, поэтому следует избегать повторяющейся группы контртрендовых стратегий, не обобщающихся на короткой истории.
Проверка бэктеста завершилась вердиктом «отказаться»: это была не ошибка кода (в отличие от предыдущих родственных стратегий), а действительно убыточная контртрендовая стратегия, которая ставит против экстремумов; вероятность положительного истинного коэффициента Шарпа — около 0, убыток был почти в каждом месяце, и настройка порога/RSI/стопа не могла превратить стратегию с коэффициентом Шарпа -2.0, сниженным комиссиями, в прибыльную. Ситуацию усугубляет история Hyperliquid длительностью около 181 дней — этого слишком мало для walk-forward-анализа.
Контртрендовая стратегия возврата к среднему с лонгами и шортами на нескольких инструментах одной площадки, крупных активах Hyperliquid (BTC/ETH/SOL бессрочных контрактов на таймфрейме 1H), торгует против экстремальных ставок бессрочного финансирования как показателя скопления позиций в одну сторону — финансирование используется только как сигнал, а не как перенос позиции. Фильтр подтверждает исчерпание движения цены; каждый актив торгуется независимо, чтобы получить прибыль при возврате цены после чрезмерного скопления позиций.
Эта итерация наконец прошла без сбоев: данные финансирования загрузились (3,327 событий), сработали 87 основных входов, размер позиций и экспозиция были разумными (48% экспозиции, максимальная просадка 13%, бета почти нулевая: 0.047), а выборка содержала 348 сделок. Но преимущество явно отрицательное: коэффициент Шарпа -1.995, фактор прибыли 0.846, математическое ожидание -$23.8/сделку, общая доходность -8.82%, вероятностный коэффициент Шарпа 0.0345; комиссии за частые контртрендовые сделки на таймфрейме 1H съели 16.81% валовой прибыли.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.