We Backtested ICT’s Fair Value Gap Rules on 53 Years of Dollar Index Data
In late June 2026, the trader known as ICT published a Dollar Index analysis that projected a reversal level of 101.800 — and the market topped at exactly 101.800 before turning. One tick-perfect call is an anecdote. So we turned the underlying rules into code and ran them across every DXY daily candle since the dollar floated in 1973. Here is what 6,035 fair value gaps and 3,986 trades actually say.
The short version
- The mechanical FVG retrace setup won 38.0%of 3,783 trades on valid gaps — with a +0.29R expectancy, because the average winner (+1.99R) is twice the average loss.
- The validity filter is real: gaps that were first-presented or anchored to a quadrant/octant won 38%, while rejected gaps won only 22%.
- The midpoint invalidation rule earns its keep: exiting when a candle body closes past consequent encroachment cut 785 losers to −0.30R instead of a full −1R stop.
- Expectancy was positive in every decade since the 1970s — but nearly died in the 2010s (+0.05R) before recovering in the 2020s.
The concepts, in plain terms
A fair value gap (FVG)is a three-candle imbalance: the middle candle moves so fast that the first candle’s high and the third candle’s low never overlap (for a bullish gap), leaving a zone price skipped through. A volume imbalance is the two-candle version: the candle bodiesleave a gap even though the wicks still overlap. ICT’s refinement combines them — when a volume imbalance sits under the gap, the zone extends down through it to the first candle’s closing price, producing the larger boxes he draws on his charts.
Two more rules complete the picture. The midpointof any zone (“consequent encroachment”) acts as the line the candle bodies must respect: wicks may probe it, but a body closing past it against the idea invalidates the setup. And not every gap is tradeable — in his July 1, 2026 lecture, ICT states that a fair value gap is valid only if it is either the first one presented in the current move, or anchored to a quadrant or octant (25% / 12.5% subdivision) of the graded dealing range.
Every one of those statements is mechanical. Which means every one of them is testable.
The tick-perfect call that started this
In his June 27, 2026 video, ICT walked through a Dollar Index projection built from a single volume imbalance: the June 22 close at 100.997 against the June 23 open at 101.005. Extending the displacement leg by a 1.25 ratio from two anchors gave two targets — 101.795 and 101.805 — whose midpoint is 101.800. The June 24 daily high printed 101.800 exactly, then the market reversed.
| Level | Published | Our reproduction |
|---|---|---|
| Volume imbalance zone | 100.997 – 101.005 | 100.997 – 101.005 |
| Lower target | 101.795 | 101.795 |
| Upper target | 101.805 | 101.805 |
| Midpoint (reversal expected) | 101.800 | 101.800 |
| Actual June 24 high | 101.800 — difference: 0.000 | |
We reproduced every number from raw TradingView OHLC data. The arithmetic checks out completely. But a single verified example tells you the method is internally consistent— not that it has an edge. For that you need every gap, not the memorable one.
Turning the rules into a backtest
We used DXY daily data from March 1973 (the start of the free-float era) through June 2026 — 13,479 candles. The detector found 6,035 fair value gaps, of which 5,558 passed the validity filter (2,790 first-presented, 2,768 quadrant/octant-anchored) and 477 failed both conditions. The setup, translated mechanically:
- A fair value gap forms and is confirmed by the third candle.
- Within 60 bars, price retraces back into the zone — entry at the zone edge. If a candle body first closes through the far side, the setup is cancelled (1,337 gaps died this way; 648 never retraced).
- Stop: the far edge of the zone. Invalidation exit: any daily body close past the midpoint against the trade.
- Target: the extreme printed between the gap’s formation and the retrace — the “draw on liquidity.”
Intrabar ambiguity was resolved conservatively: whenever a stop and a target were both touched in the same daily bar, we counted the stop. That biases the reported win rate down.
The results: 38% win rate, +0.29R expectancy
| Cohort | Trades | Win rate | Expectancy |
|---|---|---|---|
| Valid FVGs | 3,783 | 38.0% | +0.29R |
| first-presented | 1,853 | 36.4% | +0.36R |
| octant-anchored | 1,930 | 39.5% | +0.23R |
| Invalid FVGs (rejected by filter) | 203 | 22.2% | +0.25R |
| Bullish / bearish (valid) | 1,896 / 1,887 | 39.2% / 36.7% | +0.33R / +0.25R |
A 38% win rate sounds unimpressive until you look at the payoff distribution. The average winner returned +1.99R— the target (the prior extreme) is typically about twice as far as the stop. Full stop-outs averaged −0.98R. And the midpoint-invalidation exit — getting out the day a body closes past consequent encroachment — triggered 785 times at an average of just −0.30R, rescuing roughly two-thirds of the risk on trades that would otherwise have mostly hit full stops.
The validity filter separated cleanly: 38.0% for gaps that passed versus 22.2% for gaps that failed both conditions — a 16-point gap in exactly the direction the rule predicts, though the rejected cohort is small.
Five decades of stability — and one warning
| Decade | Trades | Win rate | Expectancy |
|---|---|---|---|
| 1970s | 973 | 37.0% | +0.24R |
| 1980s | 1,164 | 39.7% | +0.38R |
| 1990s | 555 | 42.3% | +0.29R |
| 2000s | 406 | 38.2% | +0.25R |
| 2010s | 418 | 34.2% | +0.05R |
| 2020s | 267 | 30.7% | +0.55R |
Positive in every decade — that is more robustness than most published patterns survive. But the 2010s, the low-volatility QE era, compressed the edge to almost nothing (+0.05R before costs would likely have been a net loser). The edge appears to need volatility: the 2020s combined the lowest win rate with the highest expectancy, meaning fewer but much larger winners.
What we’d want you to take away
- The framework is internally consistent and codeable.Everything — gap detection, validity, midpoint grading, targets — reduced to unambiguous rules that reproduced the published example to the tick.
- The edge is modest, asymmetric, and persistent— not the tick-perfect certainty highlight reels suggest. Roughly 4 losers in 10 hit full stops; the system survives on 2:1 winners and cheap early exits.
- The distinctive rules add measurable value.Both the validity filter (+16 points of win rate) and the midpoint invalidation (−0.30R exits instead of −1R) improved results. These are the parts most imitators skip.
- Regime matters. A decade of near-zero expectancy is survivable in a backtest and brutal in real time.
Caveats, honestly stated: one market, one timeframe, no transaction costs, entries at first touch of the zone, and our daily-chart operationalization of concepts ICT mostly demonstrates intraday. The conservative intrabar assumption biases results against the setup, but costs would push the other way — with a median hold of one day, they matter.
This article is independent research and education, not investment advice or a recommendation to trade any instrument or strategy. Historical results do not predict future performance. Fair value gap and related concepts are taught publicly by The Inner Circle Trader (ICT); the code, testing methodology, and conclusions here are our own.
We test patterns for a living
Seasonal Edge stress-tests recurring market patterns across 4,500+ securities with the same skepticism we applied here — win rates, out-of-sample checks, and regime awareness included.
Explore Seasonal Edge →