Quant for Free
Home / Analysis / Stocks-in-Play RelVol ORB
Strategy teardown · Stocks-in-Play RelVol ORB · US equities (proxy)

Does Stocks-in-Play Relative-Volume ORB survive validation?

Zarattini / SFI: trade only abnormal opening-range volume, first-bar bias, ATR-fraction stop, flat by the close.

It is the day-trading sentence that keeps coming back with academic packaging: wait for stocks that are in play, measure how loud the opening range is versus its own recent history, take the break in the direction of the first bar, use a tight ATR-scaled stop, and be flat by the cash close. Zarattini and co-authors framed that idea for the Swiss Finance Institute; an MQL5 essay later walked retail readers through an Expert Advisor version. We rebuilt the idea clean-room in Python — no MQL copied — on Alpaca SIP, with the same cost and Deflated Sharpe Ratio gauntlet as every other teardown here.

It does not clear the bar we use for a tradeable edge on this tape. That is not the same as “relative volume at the open is empty.” Our run is a proxy: RelVol ranked inside a fixed list of twenty liquid names, not a daily scan across thousands of US stocks the way the SFI paper describes. On that proxy, after site costs, both the article-like default and the Optuna “least bad” trial lose. The useful residue is where the Stocks-in-Play story still asks a real question, and which next experiment is actually worth the trial budget.

Credit. Underlying research: Zarattini, Carlo, et al., A Profitable Day Trading Strategy for The U.S. Equity Market (Swiss Finance Institute Research Paper Series No. 24-98, 16 Feb 2024). Public implementation essay we used as the rule lock: Jocimar Lopes, Low-Frequency Quantitative Strategies in MetaTrader 5 (Part 4) (MQL5 article 23226). The rule we locked is the public Stocks-in-Play RelVol ORB: eligibility on price / 14-day ADV / 14-day ATR, RelVol of the first five minutes versus the prior fourteen opening-range volumes, first-bar open/close bias, stop as a fraction of D1 ATR, flatten by 16:00 ET, optionally rank top-N by RelVol. Distinct from the published NY 15-minute Opening Range Breakout teardown (single-symbol time-window breakout) and from Session VWAP Bias (session VWAP imbalance, not opening-range RelVol). No vendor script was copied.

1 / The pitch: only trade the loud open

The pitch fits under a 5-minute chart and a morning scanner:

Sold as a catalyst / imbalance edge: overnight news hits a subset of names; abnormal opening-range volume flags institutional re-pricing; the first bar’s direction is the bias; a small ATR stop cuts noise; end-of-day exit harvests the session trend when it exists. If that sentence is true as a standalone system once you pay to trade the top RelVol names, a clean-room with 1.5 bps of friction should not need a miracle sample to show it — provided the universe matches the paper’s scan.

Paper / SFI claims (authors — not our run). The MQL5 essay summarizes the SFI study as analysing ORB across more than 7,000 US stocks (2016–2023), with a selected portfolio of 20 stocks achieving over 1,600% net performance, Sharpe 2.81, and ~36% annualized alpha versus ~198% total for passive S&P 500 over the same framing. It also states that applying a relative-volume filter (at least 100% RelVol, top 20) moved total returns from ~29% to ~1,637% in their study narrative. Treat those as paper claims. They are not numbers from our pipeline.

Our costs (site default, documented). Fees 0. Slippage 1.5e-4 (1.0 bps spread + 0.5 bps slip) — same framing as the NY ORB and Session VWAP teardowns. Event fills: stop at OR extreme (gap-through uses bar open); stop-loss at entry ± atr_stop_frac × ATR14; EOD at last RTH close. Optuna: 24 trials on relvol_threshold ∈ {1.0, 1.5, 2.0, 3.0}, atr_stop_frac ∈ {0.05, 0.10, 0.15}, top_n ∈ {3, 5, 8}, long_only on/off. Chronological 70 / 30 IS / OOS by calendar day. DSR via pipeline.metrics.

