Tested by BacktestingMax
First hour (initial balance) breakout backtest on NQ and ES futures
Does the first hour (initial balance) breakout work on NQ and ES futures?
Not reliably. We tested MNQ and MES, the micro contracts of the Nasdaq 100 and S&P 500 futures (NQ and ES), on 5-, 15- and 30-minute charts. All 6 tests made money from 2020 to 2025, after trading costs. But only 2 made money in both 2020–2023 and 2024–2025: MES on the 5- and 30-minute charts. MNQ lost money in 2024–2025 on all three charts. The initial balance (IB) is the price range of the first hour of the New York stock market session, 09:30 to 10:30. The strategy buys when a candle closes above the IB, and sells short (sells first, to profit if price falls) when one closes below it. The stop-loss is at the middle of the IB, and trades close by 16:00. Each test started with $50,000 and risked 1% of the balance per trade. The account grew by 34.3% to 40.2% on MNQ and by 33.6% to 60.6% on MES, depending on the chart. We also tested YM (Dow) and RTY (Russell 2000) futures, which skipped most days. None of three common changes clearly did better. The same rules on the first 15 minutes (09:30 to 09:45) made more money than the first hour in 7 of 8 tests on the 5- and 15-minute charts.
12 backtests 2020–2025 Trading costs included Tested 2 November 2026
Where it worked 12 backtests- Made money
- 12 of 12 tests, with the basic rules
- Made money in both periods
- 5 2020–2023 and again 2024–2025
- Best backtest
- +61% MES (Micro S&P 500), 5-minute chart: account growth 2020–2025
- With a take-profit at a 100% IB extension
- 4 tests made money in both periods, compared with 5 with the basic rules
Made money in both periods
- MES (Micro S&P 500), 5-minute
- MES (Micro S&P 500), 30-minute
- YM (Dow futures), 15-minute
- YM (Dow futures), 30-minute
- RTY (Russell 2000 futures), 15-minute
The results
Results on every market
Each box shows one backtest of the initial balance breakout with the basic rules, from 2020 to 2025, after trading costs: the % result, and a small chart of the account balance. The solid line is the account balance and the dashed line is the starting balance. Green results made money; red results lost money. Under each result: whether it made money in both 2020–2023 and 2024–2025, or passed all four of our checks (see "How a test passes" further down).
| Market | 5-minute | 15-minute | 30-minute |
|---|---|---|---|
| MNQ (Micro Nasdaq 100) | +34% Made money overall, lost in one period | +40% Made money overall, lost in one period | +35% Made money overall, lost in one period |
| MES (Micro S&P 500) | +61% Made money in both periods | +34% Made money overall, lost in one period | +59% Made money in both periods |
| YM (Dow futures) | +25% Made money overall, lost in one period | +17% Made money in both periods | +38% Made money in both periods |
| RTY (Russell 2000 futures) | +7% Made money overall, lost in one period | +39% Made money in both periods | +30% Made money overall, lost in one period |
All the numbers, test by test
| Market | Chart | Trades | Win rate | Profit factor | Result | Max drawdown | 2020–2023 | 2024–2025 | Monte Carlo drawdown | Trading costs |
|---|---|---|---|---|---|---|---|---|---|---|
| MNQ (Micro Nasdaq 100) | 5-minute | 1,399 | 45.6% | 1.04 | +34.3% | −27.4% | +45.1% | −7.4% | −41.8% | $10,856 |
| MNQ (Micro Nasdaq 100) | 15-minute | 1,349 | 46.8% | 1.06 | +40.2% | −28.5% | +55.4% | −9.8% | −37.7% | $10,010 |
| MNQ (Micro Nasdaq 100) | 30-minute | 1,289 | 48.7% | 1.06 | +35.2% | −24.4% | +39.6% | −3.2% | −33.6% | $8,531 |
| MES (Micro S&P 500) | 5-minute | 1,435 | 41% | 1.06 | +60.6% | −38.3% | +42.0% | +13.1% | −47.4% | $37,975 |
| MES (Micro S&P 500) | 15-minute | 1,402 | 43.2% | 1.04 | +33.6% | −36.3% | +42.0% | −5.9% | −45.0% | $31,670 |
| MES (Micro S&P 500) | 30-minute | 1,345 | 44.5% | 1.07 | +58.7% | −33.9% | +45.7% | +8.9% | −39.4% | $30,610 |
| YM (Dow futures) | 5-minute | 585 | 38.1% | 1.09 | +24.8% | −19.6% | −1.2% | +26.3% | −31.6% | $6,240 |
| YM (Dow futures) | 15-minute | 561 | 41.2% | 1.07 | +17.1% | −22.2% | +10.5% | +5.9% | −29.2% | $6,040 |
| YM (Dow futures) | 30-minute | 538 | 43.9% | 1.16 | +37.9% | −14.5% | +23.7% | +11.5% | −23.4% | $5,940 |
| RTY (Russell 2000 futures) | 5-minute | 589 | 42.1% | 1.03 | +7.4% | −31.6% | +27.7% | −15.9% | −29.8% | $6,240 |
| RTY (Russell 2000 futures) | 15-minute | 554 | 46% | 1.18 | +38.5% | −12.6% | +27.2% | +8.9% | −20.0% | $5,780 |
| RTY (Russell 2000 futures) | 30-minute | 520 | 45.2% | 1.14 | +29.6% | −15.8% | +34.5% | −3.6% | −19.1% | $5,460 |
Profit factor is the money won divided by the money lost. Above 1 means the test made money. Max drawdown is the biggest fall from the highest balance. 2020–2023 and 2024–2025 show the result in each period on its own. Monte Carlo drawdown: we shuffled the trades into a random order 1,000 times; in 95% of those runs, the worst drawdown was this number or less. Result is the change in the account, with the risk of each trade set to 1% of the account at that time.
The account balance
The best test and the middle test
What we found
What the 12 backtests show
With the basic rules, all 12 tests made money from 2020 to 2025, after trading costs: from +7.4% (RTY, 5-minute chart) to +60.6% (MES, 5-minute chart). But the profit factor (the money won divided by the money lost) was only 1.03 to 1.18. So in every test, the money won was at most 18% more than the money lost. On MNQ and MES, the biggest fall from the highest balance was 24.4% to 38.3%. Trading costs were a big part of the result: on MES, they took 51% to 65% of what the trades made before costs. Only 5 tests made money in both 2020–2023 and 2024–2025: MES on the 5-minute and 30-minute charts, YM on the 15-minute and 30-minute charts, and RTY on the 15-minute chart. None of them passed all four of our checks (see 'How a test passes' below). In 2024–2025, their profit factor was 1.04 to 1.17, below the 1.2 that the check needs. There is no take-profit, so every winning trade was still open at 16:00. Of the 11,566 trades in the 12 tests, 41.3% hit the stop-loss at the middle of the IB. The other 58.7% were still open at 16:00, and 75.0% of those made money.
With the same rules, the high and the low of the first 15 minutes (09:30 to 09:45) made more money than the first hour in 7 of 8 tests. With the 15-minute range, a breakout counts from 09:45. We could only compare the 5-minute and 15-minute charts: on the 30-minute chart, the first candle ends at 10:00, after the 15-minute range is over. The table 'The first hour against the first 15 minutes' below shows every test. With the 15-minute range, all 8 tests made money in both 2020–2023 and 2024–2025, compared with 3 of 8 with the first hour. On MNQ, the 15-minute range made +255.6% (5-minute chart) and +114.7% (15-minute chart), compared with +34.3% and +40.2%. The 15-minute range is smaller, so the stop-loss at its middle is closer to the entry. With the same 1% risk, each trade used more contracts. On MNQ and MES, more trades hit the stop-loss: 57.0% to 69.5%, compared with 38.2% to 48.2%. But the winning trades were bigger. We measure them in R: 1R is 1% of the account at the time of the trade. That is the amount each trade was sized to lose at its stop-loss, before trading costs. A trade opens at the next candle's open and pays trading costs, so 1,018 out of 11,566 trades lost a little more than 1R, at most 1.2R. On MNQ and MES, the average winning trade was 1.6R to 2.7R, compared with 0.9R to 1.4R. In 6 of the 8 tests, the 15-minute range also had a bigger fall from its highest balance.
On narrow days, price broke out on both sides of the first hour about twice as often. On 3 of the 4 markets, price did not go further past the IB in points. The IB comes from Market Profile, a way of charting how much time price spent at each price level. Market Profile traders often say that a narrow IB leads to a strong move later in the day. We called a day narrow when its IB was smaller than the average IB of the previous 20 trading days. By this measure, 57% to 59% of the days were narrow, because a few very wide days raise the average. On narrow days, price broke out of the IB a little more often: on 94.1% to 97.5% of them, compared with 84.7% to 93.6% of the other days. But on 14.4% to 26.0% of the narrow days, price broke out on both sides, first on one side and later on the other. On the other days, that happened on 5.9% to 14.6% of them. On the days with a breakout on both sides, 90.3% of the trades in the 12 tests hit the stop-loss. The reason: price crossed the middle of the IB on its way to the other side. The other 9.7% were all on the 15- and 30-minute charts, where some trades opened only after price had already broken out on the other side. After 10:30, on MNQ, MES and YM, price went a little fewer points past the IB on narrow days than on the other days. On RTY, the move was a little bigger on narrow days: 11.2 points, compared with 9.6. Compared with the size of the IB, the move was bigger on narrow days on all four markets, because the IB was smaller. The table 'Narrow first hours broke out on both sides more often' below shows each market. Trading only on narrow days made less money than the basic rules from 2020 to 2025, in all 6 MNQ and MES tests. On MNQ, the trades on narrow days made less per trade than the trades on the other days. On MES, they made a little more per trade, but the version skipped about 4 days in 10.
Most of the profit came in one year. Adding up all 12 tests, the trades made +423.1R from 2020 to 2025. Of that, +279.3R came in 2022, the year the US stock market fell: two thirds of the total. In the other five years together, the trades made +143.7R, and in 2023 and in 2025 they lost money. The chart 'Two thirds of the profit came in 2022' below shows every year. The sell trades made money only in 2020 and 2022, the years of the two biggest US stock market falls in this period, and lost 63.2R over the six years.
One YM or RTY contract often risked over 1% of the account, so YM traded on 538 to 585 out of 1,496 trading days, and RTY on 520 to 589. MNQ skipped at most 3 days with a breakout, and MES none.
The range
The first hour against the first 15 minutes
Each row is one market and chart, tested with the same rules and two different ranges. The first hour is 09:30 to 10:30 New York time, and the first 15 minutes are 09:30 to 09:45. With the 15-minute range, a breakout counts from 09:45. Both versions put the stop-loss at the middle of the range and close every trade at 16:00. The first two result columns show the change in the account from 2020 to 2025, after trading costs. The next two show the change during 2020–2023 only, and the last two the change during 2024–2025 only. The 2024–2025 change starts from the balance at the end of 2023, so the two periods do not add up to the 2020–2025 result.
| Market | Chart | First hour, 2020–2025 | First 15 minutes, 2020–2025 | First hour, 2020–2023 | First 15 minutes, 2020–2023 | First hour, 2024–2025 | First 15 minutes, 2024–2025 |
|---|---|---|---|---|---|---|---|
| MNQ | 5-minute | +34.3% | +255.6% | +45.1% | +75.2% | −7.4% | +102.9% |
| MNQ | 15-minute | +40.2% | +114.7% | +55.4% | +73.3% | −9.8% | +23.9% |
| MES | 5-minute | +60.6% | +71.1% | +42.0% | +62.7% | +13.1% | +5.2% |
| MES | 15-minute | +33.6% | +178.7% | +42.0% | +131.5% | −5.9% | +20.4% |
| YM | 5-minute | +24.8% | +53.0% | −1.2% | +15.0% | +26.3% | +33.1% |
| YM | 15-minute | +17.1% | +58.5% | +10.5% | +31.7% | +5.9% | +20.4% |
| RTY | 5-minute | +7.4% | +68.3% | +27.7% | +48.9% | −15.9% | +13.0% |
| RTY | 15-minute | +38.5% | +16.4% | +27.2% | +0.6% | +8.9% | +15.8% |
The 15-minute range results here use this page's rules. They are not the same as on our 15-minute opening range breakout page, which puts the stop-loss at the other side of the range and takes profit at 2R. On YM and RTY, the two ranges did not trade on the same days. A day was skipped when one contract risked more than 1% of the account. The 15-minute range is smaller, so it skipped fewer days. YM traded on 1,283 days (5-minute chart) and 1,124 days (15-minute chart) with the 15-minute range, and on 585 and 561 days with the first hour. RTY traded on 1,288 and 902 days, compared with 589 and 554.
Narrow or wide
Narrow first hours broke out on both sides more often
We called a day narrow when its IB (09:30 to 10:30 New York time) was smaller than the average IB of the previous 20 trading days. The other days had an IB as big as that average, or bigger. The table compares the two groups of days, from 2020 to 2025. 'Broke out on both sides' means that one 5-minute candle closed above the IB and another closed below it, before 16:00. 'Furthest move past the IB' is how far price went past the IB high or the IB low, whichever was further, between 10:30 and 16:00. The IB sizes and the moves are medians: on half of the days, they were smaller.
| Market | Typical IB, narrow days | Typical IB, other days | Broke out on both sides, narrow days | Broke out on both sides, other days | Furthest move past the IB, narrow days | Furthest move past the IB, other days |
|---|---|---|---|---|---|---|
| MNQ | 99.0 points | 166.5 points | 18.8% | 10.1% | 79.2 points | 82.2 points |
| MES | 18.0 points | 34.5 points | 26.0% | 14.6% | 18.5 points | 21.0 points |
| YM | 157 points | 281 points | 20.9% | 10.0% | 124 points | 133 points |
| RTY | 16.9 points | 27.0 points | 14.4% | 5.9% | 11.2 points | 9.6 points |
Compared with the size of the IB, the move was bigger on narrow days. It was about 0.7 to 1.0 times the IB, compared with about 0.4 to 0.6 times on the other days. Of the 1,476 trading days with a 20-day average, 842 to 867 were narrow, depending on the market. The first 20 trading days of 2020 have no 20-day average, so they are in neither group. These numbers come from the price data, not from the trades, so they include the days that YM and RTY skipped.
Year by year
Two thirds of the profit came in 2022
Each bar adds up the results of all the trades that opened in one year, in all 12 tests with the basic rules, after trading costs. The results are in R: 1R is 1% of the account at the time of the trade. That is the amount each trade was sized to lose at its stop-loss, before trading costs. An R total is not a % result. The bars add up 12 separate accounts, and 1R grew and shrank with each account's balance. So +279.3R does not mean the accounts grew by 279.3%. Green bars made money in total; red bars lost money.
- 20201,943 trades +87.0R
- 20211,837 trades +35.6R
- 20221,675 trades +279.3R
- 20232,210 trades −23.5R
- 20242,045 trades +63.9R
- 20251,856 trades −19.3R
2022 has the fewest trades, because YM traded on few days that year: its first hour was often too wide for one contract to fit the 1% risk.
The strategy
What the initial balance breakout is
The initial balance (IB) is the price range of the first hour of a trading session, from its highest price to its lowest. The term comes from Market Profile, a way of charting how much time price spent at each price level. On US stock index futures, traders use the first hour of the New York stock market session: 09:30 to 10:30 New York time. Index futures (futures that follow a stock index, like the Nasdaq 100) trade almost 24 hours a day, but the IB starts at 09:30, with the stock market. When price later goes past the IB high or the IB low, Market Profile traders call it a range extension. A common way to trade it: buy when a candle closes above the IB, and sell short (sell first, to profit if price falls) when a candle closes below it. Traders expect the move out of the first hour's range to keep going. Many put the stop-loss at the middle of the IB, which is closer than the other side. We tested 4 US stock index futures. MNQ (Micro Nasdaq 100) and MES (Micro S&P 500) follow the same prices as NQ (E-mini Nasdaq 100) and ES (E-mini S&P 500). A micro contract makes or loses one tenth as much money per point. YM (Dow) and RTY (Russell 2000) are E-mini contracts, ten times the size of their micro versions (MYM and M2K). Our data has no MYM or M2K, so we tested YM and RTY. We used 5-minute, 15-minute and 30-minute charts. The IB is the same on all three charts. The chart only decides which candle close counts as the breakout. A Market Profile chart splits the day into 30-minute periods, and its IB is the first two of them. On our 30-minute chart, the IB is the same: the first two candles.
- Initial balance (IB)
- 09:30 to 10:30 New York time, the first hour of the stock market session
- Breakout
- A candle closes above the IB high (buy) or below the IB low (sell), from 10:30 until 16:00 New York time
- Stop-loss
- The middle of the IB, halfway between its high and its low
- Take-profit
- None. A trade still open at 16:00 New York time closes then.
- Trades per day
- 1 at most: the first breakout
- Risk per trade
- 1% of the account, rounded down to whole contracts. No trade that day if one contract risks more than 1%.
- Fills (the price an order is done at)
- The stop-loss fills at its price, or at a candle's open if price opens past it. A trade still open at 16:00 closes at the open of the 16:00 candle. One of the changes we tested (under 'Can the initial balance breakout be improved?') has a take-profit. It fills at its exact price. When price reaches the stop-loss and the take-profit in the same candle, the backtest looks at the 1-minute candles inside it to see which came first. If both are in the same 1-minute candle, the backtest counts the stop-loss.
- Price data
- BacktestingMax's futures data. It is built from CFD prices: a broker's price that follows the same index. It is adjusted to match the real contracts: the futures price, the trading hours and the tick (the smallest price step). It also follows the roll: the switch from one contract month to the next. It is not exchange data.
- Trading costs
- A trade pays half a tick of spread (the gap between the buy and the sell price) when it opens, and half a tick when it closes. One tick is 0.25 points ($0.50) on MNQ, 0.25 points ($1.25) on MES, 1 point ($5) on YM and 0.1 points ($5) on RTY. In the take-profit version, a trade that closes at the take-profit pays no spread when it closes. Every trade also pays a commission when it opens and again when it closes: $0.62 per MNQ or MES contract, and $2.50 per YM or RTY contract. Spread and commission are paid per contract, and a typical MES trade used 8 or 9 contracts. On MES, trading costs took 51% to 65% of what the trades made before costs.
The rules we tested
- Each trading day, mark the initial balance (IB): the highest and the lowest price from 09:30 to 10:30 New York time. On the 5-minute chart, the IB is the 12 candles from 09:30 to 10:30. On the 15-minute chart, it is 4 candles, and on the 30-minute chart, 2 candles.
- After 10:30, buy when a candle closes above the IB high. Sell (go short) when a candle closes below the IB low. The trade opens at the next candle's open. A breakout counts on any candle that closes before 16:00 New York time.
- Put the stop-loss at the middle of the IB, halfway between the IB high and the IB low. This is the same level for a buy and for a sell.
- There is no take-profit. If the trade is still open at 16:00 New York time, close it then.
- Take only the first breakout of the day, win or lose. After that trade, wait for the next day.
- Size every trade so that a loss at the stop-loss costs 1% of the account balance at that time. The size is calculated from the breakout candle's close. Futures trade in whole contracts, so round down to a whole number of contracts. If even one contract would risk more than 1% of the account, skip the day.
- Don't trade on days the New York Stock Exchange is closed or closes early (at 13:00).
The method
How we tested it
The test
- Markets
- MNQ (Micro Nasdaq 100), MES (Micro S&P 500), YM (Dow futures) and RTY (Russell 2000 futures)
- Charts
- 5-minute, 15-minute and 30-minute candles
- Dates
- January 2020 to December 2025
- Account
- $50,000, risking 1% of the account on each trade
- Trading costs
- Included. Every trade pays that market's normal trading cost: the spread, which is the gap between the buy price and the sell price.
How a test passes
We call a test passed only if it meets all four checks. A strategy can make money in one backtest and still fail one of these checks.
- At least 100 trades. With fewer trades, a good result could be luck.
- It made money from 2020 to 2023 and again from 2024 to 2025. This shows whether the strategy kept working in the newer years, not only in the older ones.
- A profit factor (the money won divided by the money lost) of at least 1.2 from 2024 to 2025, after trading costs.
- In 95% of 1,000 random shuffles of the trades, the account must not fall more than 30% from its highest point.
Improvements
Can the initial balance breakout be improved?
Besides the basic rules, we tested three versions of the initial balance breakout. Each one changes one rule, the way traders often do. The three changes: the stop-loss at the other side of the IB, a take-profit at a 100% IB extension, and trading only on days with a narrow IB. The table below explains each one. Each version ran on the same 12 tests. Using 2020–2023 only, we picked the best of the three changes. The best change is the one that made money in the most tests. In a tie, it is the one with the better middle test (the median of the 12 tests). Then we checked that change on 2024–2025, the years we did not use to pick it. If you pick a version and judge it on the same years, it almost always looks better than it really is.
| Version | Made money 2020–2023years used to pick the best version | Made money 2024–2025years not used to pick it | Made money in both periods | Passed all four checks |
|---|---|---|---|---|
| Basic rules The rules under 'The rules we tested': the stop-loss at the middle of the IB, no take-profit, and a close at 16:00. | 11 of 12middle test +37.0% | 6 of 12middle test +1.4% | 5 | 0 |
| Stop-loss at the other side of the IB Put the stop-loss at the IB low for a buy, and at the IB high for a sell, instead of the middle. The stop-loss is about twice as far away, so with the same 1% risk you trade about half as many contracts. On YM and RTY, one contract then risked more than 1% on almost every day. | 10 of 12middle test +8.5% | 6 of 12middle test −0.1% | 1 | 0 |
| With a take-profit at a 100% IB extensionBest on 2020–2023 Close the trade when price has gone one full IB height past the IB. For a buy, the take-profit is the IB high plus the height of the IB. For a sell, it is the IB low minus that height. Market Profile traders call this level a 100% extension: there, the day's range is twice the IB. A trade that doesn't reach it still ends at the stop-loss or at 16:00. If the breakout candle already closed past this level, there is no trade that day. | 11 of 12middle test +27.8% | 5 of 12middle test −4.1% | 4 | 1 |
| Narrow first hour only Trade only on days when the IB is smaller than the average IB of the previous 20 trading days. Market Profile traders often say that a narrow IB leads to a bigger breakout. The first 20 trading days of 2020 have no average yet, so this version starts in February 2020. | 11 of 12middle test +20.2% | 8 of 12middle test +4.4% | 7 | 1 |
No change clearly beat the basic rules. On 2020–2023, the years we used to pick the best change, the basic rules made money in 11 of 12 tests, and no change made money in more. Of the three changes, the take-profit at a 100% IB extension did best on those years. It made money in 11 of 12 tests, the same as the basic rules, but its middle test was +27.8%, compared with +37.0%. So it is the change we checked on 2024–2025. There, it did worse than the basic rules: 5 of 12 tests made money, compared with 6 of 12, and the middle test was −4.1%, compared with +1.4%. On MNQ and MES, it lost money in 2024–2025 in all 6 tests. Trading only on narrow days did best on 2024–2025: 8 of 12 tests made money, and 7 tests made money in both periods, compared with 5 with the basic rules. But from 2020 to 2025, it made less money than the basic rules in all 6 MNQ and MES tests: for example, +0.6% instead of +35.2% on MNQ's 30-minute chart. With the take-profit, and again with narrow days only, YM on the 30-minute chart passed all four of our checks. But YM traded on only 540 and 449 out of 1,496 trading days in those two tests, so these passes come only from days with a smaller first hour. The 1% limit follows the account balance, so each version skipped slightly different days. The stop-loss at the other side of the IB made the biggest fall from the highest balance smaller on MNQ and MES: 12.8% to 22.1%, compared with 24.4% to 38.3%. But it made less money in all 6 of those tests, and MES lost money in 2024–2025 on all three charts. On YM and RTY, it traded only 9 to 46 times in six years.
Passed all four checks with a take-profit at a 100% IB extension
- YM (Dow futures), 30-minute
Questions
Questions traders ask
Does the initial balance breakout strategy work?
Not reliably, in our backtest. The initial balance (IB) is the price range of the first hour of the New York stock market session, 09:30 to 10:30. We tested its breakout on MNQ, MES, YM and RTY futures (Nasdaq 100, S&P 500, Dow and Russell 2000), each on 5-, 15- and 30-minute charts. The stop-loss was at the middle of the IB, every trade closed by 16:00, and each trade risked 1% of the account. From 2020 to 2025, after trading costs, the account grew by 7.4% to 60.6% in all 12 tests. But only 5 tests made money in both 2020–2023 and 2024–2025, and MNQ lost money in 2024–2025 on all three charts. With the basic rules, no test passed all four of our checks. The checks: at least 100 trades, a profit in both periods, a profit factor of at least 1.2 in 2024–2025, and a limited fall when the trades are shuffled.
What is the initial balance in trading?
The initial balance (IB) is the price range of the first hour of a trading session, from its highest price to its lowest. The term comes from Market Profile, a way of charting how much time price spent at each price level. On US stock index futures like NQ and ES (Nasdaq 100 and S&P 500 futures), traders use 09:30 to 10:30 New York time. That is the first hour of the stock market session. In our data from 2020 to 2025, a 5-minute candle closed outside the IB later that day on 90% to 96% of the 1,496 trading days, depending on the market. But on 70% to 84% of the days, price did not trade past both the IB high and the IB low before 16:00 (counting any price, not only candle closes). On those days, the first hour's high or low was also the high or low of the session from 09:30 to 16:00.
Does a narrow initial balance mean a bigger breakout?
Not in points on MNQ, MES and YM, in our backtest. We called the IB narrow when it was smaller than the average IB of the previous 20 trading days. On narrow days, price broke out a little more often. But it also broke out on both sides about twice as often: on 14.4% to 26.0% of the narrow days, compared with 5.9% to 14.6% of the other days. On MNQ, MES and YM, price went a little fewer points past the IB on narrow days. On MNQ, the typical (median) move was 79.2 points on narrow days and 82.2 points on the other days. On RTY, the move was a little bigger on narrow days: 11.2 points, compared with 9.6. Compared with the size of the IB, the move was bigger on narrow days on all four markets, because the IB was smaller. With the same rules, trading only on narrow days made less money than trading every day from 2020 to 2025, in all 6 MNQ and MES tests. But in 2024–2025 alone, it made money in 8 of 12 tests, compared with 6 of 12.
Should you wait for the first hour, or trade the first 15 minutes?
In our backtest, the first 15 minutes did better. We ran this page's rules with two ranges: the first hour (09:30 to 10:30 New York time) and the first 15 minutes (09:30 to 09:45). Both put the stop-loss at the middle of the range and close every trade at 16:00. These are not the rules of our 15-minute opening range breakout page. On the 5-minute and 15-minute charts of MNQ, MES, YM and RTY, the 15-minute range made more money in 7 of 8 tests. All 8 made money in both 2020–2023 and 2024–2025, compared with 3 of 8 with the first hour. But fewer trades won with the 15-minute range: 28.4% to 37.8%, compared with 38.1% to 46.8%. And in 6 of the 8 tests, the 15-minute range had a bigger fall from its highest balance.
Keep exploring
Related strategies we tested
Opening range breakout 15-minute opening range breakout backtest on NQ and ES futures Made money in 9 of 12 tests, 8 of them in both periods. Best: MNQ (Micro Nasdaq 100), 5-minute, +158% Opening range breakout 5-minute opening range breakout backtest on NQ and ES futures Made money in 5 of 8 tests, 2 of them in both periods. Best: MNQ (Micro Nasdaq 100), 5-minute, +31% Sessions New York open breakout backtest on NQ, ES and gold futures Made money in 0 of 10 tests, 0 of them in both periods. Best: RTY (Russell 2000 futures), 15-minute, −6% Sessions London breakout strategy backtest on forex and gold Made money in 5 of 18 tests, 4 of them in both periods. Best: USD/JPY, 5-minute, +43% ICT & smart money ICT New York killzone backtest on NQ and ES futures Made money in 4 of 10 tests, 1 of them in both periods. Best: MGC (Micro Gold), 15-minute, +36%The strategy code we ran
This is the exact code from the BacktestingMax strategy engine. Paste it into the strategy editor in the app to run it on any market.
class FirstHourBreakout(Strategy):
"""The first hour (initial balance) breakout on US stock index futures, as day traders
learn it, plus the changes they argue about.
The initial balance (IB) is the highest and the lowest price of the first hour of the
New York stock market session: 09:30 to 10:30 New York time (daylight saving
included). On a 5-minute chart that is the first 12 candles; on a 15-minute chart, the
first 4; on a 30-minute chart, the first 2 (the A and B periods of a Market Profile
chart). Index futures trade almost around the clock, but this strategy only looks at
the stock market's hours, 09:30 to 16:00 New York.
Standard (all switches off): after 10:30, the first candle that closes above the IB
high is a buy, and the first candle that closes below the IB low is a sell (go short).
The trade opens at the next candle's open. The stop-loss sits at the middle of the IB,
halfway between its high and its low. There is no take-profit: a trade still open at
16:00 New York closes then. One trade a day: the first breakout, win or lose. Size
every trade so that the stop-loss costs 1% of the account, measured from the breakout
candle's close; if one contract would risk more, skip the day. No trading on days the
New York Stock Exchange is closed or closes early (13:00).
The changes, one at a time:
full_stop = 1 the stop-loss sits at the other side of the IB instead of the middle
ib_target = 1 take profit at a 100% IB extension: one IB height past the IB high
for a buy (past the IB low for a sell); if the breakout candle has
already closed past that level, no trade that day
narrow = 1 only trade when today's IB is smaller than the average IB of the
previous 20 trading days
"""
params = {"ib_minutes": Param(type=int, default=60, min=5, max=120),
"full_stop": Param(type=int, default=0, min=0, max=1),
"ib_target": Param(type=int, default=0, min=0, max=1),
"narrow": Param(type=int, default=0, min=0, max=1),
"narrow_days": Param(type=int, default=20, min=5, max=60)}
lookback = 2
session_open = 570 # 09:30 New York, in minutes after midnight
session_close = 960 # 16:00 New York
# Days with no trading, 2020-2025: the New York Stock Exchange is closed, or it
# closes early at 13:00.
closed_days = (
"2020-01-01 2020-01-20 2020-02-17 2020-04-10 2020-05-25 2020-07-03 2020-09-07 2020-11-26 "
"2020-11-27 2020-12-24 2020-12-25 "
"2021-01-01 2021-01-18 2021-02-15 2021-04-02 2021-05-31 2021-07-05 2021-09-06 2021-11-25 "
"2021-11-26 2021-12-24 "
"2022-01-17 2022-02-21 2022-04-15 2022-05-30 2022-06-20 2022-07-04 2022-09-05 2022-11-24 "
"2022-11-25 2022-12-26 "
"2023-01-02 2023-01-16 2023-02-20 2023-04-07 2023-05-29 2023-06-19 2023-07-03 2023-07-04 "
"2023-09-04 2023-11-23 2023-11-24 2023-12-25 "
"2024-01-01 2024-01-15 2024-02-19 2024-03-29 2024-05-27 2024-06-19 2024-07-03 2024-07-04 "
"2024-09-02 2024-11-28 2024-11-29 2024-12-24 2024-12-25 "
"2025-01-01 2025-01-09 2025-01-20 2025-02-17 2025-04-18 2025-05-26 2025-06-19 2025-07-03 "
"2025-07-04 2025-09-01 2025-11-27 2025-11-28 2025-12-24 2025-12-25")
def init(self, ctx):
self.ny = ctx.clock("America/New_York")
self.no_trading = set(self.closed_days.split())
self.day = None
self.high = None # the IB high
self.low = None # the IB low
self.has_open = False # True once the 09:30 candle has been seen today
self.ib_done = False # True once today's IB is complete (from 10:30)
self.narrow_ok = True # today's IB is below the 20-day average (narrow = 1)
self.heights = [] # the IB heights of the previous trading days
self.done = True # True once today's trade has been placed (or the day is skipped)
def on_bar(self, ctx):
start = self.ny.minute_of_day # this candle's open, New York time
end = start + ctx.timeframe_minutes # this candle's close
ib_end = self.session_open + ctx.params.ib_minutes
if self.ny.date != self.day: # a new day: forget yesterday's IB
self.day = self.ny.date
self.high = self.low = None
self.has_open = False
self.ib_done = False
self.narrow_ok = True
self.done = self.day in self.no_trading
# Build the IB from the candles that open from 09:30 to 10:30.
if self.session_open <= start < ib_end:
if start == self.session_open:
self.has_open = True
self.high = ctx.high[0] if self.high is None else max(self.high, ctx.high[0])
self.low = ctx.low[0] if self.low is None else min(self.low, ctx.low[0])
return
# From 10:30: the IB is complete. Compare it with the previous 20 trading days.
if start >= ib_end and not self.ib_done:
self.ib_done = True
full = self.has_open and self.high is not None and self.high > self.low
if full and self.day not in self.no_trading:
height = self.high - self.low
n = ctx.params.narrow_days
past = self.heights[-n:]
self.narrow_ok = len(past) == n and height < sum(past) / n
self.heights.append(height)
self.heights = self.heights[-n:]
if ctx.position is not None:
if end >= self.session_close or start < self.session_open:
ctx.close_position() # fills at the 16:00 candle's open
return
if self.done or start < ib_end or end >= self.session_close:
return
if not ctx.gate("full_initial_balance", self.has_open and self.high is not None and self.high > self.low):
self.done = True
return
if ctx.params.narrow == 1 and not ctx.gate("narrow_initial_balance", self.narrow_ok):
self.done = True # a wide IB (or no 20-day average yet): no trade
return
close = ctx.close[0]
up = close > self.high
down = close < self.low
if not ctx.gate("ib_break", up or down):
return
self.done = True # one trade a day: this breakout is it
height = self.high - self.low
if ctx.params.full_stop == 1:
stop = self.low if up else self.high
else:
stop = (self.high + self.low) / 2
target = None
if ctx.params.ib_target == 1:
target = self.high + height if up else self.low - height
if not ctx.gate("target_still_ahead", (target > close) if up else (target < close)):
return # the breakout candle closed past the target
size = ctx.size_by_risk_pct(0.01, stop=stop, entry=close)
if not ctx.gate("one_contract_fits_1pct_risk", size > 0):
return # one contract would risk more than 1%
if up:
ctx.buy(size=size, sl=stop, tp=target, tag="ib_long")
else:
ctx.sell(size=size, sl=stop, tp=target, tag="ib_short")
Your turn
Test the initial balance breakout yourself
Change the settings, the market or the stop-loss and see the result in seconds. Ask the BacktestingMax AI: Backtest the initial balance breakout on MES, 30-minute chart: range 09:30 to 10:30 New York time, take only the first close above it (buy) or below it (sell) each day, stop-loss at the middle of the range, close at 16:00 New York time, risk 1% per trade
.
Free account. No credit card needed.
See every strategy we tested Browse strategies shared by tradersBacktest on historical data with trading costs, run by BacktestingMax. Past results do not guarantee future results, and nothing here is financial advice. Updated 2 November 2026.