We Backtested Four ICT Setups Against Random Trades. None Held Up.
On Nasdaq, every setup we tested was profitable before costs. That is the number that gets screenshotted, and on its own it is worth nothing — because the honest comparison is not zero, it is what the same trade would have earned on a random day.
What we found
- Before trading costs, all four setups made money on Nasdaq — $1.06 to $1.14 won for every $1 lost, across 8,443 trades and 8.5 years of 1-minute data.
- Before costs, random trades made money too: a coin flip deciding long or short averaged +0.035R (R is the amount risked per trade). The bar to beat is not zero.
- For three of the four setups, the real trades could not be told apart from copies placed on random dates with the same time of day, direction, stop and target.
- Breaker blocks beat their random-date copies on Nasdaq, then did worse than most of them on GBPUSD. A result that does not repeat in a second market is not yet a finding.
- A 15-minute fair value gap variant hovered around the 95% bar against its random-date copies (80th to 96th percentile, depending on the run), has not been replicated, and turned into a loser at one point of trading cost per trade.
From the team behind this backtest
Get seasonal patterns that have worked in the past
Testing popular trading ideas against decades of data is what we do every day. Does It Repeat applies it to timing: which weeks of the year a market has historically risen or fallen, how consistently, and whether that pattern still holds up.
Seasonality screener
FreeThe next yearly windows with a perfect record
- ICG.LICG PLCLongOct 21 → Nov 25 · won 10 of 10 years · +13.3% avg
- PHParker HannifinLongOct 21 → Nov 22 · won 10 of 10 years · +11.4% avg
- ODFLOld Dominion Freight LineLongOct 22 → Dec 2 · won 10 of 10 years · +9.0% avg
Price cycle screener
FreeCycle models with an entry in the next two weeks
- LITELumentum Holdings Inc.Shortentry Oct 29 · +302.9% net · 100% won
- XMR-USDMoneroLongentry Oct 27 · +278.2% net · 80% won
- AMDAdvanced Micro Devices Inc.Shortentry Oct 27 · +217.1% net · 80% won
Free account includes a screener preview, no credit card. Full access $20/mo at early-adopter pricing, 14-day money-back guarantee, cancel anytime. All statistics are historical; past performance does not guarantee future results.
The guide we tested
The four setups come from Mastering ICT Concepts: The Ultimate Trading Strategy Guide, a widely shared TradingView guide by TehThomas that covers five ICT strategies. It reports no win rate, no expectancy and no sample size — not one number that could be checked. That is not a criticism of this particular author; it is the norm, and the guide says outright that it is educational. But it leaves nothing to falsify, only something to measure. So we measured it.
Our first pass found that after costs, four of the five setups lost money on every market, and the one survivor was the best of about 130 variants we tried. It left the most important question unasked.
The number that means nothing
Here is the problem in one line: random trades do not earn zero. On our Nasdaq data, a bracket order with its target twice as far as its stop, placed every seventh hourly bar in a random direction, made +0.035R per trade before costs. That is not a pattern, and it is not simply the index rising from roughly 6,700 to 29,500. The rise explains why random longs (+0.090R) beat random shorts (−0.022R), but the coin picked each side about half the time, and the two sides weighted equally still average +0.034R.
So when a backtest reports a profit factor of 1.10, the honest question is not “is that above 1.0?” It is “is that above what nothing at all would have earned?” Almost nobody computes the second number. We built it.
What we tested, and how
Four of the guide’s five setups, coded mechanically from its definitions: the fair value gap retrace (three-candle imbalance, enter on the return, target previous highs and lows), Power of Three (pre-session range, false breakout, enter the other way), inversion fair value gap (a filled gap flips polarity, trade its retest after a liquidity sweep), and the breaker block (price sweeps a swing and reclaims it; the reclaiming candle is the zone). Where the guide gives no rule, such as a stop for the gap retrace, we chose one. The fifth setup, the Silver Bullet, has its own write-up.
Data: 2,656,313 one-minute Nasdaq bars from January 2018 to August 2026, plus 923,027 bars of GBPUSD from 2024 to 2026 as an out-of-sample check. Setups are read on 60-minute bars, confirmed at the bar’s close, and entries monitored on 1-minute bars afterwards, so nothing reads a price that had not printed. When a single minute contains both the stop and the target, we assume the stop filled. One position at a time.
One thing we deliberately did not code. These rule sets contain instructions like “confirm the trade with market structure shifts or other confluence factors.” That cannot be mechanized, and a strategy that requires it cannot be proven wrong — every loss gets explained by absent confluence after the fact. We dropped that layer and tested the skeleton a rules trader could actually automate. This biases the test against the material.
First: does our harness work at all?
A backtest that reports “no edge” for everything is worthless unless you can show it finds an edge that is really there. So we planted one: a strategy that looks twelve hours into the future and enters the way price actually went. Then the same thing inverted. Then a coin flip: random direction, a stop one ATR away and a target two ATRs away (ATR is the average size of a recent bar).
| Check | Trades | Win rate | Avg R |
|---|---|---|---|
| Oracle — knows the future | 6,538 | 57.5% | +0.712 |
| Anti-oracle — deliberately wrong | 6,538 | 11.2% | −0.666 |
| Coin flip — random direction | 6,538 | 34.7% | +0.035 |
The harness finds a planted edge and prices its inverse symmetrically, so a “no edge” verdict from it means something. The coin flip lands near zero but not at zero: that is the +0.035R baseline from the top.
On Nasdaq, gross of costs, everything works
| Setup | Profit factor | Total R | Avg R |
|---|---|---|---|
| Fair Value Gap | 1.06 | +156.4 | +0.041 |
| Power of Three | 1.07 | +55.7 | +0.038 |
| Inversion FVG | 1.10 | +108.7 | +0.062 |
| Breaker Block | 1.14 | +108.2 | +0.076 |
Four for four. Profit factors from 1.06 to 1.14 over thousands of trades and most of a decade. A write-up that stopped here would report that all four ICT concepts show positive expectancy, and every word of it would be literally true.
Now apply two points of round-turn cost.
Net of costs, three of four lose
| Setup | Trades | Win rate | Profit factor | Total R | Avg R |
|---|---|---|---|---|---|
| Fair Value Gap | 3,827 | 33.2% | 0.86 | −418.8 | −0.109 |
| Power of Three | 1,454 | 45.0% | 0.96 | −33.4 | −0.023 |
| Inversion FVG | 1,746 | 35.5% | 0.88 | −150.9 | −0.086 |
| Breaker Block | 1,416 | 47.0% | 1.02 | +14.0 | +0.010 |
Breaker blocks survive at +14R across eight and a half years and 1,416 trades, which is zero with extra steps. We then swept the grid a rules trader would plausibly try, at the same two points of cost — three timeframes, three entry positions in the zone, three stop placements, four target rules, displacement filters, wider retrace windows. Forty-six configurations, forty-three of them losing, and all three that did not lose were breaker blocks.
This is where it would be easy to declare the whole thing debunked. That conclusion is lazy, and it is wrong in a more interesting way.
The placebo test
For every single trade a strategy produced, we build a matched fake one. Same time of day, so session effects survive. Same direction, so trend drift survives. Same stop distance and target distance, measured in ATR at the entry bar and rescaled to the volatility of the new date, so a 2018 trade is not judged at 2026 volatility. Same conservative fills, same holding limit.
The only thing that changes is the date. Repeat that 50 times, more for borderline cases, and you get a distribution of what the strategy earns with the pattern removed and nothing else touched. If the setup carries information, the real result has to beat that distribution. If it does not, the pattern is decoration on a bracket order.
Nasdaq, gross of costs
| Setup | Real avg R | Placebo mean | Percentile | Verdict |
|---|---|---|---|---|
| Fair Value Gap | +0.041 | +0.021 | 68% | no edge |
| Power of Three | +0.038 | +0.006 | 78% | no edge |
| Inversion FVG | +0.062 | +0.024 | 76% | no edge |
| Breaker Block | +0.076 | −0.004 | 99% | beats placebo |
50 placebo iterations per setup; breaker blocks re-run at 300 to firm up the borderline result, which moved it from the 96th to the 99th percentile. The 95% mark is the conventional bar for calling a result something other than noise.
Three of the four cannot be told apart from placing the same bracket on a random day. And notice the placebo means themselves: three of four are positive — a random baseline above zero, like the coin flip’s — and part of what the gross table was measuring.
But breaker blocks cleared the 99th percentile. That looks like a genuine discovery. So we asked it to do the one thing a discovery has to do.
Replication kills it
Same code, same placebo, different market: GBPUSD, a different asset class, over a shorter window (2024 to 2026) with no eight-year bull trend underneath it. The short sample makes these percentiles (100 iterations each) noisier.
| Setup | Real avg R | Placebo mean | Percentile | Verdict |
|---|---|---|---|---|
| Fair Value Gap | −0.078 | +0.011 | 4% | worse than random |
| Power of Three | +0.038 | −0.009 | 81% | no edge |
| Inversion FVG | +0.126 | +0.001 | 93% | no edge |
| Breaker Block | −0.039 | −0.003 | 25% | no edge |
Breaker blocks: 99th percentile on Nasdaq, 25th percentile on GBPUSD, and losing money there net of costs at −0.088R over 515 trades. With four setups tested, a 95% pass turns up by luck about one time in five, and even a 99th-percentile pass needs to repeat before it counts. Asked to repeat, it was gone.
Fair value gaps are the mirror image — on GBPUSD the setup performed below its own placebo, at the 4th percentile.
A borderline variant — and it still lost
One version of the fair value gap came closer. On a 15-minute chart, with a displacement filter requiring the middle candle to be an impulse of at least one ATR, the setup produced 6,540 trades at a 37.7% win rate and +0.042R gross. At the 50 placebo iterations used above it landed at the 92nd percentile, short of the 95% bar. Re-running the placebo four times with fresh random dates put it anywhere from the 80th to the 96th, and one 200-iteration run gave the 96th.
Hold it to the breaker standard. It sits outside the 46-configuration sweep, which tried displacement only on 60-minute bars. We tried it because a similar rule topped about 130 variants in our earlier guide write-up (a stricter version with 249 trades, so not the same strategy), and the best of many tries is exactly where luck hides. It has not been run on GBPUSD, and breaker blocks had the stronger result and still failed replication.
Then charge it for trading anyway.
| Cost assumption | Profit factor | Total R | Avg R |
|---|---|---|---|
| Gross (no cost) | 1.07 | +277.2 | +0.042 |
| 1 point round turn | 0.93 | −332.3 | −0.051 |
| 2 points round turn | 0.81 | −941.9 | −0.144 |
One point of round-turn cost is enough. Not two, not five — one. On a 15-minute timeframe the gaps are small, so the stop distance is small, so a fixed cost consumes a large fraction of every R: here one point costs about 0.09R per trade, more than twice the gross edge. It breaks even at under half a point of round-turn cost.
So the honest summary sits between “it works” and “it doesn’t”: a borderline, unreplicated hint that, even if real, is no bigger than the cost of trading it.
Three questions that kill most backtests
Forget ICT for a moment. These apply to any strategy result you are shown, including ours.
- Is it gross or net? On Nasdaq every setup here was profitable before costs, and three of four lost money after. For the 15-minute variant, a single point of cost was the whole difference. If a backtest does not state its cost assumption, it does not have one.
- What does the null look like? Not zero — the actual null. Same instrument, same direction mix, same time of day, same bracket size, random date. On our Nasdaq data that null was positive for three of the four setups. A strategy that does not beat it has shown you nothing, and this is the test that did the most damage here.
- Does it replicate? One instrument and one parameter set is a hypothesis, not a result. Breaker blocks looked like a real find until they were asked to work in a second market. The 15-minute variant has not been asked yet.
None of this proves these concepts describe nothing. Order flow may well leave footprints; the 15-minute result hints at one, though it has not been replicated. The narrower claim we would defend is this: stripped of discretion and charged two points a round turn, these four patterns did not produce enough edge to pay for trading them, and for three of the four, what first looked like edge could not be told apart from what a random bracket earns anyway.
From the team behind this backtest
Get seasonal patterns that have worked in the past
Testing popular trading ideas against decades of data is what we do every day. Does It Repeat applies it to timing: which weeks of the year a market has historically risen or fallen, how consistently, and whether that pattern still holds up.
Seasonality screener
FreeThe next yearly windows with a perfect record
- ICG.LICG PLCLongOct 21 → Nov 25 · won 10 of 10 years · +13.3% avg
- PHParker HannifinLongOct 21 → Nov 22 · won 10 of 10 years · +11.4% avg
- ODFLOld Dominion Freight LineLongOct 22 → Dec 2 · won 10 of 10 years · +9.0% avg
Price cycle screener
FreeCycle models with an entry in the next two weeks
- LITELumentum Holdings Inc.Shortentry Oct 29 · +302.9% net · 100% won
- XMR-USDMoneroLongentry Oct 27 · +278.2% net · 80% won
- AMDAdvanced Micro Devices Inc.Shortentry Oct 27 · +217.1% net · 80% won
Free account includes a screener preview, no credit card. Full access $20/mo at early-adopter pricing, 14-day money-back guarantee, cancel anytime. All statistics are historical; past performance does not guarantee future results.