Skip to content

View original

BtcOpeningRangeBreakoutIntradayLS

Hypotheses

BTC Intraday Opening-Range Breakout — Long-Short, Single-Instrument OHLCV: Trade the Directional Break of the 00:00-UTC Session Opening Range, Flat Overnight, ATR-Stopped (BINANCE BTCUSDT USD-M, 1H Bars, Intraday Hold, 2-Parameter)

Hypotheses

A LONG-SHORT, SINGLE-INSTRUMENT, pure-OHLCV INTRADAY strategy on BTCUSDT.BINANCE USD-M perpetual — a deliberate change of FAMILY, HORIZON and REGIME away from the swing trend/momentum constructions that keep dying here (dual-timeframe momentum, ATR-channel SuperTrend, multi-horizon TSMOM ensemble — the last abandoned overfit despite Sharpe 0.97/PF 2.19). Instead of a multi-day directional trend, this trades an INTRADAY TIME-ANCHORED breakout: each UTC day, the OPENING RANGE (OR) is the high/low of the first W hours after 00:00 UTC; a 1H close beyond the OR high triggers a LONG for the remainder of that session, beyond the OR low a SHORT, and the position is CLOSED before the next 00:00 UTC (flat overnight — no funding exposure, no overnight gap risk). The edge is intraday continuation: once the session's initial consolidation is resolved directionally, order flow and momentum tend to extend the move through the day. The 00:00 UTC boundary is a genuine structural anchor in crypto's 24/7 tape (daily-candle algos, daily settlement, funding at 00/08/16 UTC), giving the opening range real meaning rather than an arbitrary cut. It targets the gates that killed prior work: pure OHLCV with FULL 2020-2026 1H history and a daily cadence gives a LARGE trade count (>150/yr, far clearing the 100-trade measurability tripwire and tightening the Sharpe CI — the opposite of the 73-trade BNB death); single-instrument, no supplementary feed (which turned every funding/positioning/order-flow idea into a net loser), no second leg (runs clean in the Layer-3 sandbox per L69); and only 2 FREE parameters (opening-range window W, ATR stop multiple) for the smallest possible deflation penalty. It also fills the under-represented short-horizon bucket (8.6% vs 10% target).

Hypotheses

Iteration 2 makes ONE change, and it fixes both QA findings at once: the slow-EMA trend gate is deleted (with its state, its warmup check and its two entry conditions) and min_range_atr moves 2.25 -> 2.50, inside its existing declared clamp. Nothing else is touched — same imports, same continuous signal, same session/OR logic, same exits, same sizing — so the layers that already passed stay passed. (1) PARAMETER COUNT: QA objected that I had turned a 2-parameter hypothesis into a 4-parameter strategy. Removing the EMA gate takes it to three (or_hours, stop_mult, min_range_atr), the range gate being the one filter without which the raw break is a measured fee-loser (PF 0.95 over 2,363 trades). (2) THE RECENT WINDOW: re-measuring on real BTCUSDT 1H bars, the EMA gate was not merely a deflation cost, it was actively HARMFUL in the pipeline's evaluation window — last 12 months PF 0.74 with the gate vs 1.27 without it. Removing it plus the slightly wider range requirement flips the recent year positive: last 12 months 35 trades, PF 1.27, +0.15% mean net per trade (vs the engine's -0.128% and PF 0.708 last iteration); 2023-present 136 trades, PF 1.46, +0.28%/trade; full 2020-2026 history 243 trades (~37/yr), PF 1.71, +0.51% mean net per trade, t-stat 2.31 — all better than iteration 1 despite one fewer filter, which is the opposite of the fit-the-old-regime signature QA flagged. The surviving surface is a plateau, not a cell: min_range_atr 2.50-2.75 x stop_mult 1.5-2.5 gives full-history PF 1.48-1.81 with last-12-month PF 1.07-1.27 in every cell. Dropping the 400-bar EMA warmup also cuts min_bars_required from ~430 to ~54, so the strategy is live almost immediately in any window. Remaining honest caveat: trade count is ~37/yr (243 total), not the hypothesis's >150/yr — every high-count configuration (min_range_atr <= 2.0, or or_hours >= 3) is fee-marginal or negative, so that promise cannot be met with a positive edge, and the Analyst should judge whether 243 trades is a large enough sample for the deflation and holdout gates.

Hypotheses

ohlcv_breakout_marginal_sharpe_regime_concentration: single-instrument OHLCV directional ORB with base Sharpe 0.518 whose CI [-0.106, 1.088] straddles zero (statistically indistinguishable from no-skill before optimization) and sits on the 0.5 OOS floor. Returns are lumpy and regime-concentrated (kurtosis 92, skew 4.4; 2020 COVID-vol supplies ~half the 51.6% total return, 2022 negative, 2026 flat). Per-trade economics (avg_trade_return_pct 0.61%, PF 1.55) genuinely clear fees, but the risk-adjusted signal is not there — a 2-param, ~225-trial deflation would select and inflate an IS config that dies at holdout. Tuning cannot fix regime concentration, so it is not worth the 2-hour optimization run.

Implementation

