STRATEGY LIBRARY

Opening range breakout strategy for US stocks

Contents
An opening range breakout strategy for US stocks. The first minutes of the session set a high and a low; entering on a clean break of that high with above-normal turnover avoids most of the fake-outs that make breakout trading frustrating.

1. The rule

# BUY — break of the opening range, with turnover confirmation if HhmmSs >= 93500 and Price > HighestPrice(300) and TradeAmount > AvgTradeAmount(300) * 3: Buy()# SELL if ProfitPct >= 1.5 or ProfitPct <= -0.7 or HoldTime >= 900: Sell()

2. Why these conditions

LineWhat it asksWhy
HhmmSs >= 93500Is it past 09:35 ET?The first five minutes are not a range yet — there is nothing to break out of.
Price > HighestPrice(300)Above the 300-tick high?That high is the range being broken.
TradeAmount > AvgTradeAmount(300) * 3Is this print three times the recent average?A break on normal turnover is drift, not a breakout.
The turnover multiple is compared against the symbol's own recent average rather than a fixed dollar figure. An absolute threshold passes constantly on a heavily traded name and never on a thin one, which is the opposite of what a surge filter is for.

3. When it fails

It fails on gap-and-fade mornings. Price clears the high, the buyers were the gap chasers, and the move reverses inside a minute. The time exit is what saves you there, not the stop. It also fails in a quiet market where the high being broken is three cents above the average price. Nothing in these conditions measures how far the move has already travelled, so a three-cent break and a fifty-cent break look identical to the code.

4. What the round trip asks of it

Opening range breakout: the exit block drawn to scale, and the break-even win rate before and after measured trading costs
Opening range breakout: the exit block drawn to scale, and the break-even win rate before and after measured trading costs
The 1.5% target against a 0.7% stop looks like it only needs to be right a third of the time. It does — if trading were free. We measured what a $5,000 market order actually pays on these names: about 38 basis points one way, roughly 0.75% round trip (what day trading a US stock really costs). Put that in and the break-even win rate goes from 32% to 66%. That is not an argument against the strategy. It is an argument for taking the opening range seriously as a selection problem: the break has to be big enough that 0.75% is a small share of it. It is also why the opening half hour, despite the wide spreads, is still the window where the typical minute covers its own cost — see the opening 30 minutes is the easiest day trading window.

5. What to change first

Try the lookback window before anything else. HighestPrice(300) is five minutes of history; at 900 it becomes a much rarer, larger breakout — and a larger break is exactly what makes the cost above tolerable. Change one number, keep the rest, and compare trade count as well as result. A filter that improves the average by cutting you to four trades has not taught you anything. Run it on your own recordings first: how to backtest a day trading strategy on US stocks. Every factor used here is defined in the day trading indicators and factors reference.

Educational template for research and backtesting. Not investment advice and not a signal service.

Related reading

← All strategy library

Originally published by TraderWe on August 4, 2026. You may quote and link to this page. Republishing the full text without a link back to the original is not permitted.

3 replies

SlowSwing_Sam· Aug 2026 ago
The 15 minute hold limit is longer than my average decision time and shorter than my average lunch, so I'll pass, but nice write up. Some of us just set an alert and go water the plants.
H
HalfKelly· Aug 2026 ago
Worth noting what that 1.5 / -0.7 pair implies: you need roughly 32% winners just to break even before commissions and slippage, and the 900 second timeout adds a third bucket of scratch-ish exits that eats into that. So when you backtest 20 sessions, log the three exit reasons separately — target, stop, timeout. If the timeout bucket is big and slightly negative, the edge isn't in the breakout, it's in whether you sized it small enough to survive the chop.
P
PremarketPete· Aug 2026 ago
- add a liquidity filter, 3x average on a thin name is two prints - skip earnings-day and known-event days entirely, opening range is meaningless there - log the opening gap size, breakouts behave differently after a big gap - 09:35 is a hard start but the range needs a defined end too, otherwise HighestPrice(300) just trails all morning
Sign in to reply →