Strategy: cap gap at 35% (blow-off gappers fade) — train/test validated

The ONLY entry change that survived rigorous validation on 14 SIP-backfilled
sessions (53 trades). Gap-size buckets: 15-30% gap = +0.65R/trade, but 30-60%
blow-offs = +0.10R. Train/test split (70/30 by date): lowering TRIGGER_GAP_MAX
60 -> 35 lifts HELD-OUT TEST expectancy 0.194 -> 0.462 R/trade AND total R
(18.7 -> 19.9), better win rate, on both splits. Principled (huge gaps
fade/buy-the-top) and corroborated by the entry-timing audit (losers were
wide-range blow-off gappers).

Rejected after validation (do NOT ship): open-delay (forgoes total R for
marginal expectancy), breakout-HOLD/close-confirmation (hurts on the larger
sample), rvol floor (no-op: all gappers already rvol>=6). Confirmed KEEP: the
$-vol floor is fine on SIP volume (the earlier "it hurts" was corrupted IEX
data); profit-lock ladder stays.

.env TRIGGER_GAP_MAX 60 -> 35. NB: 14-day sample — re-validate as data grows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
momentum devandClaude Opus 4.8 committed 2026-06-18 19:01:13 -04:00
1 parent ea414e2822
commit 977c6e1b25
1 file changed
+4 -1
+4 -1
View File
@@ -109,7 +109,10 @@ TRIGGER_MAX_ARMED=10 # gappers kept ready to fire at once
TRIGGER_INTERVAL_SECONDS=4 # fast path: live-price check / fire cadence
TRIGGER_ARM_INTERVAL_SECONDS=20 # re-rank + recompute triggers cadence
TRIGGER_GAP_MIN=3.0 # min overnight gap %
TRIGGER_GAP_MAX=60 # skip blow-off gappers (they fade / buy-the-top)
# Cap the gap: blow-off gappers (>35%) fade — they're the worst-expectancy
# bucket. Train/test validated on 14 SIP-backfilled sessions: lowering 60->35
# lifted held-out TEST expectancy 0.19R -> 0.46R/trade AND raised total R.
TRIGGER_GAP_MAX=35
TRIGGER_RVOL_MIN=2.0 # min RELATIVE volume to fire
# Absolute liquidity gate: rvol is relative, so 2x of near-nothing still
# qualifies and we fill at the top of a thin one-bar spike that reverses. This