Strategies
ETH Hyperliquid Funding-Extreme Contrarian Positioning Reversal, Long-Short (Single-Instrument ETHUSD.HYPERLIQUID Perp, DAILY Bars — Fade Crowded Leveraged Positioning When Funding Hits a Statistical Extreme, Capture PRICE Reversion Not the Coupon, 3-Parameter)
Outcome: Abandoned
EthHyperliquidFundingExtremeContrarianReversalLS
The iteration-3 JSON-key fix works — the funding feed now parses and the strategy trades 73 times, a measurable sample
Hypothesis
Implementation
Long-short daily-bar contrarian strategy on the ETHUSD Hyperliquid perp. The HL funding rate is used as a crowding gauge, not a coupon: each bar the prior 24h of hl_funding_rates is aggregated into a coverage-normalised daily figure and scored as a robust median/MAD rolling z-score over the trailing 90 valid days. The signal is -z (continuous, computed every bar), so its sign is the trade direction: deeply negative funding (crowded shorts) buys, deeply positive funding (crowded longs) sells. Entry fires when |signal| exceeds entry_z sigma, floored by the trailing 95th percentile of |signal| so the threshold is distribution-free. Exits on a 1.5x ATR stop, a 2.0x ATR target, normalisation of the positioning signal, or a 7-bar time stop. Sizing risks 2% of equity per stop-out, capped at 0.75x equity gross notional. If the funding feed is missing the strategy stays flat -- there is no price-only fallback.
Verification Results
CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.
Thin sample / likely limited coverage: 48 trades, Sharpe CI spans zero, all 2021-2024 stress windows flat at 0.0 — consistent with the HL funding feed covering only ~2023+ rather than the full 6-year bar history. The entry gate (entry_z 2.5, 95th-pct floor) is low-frequency by design. Not a bug; optimizer-tunable. Verify coverage, evaluate on the covered sub-window, consider loosening entry_z while keeping per-trade return above the HL fee floor; abandon if Sharpe stays ~0.
Backtest Review
- Sharpe
- -0.08
- Total return
- -9.95%
- Max drawdown
- 20.54%
- Trades
- 73
- Win rate
- 52.1%
- Profit factor
- 0.89
The iteration-3 JSON-key fix works — the funding feed now parses and the strategy trades 73 times, a measurable sample
Clean single-instrument/single-venue construction, low frequency, fee drag negligible (commission 4.2% of gross); genuinely fills the HL/long-short buckets
Drawdown contained at 20.5% — no blow-up or liquidation
Negative expectancy: total_return -9.95%, avg_trade_return_pct -0.642%, profit_factor 0.89, expectancy -$78/trade; avg_loss > avg_win
Sharpe -0.076 with CI [-0.881, 0.687] straddling zero, PSR 0.457, IR -0.79 — no edge, negative point estimate
Deteriorating: 2025 -9.5% and 2026 -0.26% with rolling Sharpe negative throughout the recent (holdout) window; loses in normal and stressed vol terciles
Zero-survivor class stack: HL single-perp directional (0/128, L82) + single-perp funding/supplementary-gated directional (L73)
Iteration History
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSD.HYPERLIQUID-1-DAY-LAST-EXTERNAL, Bars processed: 371 Diagnostics: should_enter() returned a side 0 times over 341 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSD.HYPERLIQUID-1-DAY-LAST-EXTERNAL, Bars processed: 370 Diagnostics: should_enter() returned a side 0 times over 349 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Backtest and paper results are hypothetical. Trading involves risk of loss.