Fair value gaps: we measured 4,827 of them on Bitcoin
We detected 4,827 fair value gaps across 826 days of Bitcoin data and measured fill rates, time to fill, and whether FVGs beat random price levels.
Fair value gaps are the most searched concept to come out of the ICT and smart money vocabulary, and almost every explanation of them repeats the same two claims: gaps get filled, and unfilled gaps act as support or resistance. Almost nobody attaches a number to either claim.
We ran the numbers on 826 days of Bitcoin, three timeframes, 4,827 gaps in total. Both claims are technically true and practically much weaker than advertised.
What a fair value gap is
The definition is mechanical. Take any three consecutive candles. If the low of the third candle sits above the high of the first, the middle candle moved so fast that a price band traded in only one direction. That band, from the first candle's high to the third candle's low, is a bullish fair value gap. Mirror it for a bearish FVG: the high of candle three sits below the low of candle one.
The middle candle is the displacement candle. In order-flow terms, a displacement candle is a burst of one-sided taker aggression that consumed the resting liquidity on one side of the book faster than makers could refill it. A footprint chart shows this directly: stacked imbalances at consecutive price levels, heavy volume on one side of each cell, thin prints on the other. The FVG is a price-only shorthand for something the footprint measures explicitly.
An inverse fair value gap (iFVG) is the follow-on concept: once a bullish gap is fully traded through to the downside, the same zone is supposed to flip polarity and act as resistance. Keep that one in mind, because our reversal test speaks to it.
How we tested
The rules were fixed before running anything:
- Data: Coinbase BTC-USD hourly candles, 2024-05-01 to 2026-08-05 UTC. 19,826 candles, 826 days. Resampled to 4h and 1D for the higher-timeframe passes.
- Detection: strict three-candle definition, no filters, no discretion. 3,690 gaps on 1h, 952 on 4h, 185 on 1D. Bullish and bearish split near 50/50 on every timeframe.
- Fill definitions: touch means price re-entered the gap by any amount. 50% fill means price reached the gap midpoint (the "consequent encroachment" level in ICT terms). Full fill means price traversed the entire gap.
- Horizons: a gap only counts toward a horizon if enough data existed after it to evaluate that horizon, so the tail of the sample does not inflate the rates.
No look-ahead, no cherry-picking sessions, no "valid setup" filter. This measures the raw claim: do gaps fill?
The base rates
1-hour FVGs (n = 3,690, median width 0.15%):
| Horizon | Touch | 50% fill | Full fill |
|---|---|---|---|
| 24 hours | 85.3% | 80.6% | 75.6% |
| 3 days | 91.6% | 88.6% | 85.2% |
| 7 days | 94.7% | 92.7% | 90.9% |
| 30 days | 97.2% | 96.2% | 95.2% |
| Ever | 98.6% | 98.4% | 98.1% |
4-hour FVGs (n = 952, median width 0.37%):
| Horizon | Touch | 50% fill | Full fill |
|---|---|---|---|
| 24 hours | 71.8% | 62.3% | 54.2% |
| 3 days | 81.4% | 75.6% | 70.5% |
| 7 days | 88.0% | 84.3% | 80.8% |
| 30 days | 93.9% | 91.1% | 89.8% |
| Ever | 97.7% | 96.8% | 96.6% |
Daily FVGs (n = 185, median width 0.85%):
| Horizon | Touch | 50% fill | Full fill |
|---|---|---|---|
| 7 days | 74.5% | 67.9% | 62.0% |
| 30 days | 86.5% | 82.6% | 79.2% |
| 90 days | 90.9% | 87.2% | 86.0% |
| Ever | 94.1% | 92.4% | 91.9% |
So yes, fair value gaps get filled. On the hourly chart the median gap is fully traded through in 5 hours, and the median first touch comes in 2 hours. By the time a video has finished explaining a gap to you, Bitcoin has usually already closed it.
That speed is the first problem with trading fills. The p90 tells the other half of the story: 10% of hourly gaps take longer than 105 hours to fill, and 10% of daily gaps that eventually fill need more than 57 days. "It fills eventually" and "it fills before your stop" are different claims, and only the second one pays.
The control test: gaps versus any nearby level
Here is the test the explainer sites skip. If "price returns to fill the gap" is a real magnet effect, gaps should get revisited more often than arbitrary price levels at the same distance.
For every FVG we measured the distance from the close of the third candle to the far edge of the gap. Then we placed a level at that exact percentage distance from price, on the same side, anchored at a uniformly random point in the sample, and asked the same question: does price reach it within the horizon?
| Horizon | FVG full fill | Random same-distance level | Gap premium |
|---|---|---|---|
| 24 hours | 75.6% | 72.4% | +3.2pp |
| 3 days | 85.2% | 83.1% | +2.1pp |
| 7 days | 90.9% | 89.4% | +1.5pp |
Three percentage points at one day, and the edge decays toward nothing as the horizon stretches. Nearly all of the "gaps get filled" effect is just Bitcoin revisiting nearby prices, which it does constantly, gap or no gap. The gap is not a magnet. The market is a revisiting machine, and gaps sit in its path like everything else.
This is the same shape of result we found when we put the liquidation tape under liquidity grab and stop hunt claims: the phenomenon exists, the mechanism in the retail story is mostly narrative.
The reversal test: does the gap hold?
The tradable version of FVG theory is not the fill, it is the bounce. Price taps a bullish gap and resumes upward. Price taps a bearish gap and gets rejected downward. That is the entry logic in nearly every FVG strategy video.
We measured forward returns from the close of the bar that first touched each gap:
| After first touch | Median 24h | Positive | Median 72h | Positive | n |
|---|---|---|---|---|---|
| Bullish FVG (should go up) | +0.11% | 53.0% | +0.31% | 53.5% | 1,870 |
| Bearish FVG (should go down) | +0.03% | 50.8% | +0.23% | 52.3% | 1,765 |
| Baseline, any hour | +0.05% | 51.1% | +0.12% | 51.4% | 2,829 |
The bearish rejection does not exist in this sample. After price touches a bearish FVG it keeps drifting up, and at 72 hours it drifts up faster than the unconditional baseline, +0.23% against +0.12%. That is not a weak rejection, it is the wrong sign. The bullish touch shows a whisper of edge over baseline, +0.11% against +0.05% median over 24 hours, which is inside the cost of a round trip on a perp once fees and slippage are paid.
If iFVG logic worked mechanically, the bearish rows would be negative. They are not even flat in the right direction.
Where the signal actually lives: size
One cut of the data does behave the way displacement logic says it should. Big gaps stay open longer.
| Timeframe | Small gaps | Mid gaps | Large gaps |
|---|---|---|---|
| 1h, full fill in 7d | 95.0% | 92.6% | 85.0% |
| 4h, full fill in 7d | 89.2% | 82.1% | 71.1% |
| 1D, full fill in 7d | 78.7% | 61.7% | 46.0% |
Large daily gaps (median 2.1% wide) fill within a week less than half the time. That is the one population where an unfilled gap tells you something: the displacement was large enough that the market did not immediately trade back through it. In order-flow terms, initiative flow moved price to a new area and the new area held. Traders who watch volume profile will recognize this as the difference between rotation inside value and a genuine value migration.
The practical inversion of the retail heuristic: small gaps fill so reliably and so fast that they carry no information, and large gaps are precisely the ones you should not bet on seeing filled.
What sits inside a gap
A fair value gap drawn on a candlestick chart is a rectangle over a price band. The footprint of the displacement candle shows what actually happened inside that band: which prices printed volume, on which side of the book, and whether anyone defended the move. Two gaps that look identical as rectangles can be built from completely different flow, a thin sweep through a liquidity hole, or heavy absorbed selling that got overwhelmed. CVD tells you whether the aggression that built the gap continued after it or dried up the moment the candle closed.
That context is the part the three-candle pattern cannot see, and it is the difference between "a gap exists" (which happens 31 times a week) and "one-sided flow moved the market and nobody faded it" (which is rarer, and is the thing the gap was always a proxy for).
What this means if you trade FVGs
Three things follow from the data.
The fill claim needs a horizon to mean anything. 98% of hourly gaps fill eventually, and a random level at the same distance gets hit almost as often. Any backtest of "trade toward the gap" is mostly a backtest of mean reversion plus market drift, and it has to survive the p90 wait times: 4 days on hourly gaps, 8 weeks on daily ones.
The bounce claim is where the strategy content is weakest. Coin-flip continuation after bearish touches, a few basis points over baseline after bullish ones. If an FVG entry works for you, the work is being done by everything around it, the trend filter, the session, the higher-timeframe level, not by the rectangle.
Displacement size is the residual signal. The market's failure to refill a large daily gap is informative in a way that hourly gap-counting is not. If you keep one FVG habit, keep that one.
What this doesn't tell you
One venue, spot prices, one asset, 826 days, and a strictly mechanical definition. We did not test ICT's full context stack: session timing, higher-timeframe bias, confluence with order blocks or liquidity levels. A discretionary trader would call many of our 4,827 gaps invalid setups.
That is exactly why we published the unconditional base rates. They are the floor any filtered strategy has to beat, measured before survivorship stories get involved. If a filter turns 51% into something durable, that filter, not the gap, is the strategy.
The dataset and detection rules are stated in full below, and the aggregate microstructure behind the current tape is queryable by agents over MCP, so the live side of this can be re-run against today's market instead of a screenshot.
Frequently asked questions
What is a fair value gap?
A three-candle pattern where the middle candle moves so fast that the first and third candles' wicks do not overlap. The untraded band between the first candle's high and the third candle's low (for a bullish FVG) is the gap. It marks a burst of one-sided taker flow that consumed resting liquidity faster than makers refilled it.
Do fair value gaps always get filled?
Almost always, eventually: 98.1% of hourly Bitcoin FVGs in our 826-day sample were fully traded through, with a median time to full fill of 5 hours. But a random price level at the same distance was hit 72.4% of the time within 24 hours versus 75.6% for gaps, so the fill is mostly ordinary price revisiting rather than a gap-specific magnet. The honest answer is yes, on no particular schedule, and so does everything else nearby.
What is an inverse fair value gap?
A filled FVG that is supposed to flip polarity: a broken bullish gap becomes resistance, a broken bearish gap becomes support. In our data the rejection component this idea depends on did not show up. Median 24-hour forward returns after a bearish-gap touch were +0.03% against a +0.05% baseline, and at 72 hours they were +0.23% against +0.12%, which is the wrong sign for a rejection.
How big is a typical fair value gap on Bitcoin?
Median width in our sample: 0.15% of price on the 1-hour chart, 0.37% on 4-hour and 0.85% on daily. The top decile of daily gaps exceeded 2.8%. Width matters: gaps in the largest tercile fill significantly less often within a week on every timeframe, and only 46.0% of large daily gaps closed inside 7 days.
Is a fair value gap the same as an imbalance?
They are related but not identical. An FVG infers imbalance from candle geometry. A footprint chart measures imbalance directly from executed volume at each price level, diagonal buy-versus-sell comparisons included. Every FVG implies a footprint imbalance; plenty of footprint imbalances never produce a visible candle gap.
Dataset. Source: Coinbase Exchange BTC-USD, hourly OHLCV, 2024-05-01T00:00Z to 2026-08-05T11:00Z (19,826 candles, 826 days), resampled to 4h and 1D. Detection: strict 3-candle FVG (low of candle 3 above high of candle 1 for bullish, high of candle 3 below low of candle 1 for bearish). Fill horizons evaluated only where sufficient forward data existed. Counts: 3,690 (1h), 952 (4h), 185 (1D); bull/bear 1,881/1,809, 495/457, 95/90. Control: distance-matched random levels, same side, uniform random anchor timestamps, fixed seed. Forward-return baseline: 24h and 72h returns sampled every 7 hours. Computed 2026-08-05.
MarketTrace shows aggregated funding, order-book imbalance, CVD, open interest and cross-exchange liquidations for BTC, ETH, SOL, BNB, XRP, DOGE and HYPE across Binance, Bybit, OKX and Hyperliquid (liquidations cover Binance, Bybit and OKX). Descriptive microstructure, not financial advice.