Markets › FX · EURUSD spot (broker data), daily
Inside Bar Trading Strategy Backtest: EURUSD Daily, 22 Years
The best-known price action setup, the daily inside bar breakout, on every EURUSD day from 2004 to 2026: win rate, two targets, a trend filter, costs and a comparison with the same trades on random days.
Buried · No proven edgeThe pause was real. The breakout meant nothing.
Variants tried: 3 · Passed every gate: 0 · Inside bars found: 795 · Holdout opened: yes (already used)
Short answer: not on EURUSD daily charts in our test. Buying or selling the next-day break of the mother bar after a daily inside bar, with the stop at the other side, lost money before costs from 2004 to 2026 (-0.034 R a trade at 1R over 401 trades) and did worse than the same trades on random days; with a 50-day trend filter it came out around zero (+0.011 R a trade).How much costs took here, compared across all 54 of our tests →
00The verdict in three lines
- We tested the inside bar trading strategy on EURUSD daily bars from 2004 to 2026: after a day whose high and low stay inside the previous day's (the mother bar), buy a break above the mother bar or sell a break below it the next day, stop at the other side, target 1R or 2R. 1.5 pips a round trip.
- The breakout lost before costs. 795 inside bars (13.5% of days) gave 401 trades at 1R: 48.4% winners, -0.034 R a trade before costs, worse than the same trades placed on random days.
- A trend filter only brought it to zero: +0.011 R a trade after costs over 225 trades, no better than chance. All three versions buried.
01What is the inside bar trading strategy?
An inside bar is a candle whose high is below the previous candle's high and whose low is above its low: a pause inside the range of the mother bar. Price action traders read it as compression before expansion and trade the breakout of the mother bar, usually on daily charts, most often in forex. Write-ups agree on the core and differ on filters; we fixed this common reading before running anything:
- The inside bar candlestick pattern: a daily bar (17:00 to 17:00 New York, the forex day) strictly inside the previous one. Equal highs or lows do not count.
- Inside bar breakout entry: for the next day only, a buy stop 1 pip above the mother bar's high and a sell stop 1 pip below its low; the first one hit is the trade, the other is cancelled; if neither is hit that day, both are cancelled.
- Stop: 1 pip beyond the other side of the mother bar. That distance is 1R, a median 113 pips on EURUSD.
- Three versions: IB-1R (target 1R), IB-2R (target 2R), IB-2R-T (target 2R, only in the direction of the 50-day moving average, as many educators advise). A trade still open after 20 trading days closes at that day's close (our addition, so that no trade lasts months). One trade at a time.
02How we tested it
EURUSD, the 1-minute bid history of an IC Markets MetaTrader 4 demo server, January 2004 to 28 September 2026, built into daily bars on the forex day (the server's midnight, 17:00 New York; days with fewer than 600 minutes, such as holidays, are not bars). Stops and targets are checked minute by minute; if both fall in one minute, the stop is taken. Costs: 1.5 pips a round trip, shown also at 1.0 and 2.5; an overnight-swap stress of 0.5 pip a night is shown too. Periods: 2004 to 2012, 2013 to 2019, and a holdout from 2020 already used by our earlier EURUSD tests. Control: every trade moved to another day at the same time, same direction and stop distance, 500 times. Engine check: hand-worked days and an independent re-implementation that matched every trade of the three versions; it passed on its first run (ib_selftest_result.txt). The file's clock was checked (no week to correct).
03Does the inside bar strategy work?
Net R after 1.5 pips a round trip. R is the distance from the entry to the stop.
| Variant | Rule | Trades | Win rate (95% range) | Gross per trade | Cost per trade | Net per trade | Net total | Net pips | Profit factor | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|
| IB-1R | Both breaks, target 1R | 401 | 48.4% (44% to 53%) | -0.034 R | 0.015 R | -0.049 R | -20 R | -1,817 pips | 0.91 | Buried |
| IB-2R | Both breaks, target 2R | 329 | 34.7% (30% to 40%) | -0.045 R | 0.015 R | -0.060 R | -20 R | -2,445 pips | 0.91 | Buried |
| IB-2R-T | Only with the 50-day trend, target 2R | 225 | 36.4% (30% to 43%) | +0.025 R | 0.015 R | +0.011 R | +2 R | +443 pips | 1.02 | Buried |
Cumulative net R by month. * Holdout already used before this test.
By period
| Variant | 2004 to 2012 (trades) | 2013 to 2019 (trades) | Holdout* 2020 to 2026 (trades) | t, first period | PF, second period |
|---|---|---|---|---|---|
| IB-1R | -17.6 R (171) | -3.5 R (123) | +1.5 R (107) | -1.35 | 0.94 |
| IB-2R | -10.3 R (142) | -5.3 R (96) | -4.3 R (91) | -0.64 | 0.92 |
| IB-2R-T | +3.8 R (104) | -2.9 R (67) | +1.4 R (54) | 0.27 | 0.94 |
Inside bar strategy win rate and success rate: how trades ended
| Variant | Hit the target | Hit the stop | Closed after 20 days | Median stop (pips) | Median days held |
|---|---|---|---|---|---|
| IB-1R | 47.4% | 50.9% | 1.7% | 113 | 2 |
| IB-2R | 27.7% | 63.8% | 8.5% | 113 | 3 |
| IB-2R-T | 29.8% | 62.2% | 8.0% | 113 | 4 |
With a 1R target the inside bar breakout won 48.4% of the time, a little under the 50% a coin toss would give with symmetric exits; with 2R, 34.7%, just above the one in three a 2R target needs to break even, but not enough once the trades closed early at the 20-day limit are counted. A good-sounding win rate is not the point; the average after costs is.
04Inside bar breakout or random entry?
| Variant | Trades | Real net per trade | Control median | Control 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| IB-1R | 401 | -0.049 R | -0.011 R | -0.106 R to +0.092 R | 26.2 |
| IB-2R | 329 | -0.060 R | -0.012 R | -0.151 R to +0.157 R | 29.6 |
| IB-2R-T | 225 | +0.011 R | -0.010 R | -0.197 R to +0.179 R | 57.6 |
The control places every trade on another day at the same time, same direction, same stop distance and exits, 500 times. Without the trend filter, the inside bar trades did worse than most of those random-day runs; with it, they landed in the middle. The pattern did not add information about direction.
05Not a cost problem
| Variant | Before costs | At 1.0 pip | At 1.5 pips (verdict) | At 2.5 pips | With a 0.5-pip nightly swap |
|---|---|---|---|---|---|
| IB-1R | -0.034 R | -0.044 R | -0.049 R | -0.059 R | -0.071 R |
| IB-2R | -0.045 R | -0.055 R | -0.060 R | -0.070 R | -0.100 R |
| IB-2R-T | +0.025 R | +0.015 R | +0.011 R | +0.001 R | -0.030 R |
Daily stops are wide (a median 113 pips), so 1.5 pips is about 0.015 R a trade; the result barely moves between 1.0 and 2.5 pips. The swap matters more: trades last a few days, and at 0.5 pip a night even the trend-filtered version, the only one above zero, falls below it.
06Year by year, long and short
| Year | Inside bars | IB-1R net (trades) | IB-2R net (trades) | IB-2R-T net (trades) |
|---|---|---|---|---|
| 2004 | 35 | -2.2 R (16) | -1.7 R (13) | -2.1 R (8) |
| 2005 | 32 | +3.8 R (16) | +7.1 R (14) | -0.8 R (10) |
| 2006 | 27 | -3.2 R (11) | +1.9 R (10) | +0.9 R (8) |
| 2007 | 33 | -5.1 R (19) | -1.2 R (16) | +1.3 R (11) |
| 2008 | 41 | -5.8 R (23) | -7.2 R (22) | -1.2 R (16) |
| 2009 | 43 | -5.2 R (27) | -5.9 R (20) | -1.9 R (16) |
| 2010 | 24 | -3.2 R (17) | +1.8 R (16) | +8.7 R (10) |
| 2011 | 40 | +6.8 R (25) | +1.2 R (16) | +1.8 R (12) |
| 2012 | 29 | -3.6 R (17) | -6.2 R (15) | -2.9 R (13) |
| 2013 | 45 | +2.6 R (25) | -3.0 R (16) | +4.9 R (10) |
| 2014 | 35 | -0.3 R (16) | +4.9 R (12) | +1.0 R (10) |
| 2015 | 44 | +3.4 R (14) | +5.0 R (14) | +1.2 R (10) |
| 2016 | 42 | -2.3 R (20) | -1.3 R (16) | -3.7 R (12) |
| 2017 | 29 | -1.2 R (13) | -4.6 R (11) | -1.1 R (7) |
| 2018 | 29 | -8.3 R (18) | -6.9 R (14) | -5.1 R (8) |
| 2019 | 37 | +2.6 R (17) | +0.5 R (13) | +0.1 R (10) |
| 2020 | 28 | +3.7 R (16) | +4.8 R (13) | +5.2 R (8) |
| 2021 | 32 | -3.6 R (16) | -6.4 R (14) | -5.2 R (8) |
| 2022 | 37 | -5.2 R (17) | -8.9 R (14) | -1.8 R (10) |
| 2023 | 31 | +3.2 R (18) | +4.1 R (16) | +2.4 R (10) |
| 2024 | 32 | +0.7 R (13) | +2.0 R (11) | -0.0 R (5) |
| 2025 | 40 | +2.7 R (15) | +3.1 R (13) | +4.3 R (7) |
| 2026 (to 28 Sep) | 30 | -0.1 R (12) | -3.0 R (10) | -3.4 R (6) |
| Variant | Longs: trades / gross / net (R) | Shorts: trades / gross / net (R) |
|---|---|---|
| IB-1R | 218 / -3.9 R / -7.1 R | 183 / -9.9 R / -12.6 R |
| IB-2R | 179 / -13.5 R / -16.2 R | 150 / -1.4 R / -3.6 R |
| IB-2R-T | 128 / +5.1 R / +3.2 R | 97 / +0.6 R / -0.9 R |
07The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.0 on development | 4. Above the 95th percentile of the moved-entry control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| IB-1R | 401 | fail | pass | fail | fail | fail | pass |
| IB-2R | 329 | fail | pass | fail | fail | fail | fail |
| IB-2R-T | 225 | fail | pass | fail | fail | fail | pass |
The data-gap check
| Variant | Trades | Open across a suspect gap | Net per trade | Verdict |
|---|---|---|---|---|
| IB-1R | 401 | 35 | -0.049 R → -0.056 R | Buried → Buried |
| IB-2R | 329 | 44 | -0.060 R → -0.126 R | Buried → Buried |
| IB-2R-T | 225 | 26 | +0.011 R → -0.050 R | Buried → Buried |
08Verdict by variant
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| IB-1R | No proven edge | 1, 3, 4, 5 | Buried |
| IB-2R | No proven edge | 1, 3, 4, 5, 6 | Buried |
| IB-2R-T | Fragile | 1, 3, 4, 5 | Buried |
No proven edge (IB-1R, IB-2R): negative before costs, worse than random days. Fragile (IB-2R-T): slightly positive overall, negative without its ten best trades.
TWhat this shows, and what to take into your own tests
What the results show
- Trading the break of the mother bar after a daily inside bar on EURUSD lost money before any cost: -0.034 R a trade with a 1R target and -0.045 R with 2R, over 401 and 329 trades from 2004 to 2026.
- The same trades placed on other days did better (the inside bar trades sat at the 26th and 30th percentile of 500 random-day runs). The pattern did not point the way.
- Taking only breaks in the direction of the 50-day average brought it to about zero (+0.011 R a trade after costs), no better than chance and negative without its ten best trades.
What remains unknown
- Other markets and timeframes (stocks, indices, gold, 4-hour charts), and inside bars with extra conditions such as a key level or a pin bar. We tested the plain daily setup on EURUSD.
- Fading the breakout ("inside bar false break"). Its result would roughly be the mirror image of ours before costs, small and not significant; we did not test it as a rule.
- Your own discretion. Educators teach the inside bar with context we cannot code without inventing rules.
Why it was buried
Not because of costs: with a typical 113-pip stop, 1.5 pips is only 0.015 R a trade. An edge in the breakouts themselves was not demonstrated: they lost before costs, and the same trades on random days did as well or better. The trend filter removed the worst trades but left nothing a gate could confirm.
What you can apply to your own tests
- Test the setup before the story. "Compression, then expansion" sounds right; on 795 daily inside bars it did not predict the direction.
- Compare with the same trades on random days. A pattern that does worse than random timing is telling you something.
- Separate the cost question from the edge question. Here costs were small; the edge was missing.
A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.
FAQCommon questions
Does the inside bar trading strategy work?
Not in our backtest on EURUSD daily bars. Over 795 inside bars from 2004 to 2026, the breakout made -0.049 R a trade after costs with a 1R target and -0.060 R with 2R; only the version filtered by the 50-day trend was slightly positive (+0.011 R), and no better than random entries.
What is the inside bar strategy win rate?
In our test 48.4% with a 1R target, 34.7% with 2R and 36.4% with 2R and the trend filter. The win rate mostly reflects the target; the average after costs decides whether a strategy works.
What is an inside bar?
A candle whose high is below the previous candle's high and whose low is above its low. The previous candle is called the mother bar. Traders read it as a pause before a move and trade a break of the mother bar's high or low.
How do you trade an inside bar breakout?
The common way, which we tested: place a buy stop just above the mother bar's high and a sell stop just below its low, keep whichever triggers first, and put the stop at the other side of the mother bar. Targets are often 2R; some traders only take breaks in the direction of the trend.
How was the inside bar strategy tested?
On 22 years of EURUSD daily bars built from 1-minute data, with rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.
09Check our arithmetic
ib_spec.md
ib_lib.js · ib_ref.js · ib_selftest.js · ib_run.js · ib_clock.js
control_audit_lib.js · fx_data.js · gh_lib.js · gx_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js
ib_selftest_result.txt · ib_results.txt · ib_summary.json · ib_clock_result.json · data_holes_eurusd.json
Code provenance: our own code, written from the rules in the specification.
10Data notes
Source. A broker's demo history of spot EURUSD, bid prices, built into daily bars on the 17:00 New York boundary; other charts with other day boundaries show different inside bars. Spreads are not in the file, so costs are an assumption, shown at three levels. Gaps. Suspect gaps outside weekends and the daily rollover are listed; without the trades that cross one, no verdict changes.
11Corrections
22 Oct 2026, navigation: added a link to the new guide comparing trading costs across all our tests. No result changed. 22 Oct 2026, navigation: added a link to the new guide comparing trend following and mean reversion across all our tests. No result changed.
+More tests and guides
- London breakout strategy
- Forex strategy backtest
- Fibonacci retracement strategy backtest
- Ichimoku cloud strategy backtest
- Trend following vs mean reversion: this test next to the others of its style
- Free prop firm challenge calculator
- What all the backtests found so far
- The backtesting protocol
- How to backtest a trading strategy without fooling yourself
- Backtesting glossary