INSIDE GAP FILL
RTH opens inside prior day's range but ≥10pt from prior close. Target prior_rth_close. Fill rate scales cleanly with gap_ratio: 77% mild, 53% moderate, 33% elevated.
updated 2026-04-20The setup
RTH opens inside the prior RTH range (so it’s not a “real” gap) but far enough from the prior close (≥ 10pt) that there’s something to mean-revert toward. Most of the time — especially when the gap is mild relative to ATR — price walks back to the prior close quickly.
The fill rate is not constant. It scales cleanly with gap_ratio = |gap| / atr20:
| Bucket | gap_ratio | n | Fill % | Median fill min |
|---|---|---|---|---|
| mild | <0.3 | 437 | 77.3% | 8 |
| moderate | 0.3–0.6 | 190 | 53.2% | 42 |
| elevated | 0.6–1.0 | 57 | 33.3% | 83 |
| extreme | ≥1.0 | 7 | 14.3% | 222 |
The old production regime flag only triggered on gap_ratio > 1.0 — completely blind to the 77→33% gradient below that. Model 17 fixes that.
Line ships on our chart HUD as INSIDE GAP FILL.
Entry rules
- Window: RTH open
- Inside: pdl ≤ rth_open ≤ pdh
- Gap size: |open − prior_close| ≥ 10pt
- Gap ratio: < 1.0 (≥1.0 handled by regime flag, not this model)
- Direction: opposite of gap (bull if gap_down, bear if gap_up)
- Target: prior_rth_close
- Probability: 77 / 53 / 33 by bucket, +6% if |gap| ≤ 30pt
- TTL: 240 minutes
Backtest
Walk-forward backtest, 1,305 RTH days:
- 652 signals, 66.1% hit rate, avg predicted 68.4% (calibration drift ~2.3pt)
- 65%+ bucket: n = 417, 77.2% hit — excellent calibration
- 45–54% bucket: n = 182, 48.9% — slightly over (expected 53%)
- <45% bucket: n = 53, 37.7% — in-line with 33% + 6% size bonus
Direction split (inside_up vs inside_down): 68.4% vs 68.8% — symmetric. No directional split needed.
Size sweet spot
Gaps of |30pt| or less fill 83–88% and hit fast (within 3–4 minutes). The +6% bonus applies inside that window. Above 30pt, no bonus — the gap is large enough that fill is real work.
Why Tier 2
- Solid, calibrated signal with ~130 signals per year — decent cadence.
- But: the edge is a mean-reversion magnet, not a directional conviction setter.
- Short median fill (8 min in mild bucket) means if it’s going to work, it works fast — the TTL mostly exists to catch the slower moderate/elevated resolves.
History
- 2026-04-20 — Shipped. Replaces the binary “gap > 1.0 ATR” regime flag with per-bucket probability.
- Open follow-up: re-calibrate 33% bucket after 50+ live signals; AMD-alignment effect not yet tested.