Proxy caveat (read this before the tables). True SFI-style Stocks-in-Play needs a daily RelVol scan across a wide US equity universe. We did not run that. We downloaded Alpaca SIP 5-minute bars for a fixed liquid set of twenty names and ranked RelVol inside that list. That is labeled proxy: true / universe_kind: fixed_liquid_stocks in summary.json. It is closer to “does RelVol-ORB work on mega-liquid names when you only compare them to themselves?” than to “does the full SFI scanner work?”

Universe (20): AAPL, MSFT, NVDA, AMZN, META, GOOGL, TSLA, AMD, NFLX, PLTR, AVGO, CRM, ORCL, INTC, BA, JPM, XOM, COST, SHOP, COIN. Tape span for features: 2016-01-04 → 2026-09-18 America/New_York (2,693 session days; PLTR and COIN enter later when listed). Portfolio RTH index: 210,044 bars.

2 / TEST: fixed liquid RelVol ORB, 24 Optuna trials, site costs

IS calendar days: 2016-01-04 → 2023-06-29 (1,885 days). OOS: 2023-06-30 → 2026-09-18 (808 days).

Best trial (least-negative in-sample Sharpe): relvol_threshold=2.0, atr_stop_frac=0.15, top_n=3, long_only=true.

Fixed liquid RelVol ORB · Alpaca SIP 5m · 24 trials
Best paramsRelVol ≥ 2.0×, stop 0.15×ATR, top 3, long only
In-sample Sharpe (per bar)−0.002541
Out-of-sample Sharpe (per bar)−0.014797
Deflated Sharpe (DSR)0.000000
OOS return−72.95%
OOS max drawdown−76.45%
OOS trades / win rate388 / 12.11%
OOS stopped (of trades)330

The search did not find a winner hiding in RelVol or stop width. It found the least-bad way to lose on this proxy: require louder opens (2×), widen the stop slightly (0.15×ATR), take only three names, drop the short side — still negative in-sample, still negative out-of-sample. DSR is 0.0000 against a bar we treat as about 0.95. verdict_draft.survives is false.

Default full sample (article-like: RelVol ≥ 1.0×, stop 0.10×ATR, top 5, long/short) on the same tape: 9,065 trades, win rate 9.62%, 8,137 stopped, return −100.0%, max drawdown −100.0%, per-bar Sharpe −0.030777. That is not a mysterious alpha hole — it is a tight-stop, low-hit-rate ORB on mega-caps after friction, without the paper’s full cross-sectional scanner.

RelVol ORB proxy OOS equity vs SPY buy-and-hold
Fixed liquid RelVol ORB · best Optuna trial · out-of-sample, after site costs, vs SPY buy-and-hold on the same bar index.
RelVol ORB proxy default full-sample equity
Same proxy · locked article-like defaults · full sample after site costs.

3 / The illusions this proxy is good at producing

Paper Sharpe vs our DSR. The SFI brochure numbers (Sharpe 2.81, four-digit cumulative returns) are not a license to skip costs, trial deflation, or universe honesty. Our DSR is zero on a 24-trial search whose best in-sample Sharpe was already negative. Deflation cannot rescue a peak that never got aloft.

Win rate. OOS best trial: 12.11% on 388 trades. Default full: 9.62% on 9,065. The essay notes that ORB can be profitable with a win rate below 30% when the payoff ratio is large. On this proxy, after 1.5 bps of slip and a risk budget that pays the stop often (330 of 388 OOS trades stopped on the best trial), the payoff side did not show up as a shippable equity curve.

“We traded RelVol ORB.” We traded RelVol ORB among twenty liquid names. We did not replicate a 7,000-name morning scan that surfaces the day’s true Stocks in Play. Mega-caps are often liquid without being the idiosyncratic news name the economic story wants. Calling this a full SFI replication would be the content-mill move. We are not going to.

Long-only as a hidden regime bet. Optuna dropped shorts. That is the same pattern we saw on SPY ORB cousins: the search prefers not to fight the equity premium. It still failed to get paid for the long breakouts on this window.

4 / What this does not kill (untested on purpose)

