HyperliquidSolFundingExtremeContrarian
Гипотезы
Hyperliquid SOL Perp Funding-Extreme Contrarian — лонг-шорт, один инструмент: FADE скученность позиций при достижении скользящим Z-оценкой фандинга экстремального значения (очень положительный фандинг = позиции лонг перегружены плечом → SHORT; очень отрицательный = шорты капитулировали → LONG), подтверждённое неподтверждением со стороны цены; выход при возврате фандинга к норме / стопе ATR / временном стопе (SOLUSDT.HYPERLIQUID, 4H, 3-параметров)
Гипотезы
Контртрендовая стратегия LONG-SHORT по одному инструменту, основанная на POSITIONING, для бессрочного контракта Hyperliquid SOL, построенная вокруг механического сигнала NON-OHLCV — FUNDING бессрочного контракта — использовала его OPPOSITE способом по отношению к выбывшему семейству cash-and-carry фабрики стратегий. Это NOT дельта-нейтральная стратегия переноса (которая выбыла, поскольку прибыль и убыток от финансирования были слишком малы по сравнению с шумом базиса) и NOT ценовой моментум (корзины моментум-стратегий HL — 0/84). Вместо этого финансирование используется как индикатор скученности позиций/позиционирования для выбора момента контртрендовой сделки DIRECTIONAL: хорошо задокументировано, что при экстремально положительной ставке финансирования бессрочного контракта держатели длинных позиций используют чрезмерное плечо и платят за удержание — такое состояние исторически предшествует LOWER последующей доходности бессрочных контрактов (риск сквиза/массового закрытия позиций), а симметрично экстремально отрицательное финансирование указывает на капитуляцию держателей коротких позиций, предшествующую отскокам. Стратегия выбрана, чтобы одновременно заполнить три недостаточно представленные категории: HYPERLIQUID (6.8% при целевом значении 20%), long_short (14.2%) и преимущество, безопасное с точки зрения данных, не относящееся к OHLCV и не входящее в кладбище переобученных стратегий OHLCV. Один инструмент и 3 параметров выбраны намеренно, чтобы сохранить реализуемость (мультиинструментальные корзины HL выбыли из-за тайм-аутов при написании кода) и противостоять переобучению. IMPLEMENTATION NOTE: поддерживать базовый уровень финансирования в виде скользящей двусторонней очереди с инкрементальным обновлением (O(1) на обновление) — NEVER повторно сканировать весь ряд финансирования внутри on_bar (этот паттерн вызывал повторяющиеся тайм-ауты песочницы длительностью 300 с).
Гипотезы
Итерация 2 исправляет единственный сбой Layer-2 (`FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given`, все шесть сценариев). В Layer-2 `_StrategyProxy` перепривязывает каждый вызываемый атрибут стратегии к обычной обёртке через `types.MethodType`, что превращает статический метод `_bar_ts` базового класса, принимающий один аргумент, в связанный метод — поэтому `self._bar_ts(bar)` получает два аргумента. Минимальное исправление заменяет этот единственный вызов вспомогательной функцией `_bar_timestamp_ns(bar)` уровня модуля, которая напрямую читает `bar.ts_event` (с обращением к `ts_init` в качестве запасного варианта) — поведение идентично, перепривязка со стороны прокси на неё не влияет. Больше ничего не изменилось: импорты, структура класса, разбор данных финансирования, логика сигналов, входы, выходы и расчёт размера позиций побайтово идентичны previous_code, прошедшему Layer 1, поэтому ни одна из предыдущих проверок не может дать регрессию. Обратите внимание: `_bar_interval_ns` по-прежнему вызывается из `__init__`, который выполняется на реальном экземпляре до того, как прокси что-либо перепривяжет, поэтому это на него не влияет. Плечо 2.0 используется в `position_size` через `self.config.leverage` при ограничении совокупного номинального объёма позиций.
Гипотезы
Контртрендовая стратегия по одному инструменту на экстремальных значениях ставки финансирования с отрицательным математическим ожиданием — преимущества, которое можно оптимизировать, нет. PF 0.60, total_return -33.7%, коэффициент Шарпа -0.42, математическое ожидание -$156/сделку и avg_trade_return_pct -0.37% (отрицательное значение, ниже порога комиссий Hyperliquid 0.15%, L22). Убытки в каждом году (2024 -14.8%, 2025 -13.8%, 2026 -6.5%), при этом доля прибыльных сделок как по длинным, так и по коротким позициям ниже -43%, а avg_loss > avg_win — контртрендовая стратегия систематически оказывается на неверной стороне движения, а единственный прибыльный месяц обеспечен одним аномальным днём +10.77% (эксцесс 9.8). Механизм реализован корректно (без тайм-аута, финансирование учтено), но относится сразу к двум семействам, в которых не выжил ни один вариант: возврат к среднему/контртрендовая торговля по одному инструменту (L55) и направленная торговля одним бессрочным контрактом с дополнительным фильтром по финансированию (L73). Фильтр отсутствия подтверждения со стороны цены не добавил реального преимущества. Преимущество в расчёте на сделку имеет отрицательный знак, который невозможно изменить настройкой параметров. Не стоит 2 часов оптимизации. Паттерн неудачи: fee_edge/no_edge контртрендовая торговля одним бессрочным контрактом с фильтром по финансированию.
Реализация
Лонг-шортовая контртрендовая стратегия по одному инструменту на перпетуале Hyperliquid SOL (бары 4H). Фандинг используется как индикатор скученности: скользящая Z-оценка значения hl_funding_rates относительно его собственного распределения за предыдущий период возвращается на каждом баре как непрерывный сигнал. Экстремальный положительный z (скученные, переплачивающие лонги) отыгрывается через SHORT; экстремальный отрицательный z (капитулировавшие шорты) — через LONG, но только когда цена не подтверждает скученность (закрытие не формирует новый максимум/минимум за confirm_bars баров). Выход при возврате фандинга к норме (|z| <= exit_z), стопе ATR, зафиксированном при входе, или календарном временном стопе, отсчитываемом от позиции.ts_opened. Размер позиции определяется прежде всего риском: стоп ATR стоит примерно risk_frac капитала, с независимым ограничением валовой номинальной стоимости.
Результаты верификации
CLEAN RESTART 2026-09-04 — история вердиктов и записи об обучении этого запуска были удалены, и он был перезапущен с этапа проверки. Предыдущий отказ произошёл из-за конвейера, а не рынка: оболочка Layer-2 некорректно привязывала помощники @staticmethod (исправлено), QA выносил окончательные вердикты о результативности по неоптимизированному дымовому тесту (устранено — теперь QA оценивает только корректность), а тайм-ауты песочницы были вызваны нехваткой слотов бэктестов (исправлено). Гипотеза и код стратегии не изменились. Проверяйте код по существу; результативность будет определена позднее полным бэктестом и оптимизатором.
Результаты верификации
Сузить _param_bounds до 3 ключевых настраиваемых параметров (entry_z, exit_z, funding_lookback_prints); параметры риска/инфраструктуры зафиксировать как константы.
Результаты верификации
Гипотеза предлагает конструкцию «3-параметровую, намеренно устойчивую к переобучению», но _param_bounds раскрывает 11 оптимизируемых параметров. Механизм корректен, однако поиск walk-forward размерности 11 противоречит заявленному обоснованию защиты от переобучения и повышает риск PBO. Не блокирует.
Результаты верификации
Не требуется; отмечено для аналитика.
Результаты верификации
Все синтетические сигналы Layer-2 зафиксированы на 0.0 (фандинг не вводился), поэтому торговый путь был пройден только песочницей (которая совершила 65 сделок на реальном фандинге). Не является фатальным.
Обзор бэктеста
Механизм срабатывает корректно и формирует достаточную выборку (201 сделок за 953 дней) без тайм-аутов — реализация фандинга O(log n) работает как задумано
Обзор бэктеста
Один инструмент, один дополнительный поток данных (hl_funding_rates), без проблем с данными/проверкой; фандинг учтён в PnL
Обзор бэктеста
Отрицательное математическое ожидание: profit_factor 0.60, total_return -33.7%, математическое ожидание -$156/сделку
Обзор бэктеста
avg_trade_return_pct -0.37% — отрицательное значение, значительно ниже порога комиссий Hyperliquid 0.15% (L22)
Обзор бэктеста
Убыток во все три года (2024 -14.8%, 2025 -13.8%, 2026 -6.5%) — устойчивое отсутствие преимущества, а не его угасание
Обзор бэктеста
Обе ноги убыточны (win rate лонга 42%, шорта 42%), причём avg_loss > avg_win — угасание экстремального фандинга находится не на той стороне движения
Обзор бэктеста
Единственный положительный месяц — это один аномальный день +10.77% (эксцесс 9.8); исходный поток котировок повсеместно отрицателен
Обзор бэктеста
Направленное угасание по одному инструменту с условием по фандингу — mean-reversion (0/174) и направленная стратегия по одному перпету с дополнительным условием (L73) — классы с нулевым числом выживших
Iteration History
Проверка не пройдена (Layer 2 — синтетические сценарии):
Использованные параметры: ['exit_z', 'entry_z', 'atr_bars', 'risk_frac', 'min_prints', 'confirm_bars', '_param_bounds', 'atr_stop_mult', 'max_hold_bars', 'max_lag_seconds', 'max_notional_frac', 'funding_lookback_prints']
Убедитесь, что __init__ устанавливает все атрибуты из self.parameters.get().
- steady_uptrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690500000)
- steady_downtrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690500000)
- flat_ranging: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690500000)
- volatility_spike: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690500000)
- zero_volume: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690500000)
- price_gap: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735690500000)
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.