Skip to content
All strategies

Strategies

Hyperliquid Persistent-Positive-Funding Short with OI Confirmation

Outcome: Abandoned

HyperliquidPersistentPositiveFundingShortOIConfirmed

Outcome Summary

This strategy aimed to short ETH perpetuals on Hyperliquid while funding stayed positive, using open-interest growth and a non-negative premium as confirmation. Over 3 iterations it never passed code verification: the Layer 3 sandbox backtest ran past the 300s limit on 833 days of hourly ETH data. Backtest review, optimization, analyst review and risk review were never reached, so the edge was never tested. The run ended as abandoned because of a performance problem in the code, with no verdict on the trading idea itself.

Hypothesis

Single-leg short ETHUSD.HYPERLIQUID perpetual strategy capturing persistent positive funding, confirmed by open-interest expansion and non-negative premium. Adapted from the FMZ source's funding-arbitrage mechanism; source_ref: FMZ 520275, Specific Strategy Ideas and Negative Rates sections.

verification_loop: sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (833 days of ETHUSD.HYPERLIQUID-1-HOUR-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).

Implementation

Single-leg short on ETHUSD.HYPERLIQUID (1h bars). Entry fires when the trailing 24 hourly HL funding prints sum to at least the full baseline accrual (>=0.00029, i.e. every hour paying shorts at about the 0.0000125/h interest floor or more), the last 3 prints are each >0.00001, open interest has grown >=0.3% over the past 6 hours (time-anchored lookup), and the Binance ETH premium index is no more negative than its structural offset (>=-0.0007). Exits when funding drops to or below 0.00001, the premium falls under the floor, the 3% stop or 6% target is hit on a bar close, or after 72 bars.

Iteration 3 fix for zero entries, measured on the data rather than guessed. (1) Over Mar-Aug 2026, the span where OI data exists, HL ETH funding never rose above its 0.0000125/h interest baseline, so the 24h sum caps at exactly 0.0003. The old 0.001 threshold was unreachable, so it is lowered to 0.00029, meaning funding was persistently positive for the whole day. (2) The Binance ETH premium index has a median of -0.00047 and is >=0 only about 1% of the time, so 'premium >= 0' blocked entries and would also have……Show moreShow less

Iteration 3 fix for zero entries, measured on the data rather than guessed. (1) Over Mar-Aug 2026, the span where OI data exists, HL ETH funding never rose above its 0.0000125/h interest baseline, so the 24h sum caps at exactly 0.0003. The old 0.001 threshold was unreachable, so it is lowered to 0.00029, meaning funding was persistently positive for the whole day. (2) The Binance ETH premium index has a median of -0.00047 and is >=0 only about 1% of the time, so 'premium >= 0' blocked entries and would also have force-exited every trade after 3 bars. It is replaced with a min_premium parameter (-0.0007, around the 10th percentile), which keeps the intent of 'premium not dislocated negative'. (3) The OI change was computed over N observations, but the OI feed mixes 5-minute and 1-hour rows, so the window was sometimes only 30 minutes. It now compares OI now against OI 6 hours earlier with supp_as_of, rejecting stale rows. A pandas dry run of the joint gate over the sandbox span gives about 76-93 entry episodes, all within Mar-Aug 2026: Binance ETH OI history starts 2026-03-23, and the gate stands flat with no price-only fallback before then. Caveat: the 150-trade pre-registered minimum is unlikely to be met on the current OI history. Because funding sat at the floor during the OI-covered period, the edge is mostly baseline carry (about 0.03%/day) plus price drift, and that may not clear the 0.2% per-trade target.

Verification Results

sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (833 days of ETHUSD.HYPERLIQUID-1-HOUR-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).

Iteration History

Verification failed (Layer 4 — QA review) [class=code_defect]: - [edge_concern] Sandbox metrics are marked unreliable; however, impact and commission costs are substantial and should be reassessed after correcting the trigger economics. - [critical] funding_threshold is 0.001% per observation, while Hyperliquid round-trip taker cost is approximately 0.09%. Three observations require only about 0.003% funding, below trading costs. The backtest engine also does not credit funding payments as cash flows, so this trigger cannot pay measured commissions. (line 21) — fix: Use a fee-aware cumulative funding threshold/holding rule whose expected funding exceeds round-trip costs, or add supported funding-payment accounting. - [warning] The min_bars_required override is flagged as shadowing the framework method. It appears deliberate, but its dispatch behavior should be confirmed. (line 38) — fix: Verify the base template invokes the subclass override or use the supported warmup mechanism.

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSD.HYPERLIQUID-1-HOUR-LAST-EXTERNAL, Bars processed: 7460 Diagnostics: should_enter() returned a side 0 times over 7454 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Outcome Summary

Supplementary lookups such as funding windows and as-of OI and premium queries should be precomputed or indexed once (sorted timestamps plus bisect, or a cache) so each bar costs O(log n), not a rescan of the full series.

After 3 iterations it was abandoned in a verification loop: the Layer 3 sandbox smoke test went over the 300s wall-clock limit on a ~20,000-bar window (833 days of ETHUSD.HYPERLIQUID 1-hour bars). The verifier's note says this usually means each bar's processing grows with the length of the history.

Short the ETHUSD.HYPERLIQUID perpetual to collect persistently positive funding, entering only when open interest was expanding and the premium was not negative (adapted from FMZ 520275's funding-arbitrage ideas).

No performance was measured: there is no backtest or optimization report, so there are no figures for return, Sharpe or trade count.

Analysis

币安资金费率套利策略统一账户版

Backtest and paper results are hypothetical. Trading involves risk of loss.