backtest
Momentum re-measured with only that day’s information
No peeking at later news. Only the FOMC calendar and the 200-day line known at time T.
I did not sneak in headlines learned later. Only the FOMC calendar and the market’s 200-day line, known that day, go into the filter. Take every signal and the drawdown is −70%. Judge first, then pick one name at a time, and it shrinks to −20%.
Rule name: Setup momentum_spec. Judge: skip new entries on FOMC ±1 or if SPY < SMA200.
Books compared
| Book | Trades | Win% | E[R] | total R | CAGR% | MaxDD% | stop/target/time |
|---|---|---|---|---|---|---|---|
| 1) Baseline (all signals, pooled 1R) | 3291 | 43.69 | 0.1268 | 417.3 | 66.60 | −70.38 | 1635/870/786 |
| 2) + frozen PIT judge | 2631 | 43.56 | 0.1297 | 341.3 | 52.62 | −68.40 | 1311/715/605 |
| 3) Live-style top-1 / max-6 | 767 | 42.76 | 0.0988 | 75.8 | 9.50 | −25.80 | 399/200/162 |
| 3b) Judge then top-1 / max-6 | 623 | 44.46 | 0.1752 | 109.2 | 14.73 | −19.85 | 312/184/121 |
Walk stats (3b)
- Signal days: 1919 · raw enters gated to 4884 · judge skips 1296 (636 FOMC, 758 SPY) · taken 623
Inventory honesty
Used at T: FOMC calendar, SPY vs SMA200, daily bars ≤ T, 63d RS/sector.
Not used: live theses, earnings filter keyed to date.today(), agent conviction, headline APIs.
Source
Summarized from state/reports/momentum_pit_macro_bt_20260821.md.