Skip to content

View translation

BtcHl15mAsianOpeningRangeBreakoutLS

Hypotheses

Hyperliquid BTC 15-Minute Asian Session Opening Range Breakout Long-Short (3-Parameter Crabel ORB, OHLCV-Only)

Hypotheses

Classical Opening Range Breakout (Crabel 1990) long-short intraday strategy on BTC-USD perpetual at Hyperliquid using 15-minute bars. The mechanism: define each UTC trading day's 'opening range' (OR) as the high/low across the first 4 fifteen-minute bars (00:00-01:00 UTC, the start of Asian active session). For the remainder of the trading day (01:00-24:00 UTC), monitor 15-minute closes — go LONG when a close breaks above OR_high, go SHORT when a close breaks below OR_low. One round-trip max per day; reset at 00:00 UTC. This hypothesis simultaneously fills THREE of the most under-represented portfolio quotas: (a) HYPERLIQUID venue (4.6% vs 20% target), (b) short_1m_15m horizon (1.9% vs 10% target — biggest single quota gap in the entire portfolio by ratio), (c) long+short direction (12% vs ~45% target). Pure OHLCV-only — NO supplementary data dependency (avoids the 14+ session abandons from funding/liquidation infrastructure gaps). The mechanism class is structurally different from every existing portfolio entry and every recent failure: not a trend-continuation (the 4H Donchian-breakout class is now confirmed dying), not a regime-MR (no supp data available for regime gating), not a multi-filter trend (those overfit per the DOGE Triple-Filter abandon), not a Bollinger-squeeze (already filled by my BnbSpotBollingerSqueezeBreakout). ORB has 60+ years of academic validation across asset classes (S&P 500, futures, FX) and operates on a structurally robust principle: daily-range establishment + directional breakout = directional continuation. Choice of HL venue is critical: HL's 0.09% round-trip fee is the lowest among executable perp venues, making short-horizon mechanisms (where fee drag accumulates fastest) actually viable. The Asian-session anchor exploits the known timing of major Asian crypto flow initiation. Trade frequency: ~150-200 valid breakouts per year (some days the OR is never broken either direction), well above walk-forward viability. ONLY 3 PARAMETERS to avoid the 9-param overfitting trap from DOGE Triple-Filter Trend.

Hypotheses

Iteration 2 fix for `leverage_set_but_unused`: the previous code already multiplied notional by leverage, but it read the value via getattr(self.config, "leverage", 1.0) using a string literal, which the static analyzer's AST attribute-access detector does not recognize as a real reference to self.config.leverage. The minimal change replaces that with a direct `self.config.leverage` attribute access (leverage = float(self.config.leverage or 1.0)), so notional = equity * position_fraction * leverage now demonstrably consumes the 2.0 leverage and the engine's margin model agrees with the in-strategy notional. No other logic changed: the ORB state machine, the continuous normalized-band signal, entry/exit rules, and all earlier-passing layers are untouched, so no regression. 2x leverage is appropriate for this tight-stop (1% money stop) intraday breakout and is within Hyperliquid's 20x cap.

Hypotheses

Fundamentally unprofitable with a blowup risk profile — not optimizable. total_return -59.6%, profit_factor 0.41, expectancy -$452/trade, and avg_trade_return_pct -0.266% (negative) show the ORB breakout has strongly negative expectancy on BTC-HL 15m; Sharpe -2.58 with CI [-4.39, -0.65] entirely below zero and PSR 0.0016 confirm no risk-adjusted edge. A single day (2026-06-10) lost -33.8% at 138% average position, with max_drawdown 62.3% (CI to 93.7%) — the leveraged sizing is dangerous on top of the dead edge. Two independent walls: (1) no parameter tuning can flip a negative-expectancy single-name OHLCV directional breakout positive (L9/L41 zero-survivor class), and (2) Hyperliquid data spans only ~167 days, far too short to support walk-forward plus a holdout. Not worth 2 hours of optimization.

Implementation

Classical Crabel Opening Range Breakout (long+short) on Hyperliquid BTC-USD perpetual, 15-minute bars, OHLCV-only. Each UTC day's opening range is the high/low across the first 60 minutes (00:00-01:00 UTC, Asian session start). After the OR window, a 15-minute close breaking above OR_high (+buffer) goes long, below OR_low (-buffer) goes short. One round-trip per day, reset at 00:00 UTC. Exits: protective money stop, structural range-failure stop (recross of opposite OR boundary), and flat-by-end-of-day. 2x leverage wired into capital-relative sizing.

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.

Verification Results

Place a real stop_market() at entry to enforce the 1% stop intrabar, and/or lower leverage to 1.0 so a gap can't compound into a >20%-equity single-trade loss.

Verification Results

The protective stop is a bar-close PnL check (get_position_pnl_pct <= -stop_loss_pct in should_exit) evaluated once per 15m bar, so it cannot enforce the 1% loss intrabar; a fast 15m BTC bar moves several percent before close and fills at next open. With 2x leverage (1.2x notional) this produced a single -$25,846 loss (~26% of equity, 25x avg loss). Sizing math and leverage consumption are correct (2.0 within HL 20x cap), so not a code defect, but the tight-stop thesis isn't deliverable with a bar-close check at 2x.

Verification Results

Confirm full backtest uses all available HL 15m history; treat promotion cautiously given the short span.

Verification Results

Sandbox spans only data_days=140, near the available HL BTCUSD 15m history. 133 trades is usable but 140 calendar days is a thin, single-regime window for walk-forward (3 IS + holdout). Not data-absence (data exists, signal fires), but OOS evidence will be cramped and regime-narrow.

Backtest Review

Mechanism fires cleanly (133 signaled, 133 submitted, no drops) — not a code/data-plumbing bug

Backtest Review

OHLCV-only, no supplementary-feed dependency

Backtest Review

Decisive net loser: total_return -59.6%, profit_factor 0.41, expectancy -$452/trade over 133 trades

Backtest Review

Negative per-trade edge: avg_trade_return_pct -0.266% (below any venue floor)

Backtest Review

Sharpe -2.58 with CI [-4.39, -0.65] entirely negative; PSR 0.0016; information_ratio -3.9

Backtest Review

Catastrophic tail: -33.8% in a single day (2026-06-10), largest_loss -$26,268, avg_position_pct 138% — reckless leveraged sizing, max_drawdown 62.3% (CI to 93.7%)

Backtest Review

Only 167 days of Hyperliquid data (~5.7 months) — far too short for walk-forward + holdout

Backtest Review

Single-name OHLCV directional breakout — near-zero-survivor class (L9/L41)

Iteration History

Verification failed (leverage_set_but_unused): config sets leverage=2.0 but the strategy never references leverage in sizing. Size positions on it — notional = equity * fraction * leverage / price (read self.config.leverage) — or set leverage=1.0. As written the leverage is inert and the backtest is identical to 1x.

Iteration History

data_unavailable: backtest data for BTCUSD.HYPERLIQUID could not be collected after 5 retries: - bars (bar_type=BTCUSD.HYPERLIQUID-15-MINUTE-LAST-EXTERNAL): got 0, needed 200, or 14+ days span The data layer (not the strategy) is the blocker — re-evaluate this hypothesis once collection is fixed / the symbol is backfilled.
Strategy report

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