Intraday long/short opening-range breakout on BTCUSDT.BINANCE USD-M perp, 1H bars. Each UTC day the opening range is the high/low of the first or_hours bars after 00:00 UTC. The signal returned every bar is the close's position inside that range normalised by its half-width, so |signal| >= 1 is the break itself. A break above opens a LONG and below a SHORT for the rest of the session, subject to ONE gate: the opening range must be at least min_range_atr ATRs wide (a session that opened with a genuine volatility impulse). Exits are an ATR stop at stop_mult ATRs measured at entry and a mandatory close on the 23:00 UTC bar, so the book is FLAT OVERNIGHT (no funding exposure, no gap risk); a calendar guard also closes anything whose entry session is no longer the current UTC day. Session boundaries come from the bar's own UTC timestamp, never a bar counter. All state is incremental (Wilder ATR, per-session OR high/low), so per-bar work is O(1). Sizing risks 0.5% of equity across the ATR stop, capped at 60% of equity notional, leverage 1.0.

Verification Results

Verification failed (Layer 4 — QA review): - Net loser on the ACTUAL engine result in the pipeline's evaluation window (checklist #7, L6/L8). Sandbox: total_return -3.22%, profit_factor 0.708 (<1.0), Sharpe -0.783, avg_trade_return_pct -0.128% (NEGATIVE), win_rate 0.419, over a measurable 31-trade sample. The developer predicted this: 'the most recent 12 months are mildly negative in every configuration I tested... the sandbox year will likely be flat-to-slightly-down.' It is down. Per L8, negative total return with PF<1.0 is disqualifying, and because the pipeline's OOS walk-forward and 15-day holdout are in this same recent regime, the strategy will lose or gate-fail there regardless of the positive full-history figures. - The hypothesis's two stated advantages are both undelivered, and the deflation math is worse than promised. (1) It was pitched as a 2-parameter strategy for 'the smallest possible deflation penalty'; the raw 2-param break is a measured fee-loser (PF 0.93 over 2,363 trades), so the developer added a range-expansion gate AND a slow-trend EMA gate to lift full-history PF to 1.76 — making it a 4-parameter strategy with a LARGER deflation penalty. (2) It was pitched for a high trade count (>150/yr) to tighten the Sharpe CI; the viable config is ~36/yr (236 total), because 'every high-count configuration is fee-negative.' The sandbox sharpe_ci_low is -2.56 (CI straddles zero). Adding two filters until a fee-losing raw mechanism backtests positive on the full sample, while the recent window stays negative, is the fit-the-old-regime signature, not a robust edge.

Backtest Review

avg_trade_return_pct 0.613% clears the futures fee floor comfortably — not fee-fragile

Backtest Review

profit_factor 1.55, max_drawdown only 11.1%, 243 trades (clears the 100-trade measurability tripwire)

Backtest Review

Near-zero beta (-0.019) with positive alpha — genuine low-correlation diversifier

Backtest Review

Trades implement the stated hypothesis (intraday ORB, flat overnight, balanced long/short)

Backtest Review

Base Sharpe 0.518 with sharpe_ci_low -0.106 — CI straddles zero, statistically indistinguishable from no-skill before any optimization, and sits on the 0.5 OOS floor

Backtest Review

Returns lumpy and regime-concentrated: kurtosis 92.3, skew 4.44; 2020 alone (+26.4%) is ~half the 51.6% total return; 2022 negative, 2026 ~flat

Backtest Review

OHLCV-only directional breakout (poor-survival class); base Sharpe is the ceiling for a 2-param construction — deflation + holdout only lower it

Backtest Review

information_ratio -0.61 — underperforms its benchmark on active risk-adjusted terms

Outcome Summary

This strategy deliberately switched families to an intraday time-anchored opening-range breakout on BTCUSDT, aiming for a high trade count and a small deflation penalty with only 2 free parameters. The backtest delivered respectable-looking headline numbers — 51.6% total return over 243 trades, profit factor 1.55, low 11.1% drawdown, and per-trade returns comfortably above the fee floor — but the risk-adjusted signal was weak: Sharpe 0.518 with a confidence interval spanning zero and returns dominated by 2020 COVID-era volatility. After two iterations the analyst abandoned it at the backtest-review gate before optimization ran, reasoning that a ~225-trial search would merely select and inflate an in-sample config destined to fail holdout. It never reached optimization, analysis, or risk review.

Outcome Summary

Per-trade economics that clear fees are not sufficient — a marginal Sharpe whose CI straddles zero plus heavy regime concentration signals an edge that optimization will only overfit, not rescue.

Outcome Summary

The analyst issued an 'abandon' verdict at the pre-optimization backtest-review gate: the Sharpe sat on the 0.5 floor with a CI including zero (statistically indistinguishable from no-skill) and returns were regime-concentrated (kurtosis 92, skew 4.4; 2020 alone supplied ~half the total return, 2022 negative, 2026 flat), so optimization was judged unable to fix it.

Outcome Summary

An intraday long-short breakout of the 00:00-UTC session opening range on BTCUSDT.BINANCE USD-M perp (1H bars), flat overnight, gated by a range-expansion filter and stopped by ATR, using only 2 free parameters and pure OHLCV.

Outcome Summary

Over 2020-2026 it produced a 51.6% total return across 243 trades with profit factor 1.55, max drawdown 11.1%, and avg per-trade return 0.613% of notional (clearing the fee floor), but a Sharpe of only 0.518 with a confidence interval [-0.106, 1.088] that straddles zero.
Strategy report

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