iFVG (Inverse Fair Value Gap)
A 3-bar imbalance gap that gets re-tested in the opposite direction. The base retest fires across 1m/5m/15m/1h timeframes; the STK GOLD tier uses per-(timeframe, symbol) structural targets (SESS_HL, PMH/PML, LON_HL, MN_OPEN). Canonical real-pnl shows escalating per-trade economics from 1m → 1h: pooled +$0.68/tr → +$60.56/tr after $4 commission, with MNQ at +$124/tr at 1h.
updated 2026-05-04The setup
A Fair Value Gap (FVG) is a 3-bar imbalance: bar N-1’s high (or low) doesn’t overlap with bar N+1’s low (or high) — leaving an unfilled price zone between them. An inverse FVG (iFVG) is what happens when price trades back through that gap and then uses the far side as support or resistance for the next move.
The setup we trade is the retest of an iFVG — price returns to the gap’s far edge, gets rejected, and resumes the move. Stop sits a fraction beyond the far edge; target is a structural level (PDH/PDL, session extreme, etc).
The discipline of the size filter matters more than any other rule. Without it, tiny FVGs are noise — they form, retest, and fail randomly. With gap_size ≥ 0.5 × ATR14, the gap is meaningful given current volatility and the retest carries genuine information.
Line ships on our chart HUD as iFVG BULL / iFVG BEAR.
Entry rules
- Trigger: unfilled FVG flips polarity — price closes back through the gap, far edge becomes new support (bull) or resistance (bear)
- Filter:
gap_size >= 0.5 × ATR14— the single most important rule - Direction: opposite of the original gap (a bullish FVG that flips becomes a bear iFVG)
- Entry: market on retest close, or limit at the far gap edge
- Stop:
0.5 × gap_sizebeyond the far edge (so risk =0.5 × gap_size) - Target: structural — per-(timeframe, symbol) mapping (PDH/PDL, SESS_HL, MN_OPEN, etc.). See STK GOLD section below.
- TTL: 240 minutes (4 hours) absolute clock time; matches sim hold window
The empirical edge
The original 04-28 study reported 81% 1R win rate using the strict-reclassify framework. After methodology audit (2026-05-04), the canonical real-pnl numbers — using first-exit-wins broker semantics with timeout closing at the H_BARS bar’s actual close, not 0R — paint a different picture. The setup is genuinely positive but at lower absolute WR than the original headline implied.
Canonical real-pnl by timeframe (5+yr, 7 syms pooled, after $4 commission)
| Source TF | Pooled $/tr after comm | Volume / yr / sym | Best per-trade $ |
|---|---|---|---|
| 1m base + n_htfs≥2 | -$2.40 | ~6,000 | (current legacy STK loses to commission) |
| 1m + n_htfs=3 + PDH/PDL (STK GOLD) | +$0.68 | ~120 | +$8.97 (MNQ) |
| 5m + per-(sym) target | +$9.63 | ~1,000 | +$30.45 (MNQ PMH_PML) |
| 15m + per-(sym) target | +$24.59 | ~250 | +$60.80 (MNQ SESS_HL) |
| 1h + per-(sym) target | +$60.56 | ~50 | +$141.84 (MNQ SESS_HL) ★ |
The 1h cohort is the strongest tradeable setup we’ve validated. ~50 signals per year per symbol, +$60+ per trade after commission across 6 of 7 symbols.
Three things to know:
-
R-multiple is consistent across TFs. Per-trade R stays around +0.5R (pooled). What changes is the dollar size of each R — larger gaps on higher TFs mean each R is worth more, which is what beats commission.
-
Asset-agnostic with one exception. MNQ/MES/MYM/MGC/MCL/MBT are all profitable on 5m+. Only SI stays marginal at every TF — excluded from the production allowlist.
-
No decay. Canonical 2021-2026 per-year breakdown shows no regime erosion across any TF.
Why the size filter matters
Without the 0.5 × ATR14 filter, the trade is barely playable. Tiny FVGs are noise — they form, they retest, they fail. The 0.5 × ATR14 cutoff isolates gaps that are meaningful given current volatility. The transition is sharp:
| Filter | 1R WR (strict-reclassify, 04-28) | Trades retained | Edge |
|---|---|---|---|
| no filter | ~60% | 100% | marginal |
gap_size ≥ 0.25 × ATR14 | ~70% | 60% | usable |
gap_size ≥ 0.5 × ATR14 | 81% | 45% | strong |
gap_size ≥ 1.0 × ATR14 | 84% | 12% | great but rare |
Methodology note: WR figures in this table use the original 04-28 strict-reclassify framework (treats target-touch within H_BARS as a “win” regardless of intra-bar timing). Canonical real-pnl numbers are lower in absolute terms but the relative shape holds — the 0.5× cutoff still captures the size-filter sweet spot. The 0.5× line is what we ship live.
How iFVG feeds the consensus scorer
The iFVG signal also functions as a gate for the broader TRIPLE consensus model. When an active iFVG aligns with the consensus direction, the signal gets a confidence boost; when no qualifying iFVG is in play, lower-tier signals get downweighted. This is the “iFVG gating” filter — the empirical version of “trade only when there is real structure.”
Cross-contract stability — canonical $/tr after commission
The per-(TF, sym) economics from canonical real-pnl simulation. Numbers are dollars per trade after $4 round-trip commission, pooled 5+ years.
| Symbol | 1m STK GOLD | 5m | 15m | 1h |
|---|---|---|---|---|
| MNQ | +$8.97 | +$30.45 (PMH/PML) | +$60.80 (SESS_HL) | +$141.84 (SESS_HL) |
| MGC | +$1.67 | +$15.17 (SESS_HL) | +$38.01 (SESS_HL) | +$89.92 (SESS_HL) |
| MES | +$2.54 | +$15.12 (PMH/PML) | +$32.22 (SESS_HL) | +$73.43 (SESS_HL) |
| MBT | +$2.04 | +$8.45 (MN_OPEN) | +$25.66 (MN_OPEN) | +$63.88 (MN_OPEN) |
| MCL | +$0.29 | +$9.76 (LON_HL) | +$24.38 (SESS_HL) | +$56.21 (SESS_HL) |
| MYM | -$0.66 | +$7.48 (LON_HL) | +$20.97 (SESS_HL) | +$52.68 (SESS_HL) |
| SI | -$3.15 | -$1.49 | +$1.41 | +$8.53 (excluded) |
The target type in parentheses is the per-(TF, sym) winner from the structural-extremes study (n=600k pooled retests, 9-target sweep). MNQ leads at every TF; MBT has its own preferred target (MN_OPEN) but otherwise the equity index family converges on SESS_HL at higher TFs.
Why Tier 1
Highest win rate, largest sample, longest stability window, and asset-agnostic. The only reason it isn’t a kill-switch override is that TTL is open-ended — an iFVG can sit unfilled for hours, so it doesn’t replace time-bound signals like AMD or SB CONTINUATION. It complements them.
Stacked iFVG (STK) — the original variant
The base 1m iFVG retest with HTF confluence has been live since 04-28. A 1m retest where the gap zone overlaps with at least 2 unmitigated iFVGs on higher timeframes (5m/15m/1h) qualifies as a stacked setup. Stacking encodes that multiple participants left imbalances at the same level — when they all flip together, the retest carries more weight.
Filters
1m iFVG retest (base trigger)
AND gap_size ≥ 0.5 × ATR_14(1m) (size filter)
AND n_htfs_aligned ≥ 2 (stack filter)
n_htfs_aligned counts how many of three higher timeframes (5m, 15m, 1h) have a same-direction inverted FVG whose zone overlaps the 1m zone at the moment of retest.
The 04-28 audit — the gate is real, the absolute numbers were inflated
The original ship reported 89% WR / +0.63R per fill. After the canonical real-pnl audit (2026-05-04), the live numbers are more modest:
- Live data (n=63 STK setups, 6 days): 73% pooled WR, -$2.40/tr after commission
- Per-model n_htfs gate study (n=64,555 predictions): confluence with iFVG genuinely lifts model WR by +25.8 percentage points across all 24 whitelist models. The gate works; the absolute prime_wr values were measured on a strict-reclassify framework that inflated WR readings ~50 absolute pp.
What this means: the iFVG confluence filter is a real edge. The 1m STK base setup just isn’t strong enough on its own to clear $4 commission. The fix is the new STK GOLD tier.
STK GOLD — multi-TF cascade with structural targets (shipped 2026-05-04)
After identifying that 1m fixed-2R targets cap winners below the commission threshold, we built a new tier that:
- Fires across 4 timeframes (1m + 5m + 15m + 1h) with proper bar-source detection
- Uses structural targets per-(TF, symbol) — the closest-reachable structural extreme rather than a fixed R-multiple
- Naturally selects for higher-quality setups via the n_htfs filter (1m requires n_htfs=3, higher TFs use med+ filter only)
Per-(TF, symbol) target mapping
5m: MNQ=PMH_PML MES=PMH_PML MYM=LON_HL MGC=SESS_HL MCL=LON_HL MBT=MN_OPEN
15m: MNQ=SESS_HL MES=SESS_HL MYM=SESS_HL MGC=SESS_HL MCL=SESS_HL MBT=MN_OPEN
1h: MNQ=SESS_HL MES=SESS_HL MYM=SESS_HL MGC=SESS_HL MCL=SESS_HL MBT=MN_OPEN
1m: PDH/PDL fallback (or MN_OPEN for MBT)
| Target | Definition |
|---|---|
| SESS_HL | Today’s running session high/low at the moment of retest |
| MN_OPEN | Today’s midnight (00:00 ET) bar open |
| LON_HL | London session (03:00–08:00 ET) high/low |
| PMH_PML | Prior month (~21 trading days) RTH high/low |
| PDH_PDL | Prior day RTH high/low |
The target choices came from a 9-target structural-extremes sweep (n=600k pooled retests). For 15m+1h equity-index setups, SESS_HL is universally best; for MBT the midnight open consistently dominates; on 5m, more distant magnets like prior monthly extremes work for MNQ/MES while London-session extremes work for the commodity family.
We also tested DAY_OPEN (09:30 RTH) and GLOBEX_OPEN (18:00 ET reset) — DAY_OPEN had lookahead bias for overnight retests, and GLOBEX_OPEN was lookahead-clean but underperformed SESS_HL by $1-19/tr at every (TF, sym). The “running session high/low” wins because mean-reversion plays prefer the closest reachable structural target, not the most distant.
Engine architecture
scan_symbol— legacy 1m STK 5-tier path (PRIME PRIME / PRIME / FULL / OVERNIGHT / SCALP) with the 1m + n_htfs=3 STK GOLD hookscan_ifvg_gold_htf— independent multi-TF cascade for 5m/15m/1h, fires on med+ retests with per-(TF, sym) structural targets- Per-TF cooldown — 5m=60min, 15m=180min, 1h=360min between same-(sym, dir) emits
- Trigger labels distinguish source TF:
iFVG STK GOLD <KIND> <5M|15M|1H> MARKET
Volume estimate
| Cohort | Per sym/year | Pooled/day across 6 syms |
|---|---|---|
| 1m STK 5-tier | ~6,000 | ~100 |
| 1m STK GOLD (n_htfs=3) | ~120 | ~2 |
| 5m STK GOLD | ~1,000 | ~15 |
| 15m STK GOLD | ~250 | ~4 |
| 1h STK GOLD | ~50 | ~1 |
SI is excluded from STK GOLD — only marginal +$1-8/tr depending on TF, not enough to overcome commission with confidence.
What ships live
- Generators:
setup_generator.pyscans 1m iFVG retests via legacyscan_symbolpath AND non-1m viascan_ifvg_gold_htf. Both emitsetup_newevents intosetup_log.jsonl. - Trigger labels:
iFVG STK 2HTF [5m,15m] MARKET(legacy 1m, 5-tier system)iFVG STK GOLD <KIND> 3HTF [5m,15m,1h] MARKET(1m triple-stack)iFVG STK GOLD <KIND> {5M|15M|1H} MARKET(HTF cascade)
- HUD promotion: chart HUD surfaces the highest-tier active setup with proper entry/stop/T1/T2/T3.
- NT8 indicator:
IFVGStackedSetups.csmarks setups on chart.
Methodology note — why the 04-28 numbers changed
The original 04-28 study used strict-reclassify methodology: for each iFVG retest, check if mfe_R >= 1 (was target ever touched) and mae_R <= -1 (was stop ever touched) within H_BARS. This systematically overstates win rate for two reasons:
- Order-blind on same-bar collisions — if a single 1m bar contains both target and stop touches, the strict reclassify counts whichever side it inspects first (target). Real broker semantics fill stops first when bar opens close to stop.
- Timeout = 0R accounting — bars that don’t resolve in H_BARS get scored as “scratched” (0R). In live, those trades don’t scratch — they exit at whatever price the last bar happens to close at, which is roughly 50/50.
The canonical real-pnl framework — first-touch-wins with pessimistic same-bar tie + timeout closing at H_BARS bar’s actual close — is what the STK GOLD tier and the per-(TF, sym) target study are based on. The numbers shown in this page reflect the canonical framework throughout.
History
- 2026-04-28 — Original multi-TF backtest. Filter rule frozen at
gap_size ≥ 0.5 × ATR14. Stacked variant shipped to prod with 5-tier classification. - 2026-05-04 morning — Methodology audit identified strict-reclassify bias. Live data (n=63, 6 days) showed pooled 73% WR / -$2.40/tr after commission. PRIME PRIME ≥95% absolute claim refuted; gate-vs-baseline lift (+25.8pp) confirmed real.
- 2026-05-04 midday — STK GOLD shipped: triple-stack (n_htfs=3) + PDH/PDL targets on 1m base. A/B alongside legacy 5-tier system.
- 2026-05-04 afternoon — Multi-TF cascade shipped. STK GOLD now fires across 1m/5m/15m/1h. Canonical real-pnl: 1m +$0.68/tr → 5m +$9.63 → 15m +$24.59 → 1h +$60.56 after $4 commission, all pooled.
- 2026-05-04 evening — Per-(TF, sym) target mapping shipped. SESS_HL universal winner for equity index 15m+1h; PMH/PML for MNQ/MES 5m; LON_HL for MYM/MCL 5m; MN_OPEN for MBT all TFs. DAY_OPEN and GLOBEX_OPEN tested + ruled out (lookahead and underperformance respectively).
- Next — 30-day live validation: compare actual emit $/tr per (TF, sym) cohort vs simulation predictions. Drop any cohort that fails to replicate. Per-TF cooldown tuning based on observed signal density.