docs: lock execution-recovery decisions and ops constraints
Record monotone fill-timing gradient, live [1.57,1.77] bracket, recover-flag interpretation, gap-cap as third tail-trim, and pre-scheduler ops checklist.
This commit is contained in:
@@ -74,9 +74,15 @@ Overnight gap on validation entries: mean **−0.52%**, median −0.18%, p05 −
|
||||
|
||||
This is not “slippage noise.” It is largely the **overnight momentum drift** that close-fill earns and a 07:00-Berlin scanner (signal yesterday’s close → fill tomorrow’s open) **structurally cannot**. Honest deployable number under that schedule is ~Sharpe 1.2 / CAGR 30%, not 1.77 / 48%.
|
||||
|
||||
**Decision baseline going forward:** grade **promotion** under `fill_mode=next_open`; keep close-fill as the historical control for comparability with prior reports.
|
||||
**Decision baseline going forward (until near-close ships):** grade **promotion** under
|
||||
`fill_mode=next_open`; keep close-fill as the historical control for comparability
|
||||
with prior reports.
|
||||
|
||||
**Highest-leverage follow-up (not a strategy change):** near-close / MOC-style execution (~15:45 ET) so live fills sit near the close the signal is built on. Simulator proof arm: `stale_close` (signal t−1 close, fill t close). Secondary: next-open **gap-cap** (skip open > +2% vs signal close) — measure, don’t assume.
|
||||
**Follow-up (done):** execution recovery matrix — see
|
||||
**[execution-recovery.md](execution-recovery.md)**. Short version: monotone fill-timing
|
||||
gradient + DD recovery prove this is *when you fill*; live bracket **[1.57, 1.77]**;
|
||||
gap-cap dead; no more fill-timing sim on this snapshot; ops move R:R scan to NY
|
||||
near-close (one scan/day).
|
||||
|
||||
### `fip_id` re-derivation — **validated**
|
||||
|
||||
@@ -101,10 +107,14 @@ No arm cleared ΔSharpe > 1 SE.
|
||||
- Regime-conditional max-hold as a “small” experiment
|
||||
- Treat validation-only max-hold glitter as a free CAGR lift
|
||||
- Ship vol targeting as edge without a vol-regime sample
|
||||
- More fill-timing simulation on this snapshot (settled — see execution-recovery.md)
|
||||
- Dual daily qualifying scans (would break gate-reset validation)
|
||||
- Gap-up entry filters (third tail-trim failure)
|
||||
|
||||
## What to do next
|
||||
|
||||
1. **Execution recovery matrix** — `stale_close` vs close vs next_open; optional gap-cap under next_open (`scripts/run_execution_recovery_matrix.py`).
|
||||
2. If `stale_close` ≈ close control: schedule scan near the US close (not a signal rewrite).
|
||||
3. Until near-close execution ships live: **decision baseline = next_open**.
|
||||
4. Phase B data work only when wanted: `nasdaq_all` + `fip_id`, earnings calendar, sector residual/caps.
|
||||
1. **Ship near-close execution** — ops checklist in [execution-recovery.md](execution-recovery.md)
|
||||
(one R:R scan/day in `America/New_York`, MOC window, partial-bar honesty).
|
||||
2. Until that ships: **decision baseline = next_open**.
|
||||
3. Strategy work (nasdaq_all, fip_id, sector) only **after** execution path is decided,
|
||||
graded under the fill mode you will trade.
|
||||
|
||||
Reference in New Issue
Block a user