Markets › FX · EURUSD spot (broker data), 5-minute bars
Order Block and Fair Value Gap Strategy Backtest: Liquidity Sweep SMC Model on EUR/USD
“The liquidity sweep is the trap, the order block is the zone, the fair value gap is the entry.” We turned this smart money concepts (SMC) sequence from a YouTube video into fixed rules and backtested it on 22 years of EUR/USD 5-minute bars, with costs and against random days.
Buried · No proven edgeZero before costs. Twenty-three losing years after.
Variants tried: 2 · Passed every gate: 0 · Best: 1 of 6 · Holdout opened: yes (already used)
Short answer: not in our test. The smart money concepts sequence (a liquidity sweep, an order block and a fair value gap, with a 2R target) made -0.291 R a trade after costs on 22 years of EUR/USD 5-minute bars entering at the zone, and -0.171 R waiting for confirmation; before costs the first broke exactly even.
00The verdict in three lines
- Does the order block strategy work? Not in our test: on EUR/USD from 2004 to 2026 the sweep, order block and fair value gap sequence made -0.291 R a trade entering at the zone (13,544 trades) and -0.171 R waiting for confirmation (4,945 trades), after a cost of 1 pip.
- Before costs the aggressive entry broke exactly even (-0.000 R a trade), and it lost after costs in every one of the 23 years; its win rate was 32.3%, under the one in three a 2:1 target needs.
- Buried with no proven edge: before costs one version broke even and the other lost, and neither beat random days by enough.
01The SMC model: liquidity sweep, order block, fair value gap
The video teaches the three smart money concepts as one sequence, on EUR/USD and on NASDAQ futures, and says the same logic works on any market. Its presenter says he made $1.5 million in trading profits last quarter; we cannot check that, and it is not what we test.
- Structure: price breaks a swing high (a bullish break of structure), which sets the trend and the swing range.
- Liquidity sweep (“the trap”): price runs below an earlier low, where stop orders rest, and comes back: the breakout traders are trapped and the real move starts.
- Order block (“the zone”): the origin of the move after the sweep; he marks the candle where it started, from its high to its low.
- Fair value gap (“the entry”): the imbalance the impulse leaves, a gap between the first and third of three candles; ideally inside the order block. With no gap, the order block itself is the entry.
- Entry: when price returns to the zone, either at once (aggressive) or after the lower timeframe shifts back up (conservative); stop below the zone, target a fixed 2R. Sells are the mirror image.
He adds that not every sweep, order block or gap is worth trading, and that the “story” must make sense from the higher timeframe down. That filter is applied by eye; we say below what we could and could not test.
02How we made the rules mechanical
- Swings: a 5-minute bar whose low is below the lows of the 3 bars on each side is a swing low (a swing high alike); it is known only once those 3 later bars have closed.
- Liquidity sweep: a bar trades below the most recent swing low and a close comes back above it within 3 bars; each swing low can be swept once. Without the close back above, it is a breakdown and nothing happens.
- Break of structure: a close above the most recent swing high within 36 bars (3 hours) of the sweep low, before price trades below that low.
- Order block: the high-to-low range of the candle that made the sweep low. Fair value gap: the lowest three-candle gap of the impulse that touches the order block; with none, the order block is the zone.
- Trade: entry at the top of the zone, stop 1 pip below it, target 2R. Aggressive: a limit order. Conservative: after price reaches the zone, a 5-minute close above the bar that reached it, within an hour. The zone must be reached within 24 hours; a newer setup replaces an unfilled one; one trade at a time; no position over the weekend.
Of 95,793 sweeps, 21,889 were followed by a break of structure in time and became setups; 43.5% had a fair value gap touching the order block.
03How we tested it
EUR/USD, the 1-minute bid history of an IC Markets MetaTrader 4 demo server, January 2004 to 28 September 2026, built into 5-minute bars. Costs: 1 pip a round trip, as in our other EUR/USD tests, with 1.5 and 2.5 pips shown too. Results in R: the result of a trade divided by its risk, entry to stop. Periods: 2004 to 2012, 2013 to 2019, and a holdout from 2020 already used by our earlier EUR/USD tests; first-period bar t ≥ 2.5, because many strategies have been tried on this pair and the rules leave many readings open. Control: every trade moved to another trading day at the same time of day, with the same stop and target distances, 500 times. Engine check: 15 hand-made cases (swings and ties, sweeps on the first and third bar, a breakdown, a break of structure voided by a new low or too late, the gap and the order-block entries, both entry styles, expiry, the weekend, a newer setup replacing an older one) and an independent re-implementation that matched every one of the 21,889 setups and every trade (ob_selftest_result.txt).
04Results: does the order block strategy work?
| Variant | Entry | Trades | Win rate | Gross per trade | Cost per trade | Net per trade | Net total | Profit factor | Verdict |
|---|---|---|---|---|---|---|---|---|---|
| OB-FVG-A | Aggressive: a limit order at the zone (the gap touching the order block, else the order block) | 13,544 | 32.3% | -0.000 R | 0.291 R | -0.291 R | -3,947 R | 0.67 | Buried |
| OB-FVG-C | Conservative: wait for a 5-minute close beyond the bar that reached the zone, then enter | 4,945 | 31.9% | -0.066 R | 0.105 R | -0.171 R | -844 R | 0.77 | Buried |
Cumulative net R by month. * Holdout already used before this test.
Order block strategy win rate: how the trades ended
| Variant | Target (2R) | Stop | Weekend close | Median risk | Median time in trade | Largest drawdown (closed trades) |
|---|---|---|---|---|---|---|
| OB-FVG-A | 31.6% | 67.4% | 1.1% | 4.6 pips | 17 min | -3,962 R |
| OB-FVG-C | 29.5% | 66.6% | 3.9% | 11.4 pips | 110 min | -851 R |
A 2:1 trade breaks even before costs at a win rate of one in three. Entering at the zone won 32.3% of the time, usually within 17 minutes, so before costs it came out at zero; the conservative entry won 31.9%. Longs and shorts both lost (aggressive: -0.285 R and -0.298 R a trade).
05Order block or fair value gap: which entry was better?
| Variant | Entries at a gap | Net per trade | Entries at the order block | Net per trade |
|---|---|---|---|---|
| OB-FVG-A | 5,566 | -0.412 R | 7,978 | -0.207 R |
| OB-FVG-C | 1,575 | -0.110 R | 3,370 | -0.199 R |
The fair value gap is meant to refine the entry. With the aggressive entry it did the opposite: trades from a gap lost -0.412 R a trade, those from the order block -0.207 R. A gap is a smaller zone, so the stop is tighter and 1 pip of cost is a bigger share of it. With the conservative entry the gap trades lost less than the order-block trades, but both lost.
06Sweep setup or random day?
| Variant | Trades | Real net per trade | Moved trades, median | Moved, 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| OB-FVG-A | 13,544 | -0.291 R | -0.312 R | -0.334 R to -0.288 R | 92.8 |
| OB-FVG-C | 4,945 | -0.171 R | -0.122 R | -0.156 R to -0.087 R | 1.2 |
The aggressive version did a little better than its trades moved to random days (the 92.8th percentile), but the random days themselves lost -0.312 R a trade: a tight stop and a 2:1 target lose their cost on an ordinary day. The conservative version did worse than almost every random set (the 1.2th percentile): waiting for confirmation picked worse moments than chance.
07By period and by year
| Variant | 2004 to 2012 (trades) | 2013 to 2019 (trades) | Holdout* 2020 to Sep 2026 (trades) | t, first period | PF, second period |
|---|---|---|---|---|---|
| OB-FVG-A | -0.199 R (4,911) | -0.336 R (4,342) | -0.352 R (4,291) | -9.20 | 0.63 |
| OB-FVG-C | -0.163 R (1,729) | -0.192 R (1,621) | -0.157 R (1,595) | -5.00 | 0.75 |
| Year | OB-FVG-A net (trades) | OB-FVG-C net (trades) |
|---|---|---|
| 2004 | -42.8 R (514) | -42.1 R (178) |
| 2005 | -21.6 R (484) | -43.3 R (190) |
| 2006 | -3.5 R (510) | -24.0 R (206) |
| 2007 | -74.3 R (446) | -50.7 R (171) |
| 2008 | -106.4 R (515) | -18.7 R (162) |
| 2009 | -165.8 R (576) | -15.1 R (194) |
| 2010 | -174.1 R (630) | -16.2 R (210) |
| 2011 | -158.3 R (646) | -21.3 R (220) |
| 2012 | -230.2 R (590) | -49.9 R (198) |
| 2013 | -159.8 R (666) | -29.3 R (240) |
| 2014 | -263.2 R (602) | -44.0 R (224) |
| 2015 | -171.0 R (637) | -64.9 R (248) |
| 2016 | -169.1 R (651) | -51.2 R (244) |
| 2017 | -169.9 R (564) | -22.8 R (196) |
| 2018 | -253.1 R (622) | -34.5 R (219) |
| 2019 | -272.4 R (600) | -65.3 R (250) |
| 2020 | -188.0 R (657) | -41.3 R (244) |
| 2021 | -258.7 R (622) | +0.4 R (214) |
| 2022 | -163.4 R (659) | -38.6 R (250) |
| 2023 | -238.7 R (620) | -71.8 R (226) |
| 2024 | -201.7 R (624) | -28.8 R (265) |
| 2025 | -255.6 R (641) | -45.6 R (236) |
| 2026 (to 28 Sep) | -205.0 R (468) | -24.8 R (160) |
* The holdout years were already used by our earlier EUR/USD tests.
The aggressive version lost in each of the 23 years; the conservative one in 22 of them (2021 ended at +0.4 R).
08What costs do to a 5-minute SMC trade
| Variant | Before costs | 1 pip (base) | 1.5 pips | 2.5 pips | 1 pip + swap stress |
|---|---|---|---|---|---|
| OB-FVG-A | -0.000 R | -0.291 R | -0.437 R | -0.728 R | -0.296 R |
| OB-FVG-C | -0.066 R | -0.171 R | -0.223 R | -0.327 R | -0.179 R |
The zone of a 5-minute order block is small (a median of 4.6 pips of risk for the aggressive entry), so the cost weighs 0.29 R a trade; the conservative entry, further from its stop, pays 0.10 R. The swap stress charges 0.5 pip a night for the few trades held overnight. Cheaper execution would not rescue a version that does not make money before costs.
09The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.5 on development | 4. Above the 95th percentile of the moved-trade control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| OB-FVG-A | 13,544 | fail | pass | fail | fail | fail | fail |
| OB-FVG-C | 4,945 | fail | pass | fail | fail | fail | fail |
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| OB-FVG-A | No proven edge | 1, 3, 4, 5, 6 | Buried |
| OB-FVG-C | No proven edge | 1, 3, 4, 5, 6 | Buried |
The data-gap check removed 53 and 43 trades touching a known gap in the data; no verdict changed. No proven edge: not profitable before costs and not better than random days by enough.
TWhat this shows, and what to take into your own tests
What the results show
- The liquidity sweep, order block and fair value gap sequence, made mechanical on EUR/USD 5-minute bars, did not make money from 2004 to 2026: -0.291 R a trade after costs entering at the zone and -0.171 R waiting for confirmation.
- Entering at the zone broke exactly even before costs (-0.000 R a trade over 13,544 trades): 32.3% winners when a 2:1 target needs more than one in three. The cost of 1 pip took 0.29 R a trade because the stops were so tight (a median of 4.6 pips).
- Waiting for confirmation lost before costs and did worse than the same trades placed on random days at the same time of day.
What remains unknown
- The context filter the presenter applies by eye: the higher-timeframe bias and whether the swept level is "meaningful". We could not code it, so we did not test it.
- Other readings of the rules (bigger swings, another timeframe, another way to draw the order block) and other markets, such as gold or index futures.
- Whether real fills on a live account would be better or worse than our 1 pip a round trip, which ignores wider spreads around news and the daily rollover.
Why it was buried
Both versions lost in all three periods (t-statistics from -4.5 to -15.2), with or without costs, and neither beat the same trades on random days by enough. Losses of this size and steadiness are not a matter of an unlucky stretch: in this reading, the sequence did not pick better moments than chance.
What you can apply to your own tests
- Before trading a model with stops of a few pips, divide your cost per trade by your typical stop: here 1 pip was close to a third of the risk.
- Test the refinement on its own: here the fair value gap entry did worse than the plain order block entry for the aggressive version.
- Write the rules down tightly enough that someone else would draw the same order block; otherwise no test, ours or yours, can tell you whether it works.
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 order block strategy work?
Not in our backtest on EUR/USD 5-minute bars from 2004 to 2026: 13,544 trades at -0.291 R each after a 1-pip cost, losing in every year, and 4,945 trades at -0.171 R with a confirmation entry. Neither beat the same trades on random days by enough.
What is the order block strategy win rate?
32.3% with a fixed 2R target entering at the zone, and 31.9% waiting for confirmation: just under the one in three a 2:1 trade needs to break even before costs.
Order block or fair value gap: which is better?
In our test the plain order block entry did better than the fair value gap entry for the aggressive version (-0.207 R against -0.412 R a trade), because a gap is a smaller zone with a tighter stop, so costs weigh more; with the confirmation entry the gap did a little better. Both lost.
What is a liquidity sweep in trading?
Price runs beyond an obvious high or low, where stop orders rest, and comes straight back. In smart money concepts it is read as a trap before the real move; we defined it as a 5-minute bar trading beyond the latest swing low (or high) with a close back inside within three bars.
How was the order block strategy tested?
On EUR/USD 1-minute data from 2004 to 2026 built into 5-minute bars, with fixed definitions of swings, sweeps, the break of structure, the order block and the gap, and 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.
10Check our arithmetic
ob_spec.md
ob_lib.js · ob_ref.js · ob_selftest.js · ob_run.js
control_audit_lib.js · fx_data.js · gh_lib.js · gx_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js · data_holes_eurusd.json · data_manifest.md
ob_selftest_result.txt · ob_results.txt · ob_summary.json
Code provenance: our own code, written from the rules as taught in the video and the readings in the specification. The video is cited for its rules only; we have no connection with its author.
11Data notes
Source. A broker's demo history of spot EUR/USD (bid prices), on the New York clock; gaps longer than 30 minutes inside the week are listed in data_holes_eurusd.json and never filled. 2007 has about 18% fewer minutes than other years. No rule depends on the time of day, so the clock offset our clock audit found in some weeks of 2005 to 2014 changes no signal. Fills: limit orders at their level, or a minute's open if it opened beyond it; stops and targets at their level or the minute's open; a flat 1 pip a round trip, which understates the wider spreads around news and the 17:00 rollover.
12Corrections
None since publication.