What Is a Fair Value Gap?

A Fair Value Gap (FVG) is a price imbalance visible on the chart. It happens when a candle moves so aggressively that it leaves a “gap” between the candle before and after it.

Think of it like a rubber band being stretched. The price moved too fast, and it wants to come back to fill that gap.

The Three-Candle Pattern

Bullish FVG:
  C1: Normal candle
  C2: BIG bullish candle (the gap creator)
  C3: Normal candle — its LOW is above C1's HIGH

  The gap = space between C1's high and C3's low
  
Bearish FVG:
  C1: Normal candle  
  C2: BIG bearish candle (the gap creator)
  C3: Normal candle — its HIGH is below C1's LOW

  The gap = space between C1's low and C3's high

When price returns to this gap zone, it often bounces. That’s the trade.

The Bot Logic

  1. Detect FVG on 5-minute candles
  2. Place limit order at the FVG edge (entry price)
  3. Stop loss at the opposite edge of the FVG
  4. Take profit at 3x the risk (RR 3.0)

Simple. Clean. No indicators needed — just price action.

The Filters That Matter

Not every FVG is worth trading. After extensive testing, these filters survived:

Gap Size: 1.5% - 4.0%

  • Too small (< 1.5%): Noise. Fees eat the profit.
  • Too large (> 4.0%): Usually panic moves that don’t revert.

Candle Body ≥ 2.0%

The C2 candle (gap creator) needs a substantial body. Small-bodied candles with long wicks create fake FVGs.

C2 Body Overlap

The gap must overlap with C2’s body (open-to-close range). Gaps that only exist in the wick zone are unreliable.

MA20 Trend Filter

  • Price above 1h MA20 → Only take longs
  • Price below 1h MA20 → Only take shorts

Don’t fight the trend, even with mean-reversion setups.

SL Ratio < 65%

If more than 65% of historical trades on a coin hit stop loss, skip that coin. Some coins just don’t respect FVGs.

What I Tested and Rejected

This is equally important — what looked promising but failed:

Filter Result Verdict
Bollinger Band width < 2% No edge over 2 weeks Rejected
Entry delay (wait 1-3 candles) PnL decreased with each candle of delay Rejected
Large C2 body cap (> 3%) Filtered out profitable trades too Rejected
CE (50%) entry Worse than edge entry at all RR levels Rejected

Every one of these “made sense” logically. Bollinger Bands for choppy markets, delayed entry for confirmation — they all sound reasonable.

Data said otherwise. This is why you test everything.

Out-of-Sample Validation

Here’s where most strategies die. I tested across 4 quarters, 10 coins:

Quarter Trades Win Rate PnL
2025 Q2 ~380 38% +271U
2025 Q3 ~350 35% +38U
2025 Q4 ~400 40% +273U
2026 Q1a ~300 32% -36U

3 out of 4 quarters profitable. The losing quarter was a sideways market — a known weakness.

Total: +548U over 1 year on data the strategy never trained on.

This isn’t overfitting. This is edge.

Live Performance

After the out-of-sample validation, I deployed it live:

  • 24h PnL-based coin scanning every 6 hours
  • 10 coins running simultaneously
  • $200 per trade, 3x leverage
  • Real slippage, real fees, real market conditions

The live-backtest match rate after fixing all the bugs: 100% entry price match, minor SL timing differences only.

FVG vs Trend Following

I now run both bots simultaneously. They complement each other:

Aspect Trend Following FVG
Market type Trending Any (with trend filter)
Entry style Breakout Mean reversion
Hold time ~2.6 hours ~1-4 hours
Win rate ~57% ~33%
Risk-reward ~1:1.2 1:3

Different strategies, different edges. When one struggles, the other often thrives.


The best portfolio isn’t one strategy optimized to death — it’s multiple strategies that disagree with each other.