Skip to content

View translation

LinkUsSessionOpeningRangeBreakoutLS

Hypotheses

LINK US-Session Opening-Range Breakout — Long-Short, Single-Instrument Intraday: Fade-Proof Break of the First 90-Minute Range After the US Cash Open, Measured-Move Target, Hard OR Stop, Flat by End of Day (BINANCE LINKUSDT USD-M, 30m Bars, Session-Anchored, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument INTRADAY strategy on LINKUSDT.BINANCE USD-M perp built on a mechanism absent from the portfolio's dead set: the SESSION-ANCHORED OPENING-RANGE BREAKOUT (ORB), tied to a specific real liquidity event — the US cash open (13:30 UTC ≈ 08:30 ET), when US macro releases and equity-open flow reach crypto and often set the decisive directional move of the day. It is NOT any saturated/failed family: not 4H+1D momentum-confluence (0/213), not a Donchian/TSMOM trend-ride (the trend-clone deaths hold for days and blow up drawdown), not the AVAX throwback / SOL sweep reversals already pending, not funding/OI-gated (L70/L71), not options (unreliable/artifact in the sandbox), not Polymarket/liquidation (uncollectable/short feeds, L76), not a multi-instrument basket (0/127). It uses ONLY OHLCV on multi-year Binance history. It answers the two structural killers by construction: (1) L19 DRAWDOWN BREACH — every trade has a HARD stop at the opposite side of the opening range AND is force-flat by end of day, so there is NO overnight/multi-day exposure and per-trade loss is tightly bounded, making a >50% drawdown structurally impossible; (2) FEE GRAVEYARD — it only fires on a clean break of a session range with a measured-move target, so per-trade capture (a trend-day expansion of ~1-2.5% on a high-beta alt) is many times the 0.10% round trip, unlike sub-fee scalps. One decision per day keeps cadence moderate but the multi-year history yields a large, measurable sample (no significance trap). Long-short (fills the starved 14.3% bucket), 3 tunable parameters.

Hypotheses

Implements the hypothesis exactly: session-anchored (13:30 UTC = US cash open) 90-minute opening range on 30m bars, fade-proof close-based break, measured-move target, hard stop at the opposite OR side, force-flat by end of day, long-short, single instrument, pure OHLCV, 3 tunables. The two structural killers are answered by construction -- both protective legs are venue-managed bracket orders (per-trade stop_loss_pct/take_profit_pct are computed from the day's OR width and written into the bracket parameters immediately before submission, so they fire intra-bar rather than waiting for a 30m close), risk per trade is capped at risk_pct of CURRENT equity, and nothing is held overnight, which makes a deep drawdown structurally hard; and the min_or_range_pct gate plus the measured-move target keep expected capture well above the ~0.10% round trip. calculate_signal returns a continuous decision variable EVERY bar -- normalised location inside the most recent completed opening range, (close - OR_mid)/(0.5 x OR_width), +-1 at the edges -- and should_enter thresholds it in the same units (1 + 2 x breakout_buffer); a warmup fallback seeds the reference range from the last 90 minutes of bars until the first real session range completes, so the signal is never frozen, while entries still require a genuine completed session OR. All clock logic is a pure function of bar.ts_event (UTC minute-of-day, day index, weekday), never a process-relative counter, so restarts/replays/backtests agree. Venue: BINANCE USD-M futures because the strategy goes short and uses leverage 2.0, which is genuinely consumed -- position_size reads self.config.leverage in the notional cap (equity x 0.5 x 2.0 = 1.0x equity notional, above what a 1x account could hold). Honest caveat for the analyst: an offline dry-run of this exact entry/exit logic on the full LINKUSDT 30m history (2020-2026, ~1200 trades, ~13 trades per 30-day window so there is no zero-trade risk) shows the mechanism is only marginally profitable net of fees (~+0.05%/trade at these defaults, ~66% win rate), and the full-range measured move (target_r = 1.0) is empirically WORSE than a half-range target -- so I set target_r's default to 0.5 while keeping 1.0 inside the declared search bounds; the per-trade edge may well sit under the 0.15% futures floor.

Hypotheses

net_loser_no_edge_ohlcv_breakout_clone: LINK US-session ORB is a net loser over a well-measured 1207-trade / 6.4-year sample — profit_factor 0.906 (<1.0), total_return -22.1%, expectancy -$18.35/trade, Sharpe 0.023 with CI [-0.725, 0.565] straddling zero and information_ratio -0.57 (negative alpha). It is negative in every year except the 2020 early-cycle (+5.2%), so the mechanism has no persistent edge net of costs — this is decay, not a cliff or a tuning gap. It is the single-instrument pure-OHLCV directional-breakout family (0/213 survival, L9/L41/L63); the session-anchoring + hard-OR-stop bounded drawdown to 32.4% but bounded it around a NEGATIVE expectancy, so the structural risk fix does not create edge. Modeled market impact is 202.8% of gross PnL (capacity ~$24k), so it is real only at toy scale. With 3 tunables a 225-trial sweep would curve-fit the lone positive 2020 year and die at DSR/holdout, exactly as prior breakout clones did. No parameter change can turn a 6-year net loser positive — not worth the 2-hour optimization run.

Implementation

LINKUSDT.BINANCE USD-M perp, 30-minute bars, long-short intraday opening-range breakout anchored to the US cash open. Every weekday the bars stamped 13:30/14:00/14:30 UTC (the 90 minutes after 08:30 ET) define the day's opening range (OR). From 15:00 UTC, over the next entry_window_bars bars, the first 30m CLOSE that is decisively beyond an OR edge (by breakout_buffer x OR width -- a wick or a marginal poke does not qualify) is traded in the direction of the break, at most once per day. The trade is submitted as a venue-managed bracket: market entry + STOP_MARKET hard stop at the OPPOSITE side of the opening range + LIMIT measured-move target target_r x OR width from entry, both derived from that day's range and both firing INTRA-BAR. should_exit() only handles the session/time exit (force flat at 23:00 UTC and on UTC day rollover), so no position is ever carried overnight. Sessions whose OR is thinner than min_or_range_pct of price are skipped as noise that cannot clear fees. Size is risk-anchored (equity x risk_pct / stop distance) and capped at equity x max_notional_frac x leverage, so a stopped trade costs ~0.75% of current equity whatever the range width and losses cannot compound into size. Three tunables (breakout_buffer, entry_window_bars, target_r) with clamps mirrored in _param_bounds; the 13:30 UTC anchor and 90-minute range are fixed module constants and deliberately not searchable.

Verification Results

Analyst should probe whether higher target_r or a partial-range stop improves risk-adjusted return.

Verification Results

Structural reward:risk asymmetry — hard stop sits at the full opposite-OR side while the measured-move target is only target_r*width (0.5×width at defaults), giving a payoff ratio well below 1.0. Result: high win rate (0.717) but fat-tail losses (avg_loss 553 vs avg_win 237, kurtosis 20.6), negative sandbox Sharpe (-0.34, CI straddling zero), PF 1.08. avg_trade_return_pct 0.34% still clears the 0.15% fee floor, so this is an edge concern for the analyst, not a correctness defect.

Verification Results

Backtest-review analyst should confirm per-trade edge holds above the fee floor across full multi-year history.

Verification Results

Developer's own caveat notes an offline dry-run shows only marginal net-of-fee profitability (~+0.05%/trade, possibly under the 0.15% floor). Sandbox reads 0.34% on one 347-day slice with negative Sharpe — unresolved edge question, not a code fault.

Backtest Review

Large, well-measured sample (1207 trades / 6.4 years) — no significance trap

Backtest Review

Drawdown genuinely bounded by construction (hard OR stop + flat-by-EOD): max_dd 32.4% avoids the L19 >50% breach

Backtest Review

Clean session-anchored implementation; entries fired as designed (1207 signaled = 1207 submitted, no plumbing bug)

Backtest Review

Net loser: profit_factor 0.906 (<1.0), total_return -22.1%, expectancy -$18.35/trade

Backtest Review

No risk-adjusted edge: Sharpe 0.023 with CI [-0.725, 0.565] straddling zero; information_ratio -0.57 (negative alpha)

Backtest Review

Negative in EVERY year except the 2020 early-cycle (+5.2%): 2021 -9.1, 2022 -6.8, 2023 -2.9, 2024 -7.8, 2025 -2.2, 2026 -0.2 — decay, not a persistent edge

Backtest Review

Single-instrument pure-OHLCV directional breakout family (0/213 survival, L9/L41/L63) — the ORB gate adds no robustness the deflation can't strip

Backtest Review

Market impact 202.8% of gross PnL, capacity ~$24k — deployable only at toy scale even if the sign flipped

Outcome Summary

LinkUsSessionOpeningRangeBreakoutLS tried to escape the breakout graveyard by anchoring an opening-range breakout to a real liquidity event — the 13:30 UTC US cash open — with a measured-move target, a hard range stop, and no overnight carry to guarantee bounded drawdown. The implementation was clean and the sample large (1,207 trades over 6.4 years), and drawdown was indeed capped at 32.4%, but the strategy lost money overall (PF 0.906, -22.1%, Sharpe ~0.02) and was negative in every year except 2020. The analyst noted the risk controls bounded losses around a negative expectancy rather than creating edge, and that market impact at 202.8% of gross PnL made it viable only at toy scale. As another net-loser member of the 0/213 OHLCV breakout family, it was abandoned at backtest review without spending an optimization run.

Outcome Summary

Structural risk controls (a hard opposite-range stop and end-of-day flattening) successfully bound drawdown but cannot manufacture edge; anchoring an OHLCV breakout to the US cash open does not survive costs, and an edge present only in the 2020 early-cycle year is decay, not a persistent effect.

Outcome Summary

It was abandoned at the pre-optimization BACKTEST_REVIEW gate as a net-loser OHLCV breakout clone: the mechanism has no persistent edge net of costs (decay, not a tuning gap), the structural risk controls merely bounded drawdown around a negative expectancy, and it belongs to the single-instrument pure-OHLCV directional-breakout family (0/213 survival). A 225-trial sweep would only curve-fit the lone positive 2020 year and die at DSR/holdout, so it was judged not worth the optimization run. Optimization, full analysis, and risk review were never reached.

Outcome Summary

A long-short, single-instrument intraday opening-range breakout on LINKUSDT.BINANCE USD-M perp (30m bars) that defined the first 90-minute range after the 13:30 UTC US cash open and traded a decisive break of it with a measured-move target, a hard stop at the opposite range edge, and a force-flat-by-end-of-day rule to bound risk.

Outcome Summary

Over a large, well-measured sample (1,207 trades / 6.4 years) it was a net loser: profit factor 0.906, total return -22.1%, expectancy -$18.35/trade, Sharpe 0.023 with CI [-0.725, 0.565] straddling zero, and information ratio -0.57. The drawdown was genuinely bounded to 32.4% by construction, but it was negative in every year except the 2020 early-cycle (+5.2%), and modeled market impact was 202.8% of gross PnL with capacity ~$24k.
Strategy report

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