From 977c6e1b250e0000ec0052dd9654bd84dcf814a9 Mon Sep 17 00:00:00 2001 From: momentum dev Date: Thu, 18 Jun 2026 19:01:13 -0400 Subject: [PATCH] =?UTF-8?q?Strategy:=20cap=20gap=20at=2035%=20(blow-off=20?= =?UTF-8?q?gappers=20fade)=20=E2=80=94=20train/test=20validated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .env.example | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 42f8189..fd899bb 100644 --- a/.env.example +++ b/.env.example @@ -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