A 23-year backtested comparison of six previous-day price levels — yesterday's open, close, high, low, ORB high and ORB low — added as filters to the same baseline Nasdaq ORB strategy. The best filter improved Profit Factor nearly nine times more than the worst.
Many trading strategies reference yesterday's high, low, close or open as 'important' levels — but which one actually adds the most edge? This guide presents a 23-year backtested comparison of six different previous-day constructs added to the same Nasdaq ORB baseline strategy, showing exactly how much each filter improved Profit Factor and why time-of-day-matched constructs significantly outperform daily high/low/open/close filters.
Plenty of trading strategies reference previous-day price levels — yesterday's high, yesterday's low, yesterday's close. The reasoning sounds plausible: these are "important levels" where significant volume traded, where stops cluster, where institutional decisions were made. Aligning today's trades with yesterday's structure should improve the odds.
It does — usually. But which level you pick matters far more than most traders realise.
This guide presents a 23-year backtested comparison of six different previous-day constructs added to a baseline Nasdaq ORB (Opening Range Breakout) strategy. Same instrument. Same time period. Same baseline logic. The only thing that changes between tests is the previous-day filter being applied. The goal is to isolate the effect each construct has on performance.
The headline finding: every filter improved Profit Factor, but the best one improved it nearly nine times more than the worst.
A previous-day construct is any price level taken from yesterday's session that's measurable at the moment of today's trade decision. The six tested here cover the most commonly referenced:
The first four are daily-bar levels: simple to define, available on any chart. The last two are intraday levels capturing a specific window of yesterday's session.
In Pine Script, the daily values come from a single security request:
yesterdayHigh = request.security(syminfo.tickerid, "D", high[1],
lookahead = barmerge.lookahead_off)
The ORB values are captured at the first bar of today's opening range, before today's values are reset:
if isFirstOrbBar
yesterdaysOrbHigh := orbHigh[1]
yesterdaysOrbLow := orbLow[1]
Both approaches are simple, deterministic, and easy to add to any strategy.
The test bed is a 5-minute ORB strategy running on the NAS100 (Nasdaq 100). Long entries fire when price breaks above the high of the first 15 minutes of the New York session, provided RSI is above 75 at the moment of the breakout. Entries are restricted to the window 9:45–12:45 ET. Stop loss is half the opening range; take profit is the full opening range. Position size is fixed at $100 risk per trade.
Baseline performance across 23 years of data (2003–2026):
A quick note for readers newer to systematic trading: Profit Factor (PF) is gross winning dollars divided by gross losing dollars. A PF of 1.394 means the strategy made $1.39 for every $1.00 it lost across those 2,505 trades. It's the single most important figure when evaluating a strategy because it captures whether the strategy is profitable at scale, independent of how many trades it took or how much capital you ran.
Each filter was added independently to the baseline — for a long entry to fire, today's setup had to satisfy the baseline conditions AND the additional previous-day filter being tested.
| Filter (close > yesterday's...) | Profit Factor | Trades | Win Rate | Equity | Max Drawdown | |---|---|---|---|---|---| | (none — baseline) | 1.394 | 2,505 | 41.16% | $58,253 | — | | Open | 1.421 | 1,963 | 41.62% | $48,385 | $2,132 (0.21%) | | Close | 1.405 | 2,116 | 41.35% | $50,427 | $2,947 (0.29%) | | High | 1.420 | 1,519 | 41.61% | $37,377 | $2,948 (0.29%) | | Low | 1.406 | 2,362 | 41.36% | $56,387 | $3,087 (0.31%) | | ORB High | 1.480 | 1,521 | 42.60% | $42,014 | $1,410 (0.14%) | | ORB Low | 1.491 | 1,517 | 42.78% | $42,700 | $1,309 (0.13%) |
Max Drawdown shown as worst peak-to-trough equity decline in dollars, with the same value as a percentage of the $1M test account in brackets.
Three things stand out immediately:
Which raises the obvious question: why?
The key is time-of-day comparison. Today's ORB and yesterday's ORB are both formed in the same fifteen-minute window — 9:30 to 9:45 ET. They reflect institutional positioning at exactly the same moment of two consecutive trading days, responding to the same kind of overnight context: futures movement, European session activity, pre-market news flow, macro positioning.
Comparing today's opening range to yesterday's opening range is therefore an apples-to-apples comparison. It asks a specific question: did the same kind of decision process, run a day apart, place the market higher or lower than it was placed yesterday morning?
Yesterday's daily high, by contrast, is a single number that may have been printed at any point during yesterday's session — at 9:45 in the morning, at noon, at 3:30, or right before the close. The conditions that produced it — liquidity, news flow, macro context — may bear no resemblance to the conditions in play at today's 9:30 open.
> A general principle > > When comparing across days, the most informative levels are those formed in similar contexts. Same time of day. Same kind of liquidity. Same type of participants making decisions. Filters built on this principle tend to add real signal. Filters built on arbitrary single points add noise alongside whatever signal is in there.
Profit Factor measures average per-trade economics. It tells you nothing about whether the equity curve actually behaved itself — whether the strategy spent a year underwater before it eventually got back to making money.
Calendar-year P&L is a simple and surprisingly hard test of robustness. Across the 23 full calendar years in the data (2003–2025):
| Filter (close > yesterday's...) | Losing years | Worst year | |---|---|---| | Open | 1 | 2022 (-$99) | | Close | 1 | 2004 (-$565) | | High | 3 | 2005 (-$1,279) | | Low | 2 | 2007 (-$556) | | ORB High | 0 | 2004 (+$459) | | ORB Low | 1 | 2007 (-$340) |
The same ranking as the Profit Factor table holds, but more sharply. Yesterday's ORB High filter never produced a losing calendar year across more than two decades — including 2008, 2020, and 2022, three of the most regime-disrupting years on record. The other ORB filter posted exactly one small losing year ($340 of risk) and was profitable in every other year.
The daily-bar filters are not bad on this measure, but they are visibly more variable. Yesterday's High loses in three of twenty-three years; its worst year is roughly four times worse than ORB Low's worst year.
This consistency — not the headline PF lift — is what determines whether the strategy is psychologically and financially survivable through the quiet years, and whether it stays inside a prop firm's drawdown rules during the inevitable rough patches.
Look at the results table again, but this time focus on the Equity column. The filter with the highest Profit Factor (Yesterday's ORB Low, PF 1.491) produces total equity of $42,700. The filter with a much lower Profit Factor (Yesterday's Low, PF 1.406) produces equity of $56,387 — nearly $14,000 more.
What's happening? The ORB Low filter rejects roughly 40% of the baseline's trades. Fewer trades means lower absolute profit, even when each trade is, on average, more profitable. Yesterday's Low rejects only about 6% of trades, so it keeps almost all of the baseline's profit while still nudging quality slightly higher.
This is the quality-vs-quantity trade-off every filter introduces, and it's one of the most important things to understand when designing a systematic strategy.
The right answer depends entirely on what you're optimising for:
There is no universally correct choice. There is only the choice that fits your capital, your goals, and your appetite for variance.
The numbers in this guide are specific to one strategy, one instrument, one 23-year window. They are not a recipe to copy. They are a demonstration that previous-day constructs can be measured, ranked, and chosen between with real data — rather than guessed at or assumed.
If you want to apply this to your own strategy:
The principle generalises across strategies and instruments. The specific best filter has to be discovered for each setup individually.
The analysis in this guide draws on work from my book, The Anatomy of a 5-Minute ORB Trading Strategy — a 19-chapter walk-through of building a fully systematic Nasdaq ORB strategy from scratch, validated across 23 years of real market data.
The book documents every version of the strategy, every filter that worked, every filter that didn't (three full indicator categories were tested and discarded), and the complete Pine Script code at each stage. By the end of it, you'll have a complete working strategy with a 0.13% maximum drawdown over the full 23-year period — and, more importantly, the framework to build and validate your own.
If this guide has been useful, the book is where the rest of the methodology lives.
Trust no one — including me. Validate everything yourself.
— Rob