A failed DSR on a proxy universe is not a ban on Stocks-in-Play as a question. These are the next attempts we would actually run. None of the lines below have numbers attached, because this pipeline did not produce them.

  1. A real daily SIP / vendor scan. Eligibility + RelVol across a broad US equity tape (thousands of names), then top-N — the SFI framing. Until that exists here, the proxy cannot clear or kill the paper’s headline claim.
  2. News / catalyst tags. The economic rationale is overnight corporate news. RelVol alone on mega-caps is a weak stand-in. Earnings calendar, FDA, M&A flags as a second filter — untested.
  3. OR width vs ATR. Skip tiny ranges (noise) and enormous ranges (move already happened). We took every eligible RelVol day. Retail ORB variants often don’t.
  4. Fill semantics. We used stop-at-OR-extreme with gap-through at bar open, same-bar stop check, EOD at close. Limit vs stop, next-bar-only, and broker stop simulation are different clocks. Untested.
  5. Cost / size realism. Site 1.5 bps is a flat slip assumption. Name-level spread, borrow for shorts, and the essay’s 1%-risk / 4× leverage sizing vs our equal daily risk split are different P&L engines. Untested as a sensitivity grid on this slug.
  6. ORB as a feature, not a system. RelVol rank, OR bias, and ATR stop distance are features you can feed a different edge (portfolio overlay, fade of failed breaks, vol-target on loud opens). This run tests standalone “rank, break, hope until 16:00” on a fixed liquid list.

If you take one research prompt from this piece, take (1): the same clean-room rules on a true multi-name RelVol scan, with trial count and costs in the headline. That is the smallest change that still resembles the SFI story, and the one this fixed-twenty proxy structurally cannot claim.

5 / What you'd need to believe anyway

To treat Stocks-in-Play RelVol ORB as a standalone, shippable system from this run, you would need to believe some combination of:

We don’t. We also don’t believe “DSR failed, delete relative volume from your brain.” Abnormal opening activity is still where overnight information can show up in volume space. That is a reason to keep measuring — on the right cross-section. It is not a reason to ship this proxy.

6 / Verdict

Verdict · survives = false

Not a tradeable standalone edge on this proxy tape. Still a question worth running on a real Stocks-in-Play scan.

Stocks-in-Play Relative-Volume ORB, as locked from the public SFI / MQL5 rule set, was implemented clean-room and tested on Alpaca SIP 5-minute bars for a fixed liquid universe of twenty US names (2016-01-04 → 2026-09-18, 2,693 sessions). That is a proxy, not a full multi-thousand-name SIP RelVol scan. Twenty-four Optuna trials; best trial RelVol ≥ 2.0×, stop 0.15×ATR, top 3, long only. In-sample Sharpe −0.002541. Out-of-sample Sharpe −0.014797. Deflated Sharpe 0.0000. Out-of-sample return −72.95%, max drawdown −76.45%, 388 trades, 12.11% wins. Article-like defaults on the full sample printed 9,065 trades, 9.62% wins, and −100% return after site costs. It does not survive.

What we would run next, and have not: a true broad-tape RelVol scanner, catalyst tags, OR-width filters, and a cost/sizing sensitivity that matches the essay’s risk model. Opening-range relative volume is still allowed to be a feature. It is not, on this proxy evidence, a product.

Check the next claim the same way

Tool
Deflated Sharpe Ratio — 24 trials, OOS Sharpe −0.014797, DSR 0.0000
Tool
Net-vs-Gross Costs — this run’s headline used 1.5 bps slip (fees 0)
Related · Teardown
NY 15-minute ORB — same authors’ family, different object (time-window breakout vs RelVol Stocks-in-Play)
Related · Teardown
Session VWAP Bias — imbalance line, not opening-range RelVol
Learn · Module 5
The validation gauntlet — overfitting, OOS, DSR, and costs
Educational analysis, not investment advice. A methodology case study of a publicly popular Stocks-in-Play RelVol ORB day-trade rule — associated with Zarattini et al. (SFI 24-98) and a public MQL5 implementation essay, reimplemented clean-room on a proxy universe — not a recommendation to trade or avoid any strategy, parameter set, or instrument. Simulated and optimized results depend on data source, universe, session definition, costs, position mode, fill assumption, and sample window; they do not predict future performance. Paper claims are labeled separately from clean-room numbers. This run is explicitly not a full multi-thousand-name SIP Stocks-in-Play scan. Fields this run did not emit are omitted on purpose. See the full disclaimer.