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:
1 parent
ea414e2822
commit
977c6e1b25
1 file changed
+4
-1
+4
-1
@@ -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
|
||||
|
||||
Reference in new issue
Block a user