| Month | Trades | P/L | WR |
|---|---|---|---|
| 2026-01 | 16 | +9.62 | 81.2% |
| 2026-02 | 11 | -0.47 | 63.6% |
| 2026-03 | 20 | +20.49 | 80.0% |
| 2026-04 | 20 | +14.63 | 70.0% |
| 2026-05 | 17 | +10.25 | 70.6% |
| 2026-06 | 11 | +7.30 | 72.7% |
| Reason | n | % |
|---|---|---|
| Profit Target | 63 | 66% |
| Time Stop | 26 | 27% |
| Settled/Expired | 6 | 6% |
| Month | Trades | P/L | WR |
|---|---|---|---|
| 2022-05 | 6 | -0.50 | 33.3% |
| 2022-06 | 20 | +2.53 | 50.0% |
| 2022-07 | 20 | +2.95 | 65.0% |
| 2022-08 | 23 | +4.40 | 65.2% |
| 2022-09 | 21 | +2.95 | 66.7% |
| 2022-10 | 21 | +3.10 | 71.4% |
| 2022-11 | 21 | -1.30 | 52.4% |
| 2022-12 | 21 | -4.05 | 42.9% |
| 2023-01 | 20 | -8.78 | 30.0% |
| 2023-02 | 19 | +2.77 | 63.2% |
| 2023-03 | 23 | +3.93 | 69.6% |
| 2023-04 | 19 | -7.53 | 36.8% |
| 2023-05 | 22 | -0.73 | 54.5% |
| 2023-06 | 21 | -1.05 | 61.9% |
| 2023-07 | 20 | +5.98 | 70.0% |
| 2023-08 | 23 | -2.52 | 52.2% |
| 2023-09 | 20 | -0.20 | 55.0% |
| 2023-10 | 22 | -3.08 | 45.5% |
| 2023-11 | 21 | +1.32 | 57.1% |
| 2023-12 | 20 | +3.75 | 65.0% |
| 2024-01 | 21 | +8.53 | 76.2% |
| 2024-02 | 20 | +6.25 | 70.0% |
| 2024-03 | 20 | +4.70 | 60.0% |
| 2024-04 | 22 | -5.48 | 45.5% |
| 2024-05 | 22 | +4.40 | 72.7% |
| 2024-06 | 19 | +0.10 | 57.9% |
| 2024-07 | 22 | -3.27 | 40.9% |
| 2024-08 | 22 | -2.20 | 50.0% |
| 2024-09 | 20 | +0.05 | 40.0% |
| 2024-10 | 23 | +1.75 | 56.5% |
| 2024-11 | 20 | -6.08 | 40.0% |
| 2024-12 | 21 | -4.28 | 47.6% |
| 2025-01 | 20 | +2.40 | 60.0% |
| 2025-02 | 19 | +5.88 | 63.2% |
| 2025-03 | 21 | +22.05 | 95.2% |
| 2025-04 | 21 | +37.40 | 90.5% |
| 2025-05 | 21 | +16.48 | 71.4% |
| 2025-06 | 20 | +10.93 | 80.0% |
| 2025-07 | 22 | +5.45 | 63.6% |
| 2025-08 | 21 | +5.32 | 66.7% |
| 2025-09 | 21 | +6.52 | 66.7% |
| 2025-10 | 22 | +14.12 | 72.7% |
| 2025-11 | 19 | +8.65 | 57.9% |
| 2025-12 | 22 | +10.80 | 77.3% |
| 2026-01 | 20 | +6.85 | 60.0% |
| 2026-02 | 19 | +12.05 | 63.2% |
| 2026-03 | 22 | +16.30 | 86.4% |
| 2026-04 | 21 | +14.62 | 76.2% |
| 2026-05 | 20 | +15.07 | 80.0% |
| 2026-06 | 14 | +7.93 | 71.4% |
| Period | Months | Sessions | Total P/L | WR | Avg/trade | Notes |
|---|---|---|---|---|---|---|
| 2022 | 8 | 153 | +10.07 | 58.2% | +0.0658 | 1m resolution · first SPXW 0DTE Thursdays (some stale data) |
| 2023 | 12 | 250 | -6.13 | 55.2% | -0.0245 | 1m resolution · high-vol year |
| 2024 | 12 | 252 | +4.47 | 54.8% | +0.0178 | 1m resolution · Black Monday Aug 5 recovered |
| 2025 (1m) | 1 | 20 | +2.40 | 60.0% | +0.1200 | 1m (Jan only, before cbbo-1s availability) |
| 2025 (1s) | 11 | 229 | +143.60 | 73.4% | +0.6271 | 1s resolution · Liberation Day crash cluster |
| 2026 | 6 | 116 | +72.83 | 73.3% | +0.6278 | 1s resolution · live bot active Jan 2026+ |
The live bot (paper trading, Jan 2026–present) provides a ground-truth comparison. For every day where both the bot traded and the backtest ran, we compare:
| Date | Paper Cr | BT Cr | Cr diff | Paper P/L | BT P/L | P/L diff | Match |
|---|---|---|---|---|---|---|---|
| 2026-01-06 | $7.90 | $7.95 | -0.05 | +0.83 | +0.80 | +0.03 | ✓ |
| 2026-01-07 | $8.15 | $8.20 | -0.05 | +0.82 | +0.82 | -0.01 | ✓ |
| 2026-01-08 | $8.60 | $8.65 | -0.05 | +0.88 | -0.17 | +1.05 | ✓ |
| 2026-01-09 | $9.15 | $9.20 | -0.05 | -0.85 | -0.20 | -0.65 | ✓ |
| 2026-01-12 | $8.00 | $8.25 | -0.25 | -2.00 | -1.05 | -0.95 | ✓ |
| 2026-01-13 | $8.65 | $8.55 | +0.10 | +0.97 | +0.90 | +0.07 | ✓ |
| 2026-01-15 | $8.55 | $8.60 | -0.05 | +0.88 | +0.70 | +0.18 | ✓ |
| 2026-01-16 | $8.75 | $8.70 | +0.05 | +0.90 | +0.90 | +0.00 | ✓ |
| 2026-01-20 | $9.20 | $9.25 | -0.05 | -0.80 | +0.65 | -1.45 | ✓ |
| 2026-01-21 | $8.90 | $8.90 | +0.00 | +2.27 | +0.17 | +2.10 | ✓ |
| 2026-01-22 | $8.60 | $8.95 | -0.35 | +0.90 | -0.65 | +1.55 | ✓ |
| 2026-01-23 | $8.55 | $8.55 | +0.00 | +1.00 | +0.45 | +0.55 | ✓ |
| 2026-01-26 | $8.05 | $8.30 | -0.25 | +0.90 | -0.17 | +1.07 | ✓ |
| 2026-01-27 | $8.10 | $8.00 | +0.10 | +0.85 | +0.82 | +0.03 | ✓ |
| 2026-01-29 | $9.15 | $9.20 | -0.05 | +1.07 | +1.02 | +0.05 | ✓ |
| 2026-01-30 | $9.20 | $9.15 | +0.05 | +1.00 | +1.62 | -0.62 | ✓ |
| 2026-02-03 | $9.00 | $8.75 | +0.25 | +1.05 | +2.25 | -1.20 | ✓ |
| 2026-02-10 | $8.65 | $8.65 | +0.00 | +1.20 | +0.88 | +0.32 | ✓ |
| 2026-02-11 | $8.85 | $9.00 | -0.15 | +0.93 | +1.27 | -0.34 | ✓ |
| 2026-02-12 | $9.00 | $8.90 | +0.10 | -1.00 | -1.05 | +0.05 | ✓ |
| 2026-02-17 | $9.35 | $9.35 | +0.00 | +1.30 | +1.70 | -0.40 | ✓ |
| 2026-02-18 | $9.65 | $9.25 | +0.40 | +1.10 | +0.00 | +1.10 | ✓ |
| 2026-02-20 | $5.75 | $9.00 | -3.25 | -4.25 | +1.10 | -5.35 | ? |
| 2026-02-24 | $8.70 | $9.05 | -0.35 | -1.30 | -0.72 | -0.58 | ✓ |
| 2026-02-25 | $8.50 | $8.50 | +0.00 | +0.90 | +0.88 | +0.03 | ✓ |
| 2026-02-26 | $8.65 | $9.15 | -0.50 | -0.80 | +1.25 | -2.05 | ✓ |
| 2026-02-27 | $9.35 | $9.20 | +0.15 | +0.40 | +1.60 | -1.20 | ✓ |
| 2026-03-02 | $9.00 | $9.25 | -0.25 | -0.80 | +1.10 | -1.90 | ✓ |
| 2026-03-03 | $9.50 | $9.35 | +0.15 | +1.10 | +1.20 | -0.10 | ✓ |
| 2026-03-04 | $8.95 | $9.25 | -0.30 | +1.15 | -0.55 | +1.70 | ✓ |
| 2026-03-05 | $8.95 | $9.10 | -0.15 | +0.95 | +1.05 | -0.10 | ✓ |
| 2026-03-06 | $9.50 | $9.40 | +0.10 | +1.05 | +0.10 | +0.95 | ✓ |
| 2026-03-09 | $8.25 | $9.45 | -1.20 | +1.05 | -0.45 | +1.50 | ? |
| 2026-03-10 | $8.80 | $9.30 | -0.50 | -1.05 | +1.10 | -2.15 | ✓ |
| 2026-03-11 | $9.40 | $9.25 | +0.15 | +0.45 | +0.40 | +0.05 | ✓ |
| 2026-03-12 | $9.15 | $9.25 | -0.10 | +1.30 | +0.35 | +0.95 | ✓ |
| 2026-03-13 | $9.90 | $9.30 | +0.60 | +1.10 | +1.25 | -0.15 | ? |
| 2026-03-17 | $8.40 | $8.80 | -0.40 | -0.33 | -0.40 | +0.07 | ✓ |
| 2026-03-18 | $9.15 | $9.20 | -0.05 | +0.15 | +0.95 | -0.80 | ✓ |
| 2026-03-19 | $10.05 | $9.15 | +0.90 | +1.10 | +0.40 | +0.70 | ? |
| 2026-03-23 | $8.90 | $9.15 | -0.25 | +1.10 | +0.95 | +0.15 | ✓ |
| 2026-03-24 | $8.90 | $9.30 | -0.40 | +3.50 | +1.55 | +1.95 | ✓ |
| 2026-03-25 | $9.55 | $9.30 | +0.25 | +2.05 | +1.95 | +0.10 | ✓ |
| 2026-03-26 | $9.05 | $9.15 | -0.10 | -0.33 | +1.10 | -1.43 | ✓ |
| 2026-03-27 | $8.90 | $9.20 | -0.30 | +1.95 | +0.95 | +1.00 | ✓ |
| 2026-03-31 | $9.00 | $9.35 | -0.35 | +3.45 | +1.25 | +2.20 | ✓ |
| 2026-04-01 | $9.20 | $9.60 | -0.40 | +1.30 | +1.35 | -0.05 | ✓ |
| 2026-04-02 | $9.35 | $9.25 | +0.10 | +4.30 | +1.40 | +2.90 | ✓ |
| 2026-04-06 | $10.00 | $9.05 | +0.95 | +1.20 | +0.95 | +0.25 | ? |
| 2026-04-07 | $9.40 | $9.25 | +0.15 | +1.05 | +1.70 | -0.65 | ✓ |
| 2026-04-08 | $8.00 | $9.10 | -1.10 | -1.05 | +1.00 | -2.05 | ? |
| 2026-04-10 | $8.45 | $8.45 | +0.00 | +1.00 | +1.05 | -0.05 | ✓ |
| 2026-04-13 | $9.15 | $8.65 | +0.50 | +0.95 | +1.35 | -0.40 | ✓ |
| 2026-04-14 | $8.65 | $8.35 | +0.30 | -1.02 | -1.35 | +0.33 | ✓ |
| 2026-04-15 | $8.30 | $8.35 | -0.05 | -0.15 | +0.00 | -0.15 | ✓ |
| 2026-04-16 | $9.30 | $8.75 | +0.55 | +0.95 | +0.10 | +0.85 | ? |
| 2026-04-17 | $8.75 | $8.75 | +0.00 | -0.95 | -1.00 | +0.05 | ✓ |
| 2026-04-20 | $8.45 | $8.80 | -0.35 | +5.37 | +0.90 | +4.47 | ✓ |
| 2026-04-21 | $8.70 | $8.70 | +0.00 | -1.30 | -1.10 | -0.20 | ✓ |
| 2026-04-22 | $8.70 | $8.65 | +0.05 | +0.95 | +0.88 | +0.07 | ✓ |
| 2026-04-23 | $9.00 | $8.65 | +0.35 | +1.00 | +1.10 | -0.10 | ✓ |
| 2026-04-24 | $9.35 | $8.90 | +0.45 | +1.10 | +3.25 | -2.15 | ✓ |
| 2026-04-27 | $8.50 | $8.45 | +0.05 | +0.95 | +0.85 | +0.10 | ✓ |
| 2026-04-28 | $8.70 | $8.80 | -0.10 | +0.20 | +0.57 | -0.37 | ✓ |
| 2026-04-29 | $8.95 | $8.95 | +0.00 | +0.25 | +0.25 | +0.00 | ✓ |
| 2026-04-30 | $7.95 | $9.05 | -1.10 | -1.47 | -0.45 | -1.02 | ? |
| 2026-05-01 | $8.25 | $8.30 | -0.05 | +0.00 | +1.07 | -1.07 | ✓ |
| 2026-05-05 | $8.25 | $8.30 | -0.05 | +0.33 | +0.33 | +0.01 | ✓ |
| 2026-05-06 | $8.45 | $8.50 | -0.05 | +0.95 | -0.17 | +1.12 | ✓ |
| 2026-05-07 | $8.15 | $8.55 | -0.40 | -0.32 | +0.15 | -0.47 | ✓ |
| 2026-05-08 | $8.65 | $9.10 | -0.45 | +1.15 | +0.95 | +0.20 | ✓ |
| 2026-05-11 | $8.45 | $8.35 | +0.10 | +0.85 | +0.85 | +0.00 | ✓ |
| 2026-05-12 | $8.70 | $8.80 | -0.10 | +1.57 | -0.62 | +2.20 | ✓ |
| 2026-05-13 | $8.55 | $8.80 | -0.25 | -1.30 | -1.10 | -0.20 | ✓ |
| 2026-05-14 | $8.70 | $9.00 | -0.30 | -0.43 | +1.20 | -1.63 | ✓ |
| 2026-05-15 | $9.40 | $9.20 | +0.20 | +1.00 | +1.35 | -0.35 | ✓ |
| 2026-05-18 | $8.65 | $8.85 | -0.20 | +1.00 | +1.85 | -0.85 | ✓ |
| 2026-05-19 | $9.45 | $9.20 | +0.25 | +1.10 | +0.95 | +0.15 | ✓ |
| 2026-05-20 | $8.90 | $8.95 | -0.05 | +1.55 | +1.05 | +0.50 | ✓ |
| 2026-05-22 | $9.35 | $9.00 | +0.35 | +0.95 | +0.95 | +0.00 | ✓ |
| 2026-05-26 | $8.80 | $8.80 | +0.00 | +0.93 | +0.20 | +0.73 | ✓ |
| 2026-05-27 | $7.20 | $8.75 | -1.55 | +1.05 | +0.95 | +0.10 | ? |
| 2026-05-29 | $10.05 | $8.70 | +1.35 | -0.13 | +2.17 | -2.30 | ? |
| 2026-06-02 | $8.65 | $8.50 | +0.15 | -0.92 | -1.02 | +0.10 | ✓ |
| 2026-06-05 | $9.15 | $8.90 | +0.25 | +1.00 | -0.68 | +1.68 | ✓ |
| 2026-06-08 | $11.85 | $9.35 | +2.50 | +1.20 | +1.00 | +0.20 | ? |
| 2026-06-09 | $8.65 | $8.90 | -0.25 | +1.95 | +0.90 | +1.05 | ✓ |
| 2026-06-10 | $9.40 | $9.35 | +0.05 | -0.33 | +1.55 | -1.88 | ✓ |
| 2026-06-11 | $9.20 | $9.40 | -0.20 | +1.45 | +1.25 | +0.20 | ✓ |
| 2026-06-12 | $9.40 | $9.40 | +0.00 | +1.15 | +1.15 | +0.00 | ✓ |
| 2026-06-15 | $8.55 | $8.70 | -0.15 | +1.05 | +1.65 | -0.60 | ✓ |
| 2026-06-16 | $8.60 | $8.50 | +0.10 | +0.10 | +0.45 | -0.35 | ✓ |
| 2026-06-17 | $9.55 | $9.20 | +0.35 | +1.20 | -0.10 | +1.30 | ✓ |
| 2026-06-18 | $8.75 | $9.20 | -0.45 | -0.55 | +0.93 | -1.48 | ✓ |
| Averages | -0.05 | -0.02 | |||||
| Date | Event | BT P/L | Reason it was originally skipped |
|---|---|---|---|
| 2022-11-10 | Post-CPI | +$0.35 | ATM gapped outside STRIKE_BAND |
| 2024-08-05 | Black Monday | −$2.25 | 5%+ gap-down, ATM outside band |
| 2025-04-03 | Liberation Day | + | ~6% gap-down, ATM ~200pt below prior close |
| 2025-04-04 | Liberation Day +1 | + | Continued crash, ATM outside band |
| 2025-04-08 | Liberation Day +3 | + | ATM outside band |
| 2025-04-10 | Liberation Day +5 | + | ATM outside band |
| 2025-04-23 | Late-April volatility | + | ATM outside band |
| 2025-05-12 | Mid-May dip | −$0.02 | ATM outside band |
| 2026-04-08 | Apr 2026 volatility | +$1.00 | ATM outside band |
| Parameter | Value | Notes |
|---|---|---|
| Instrument | SPXW 0DTE options | S&P 500 cash-settled European, weekly expiry |
| Structure | Iron fly (4 legs) | Short ATM straddle + 10-point wings |
| Entry time | 10:00 ET (15:00 UK BST) | Open + 30 minutes, after early volatility settles |
| ATM selection | Put-call parity | F = K + (Cmid − Pmid), median across all matched pairs, round to 5-pt grid |
| Wing width | ±$10 (2pt OTM) | Buy C at ATM+10, buy P at ATM−10 |
| Profit target | 10% of initial credit | Close when debit ≤ credit × 0.90 |
| Time stop | 13:00 ET (18:00 UK BST) | Close at market if PT not hit |
| Fill model (BT) | Mid-mark | (bid + ask) / 2 for all 4 legs simultaneously |
| Phase | Schema | Coverage | Content |
|---|---|---|---|
| Phase 1 | cbbo-1m | 2022-05-23 → present | Full option chain (±150pt strike band), 1-minute NBBO snapshots, used for ATM derivation and 1m exit fallback |
| Phase 2 | cbbo-1s | 2025-02-20 → present | 4 leg symbols only (ATM straddle + wings), 1-second NBBO, used for second-resolution exit monitoring |
At the 10:00 ET entry minute, for every matched call/put pair at the same strike K:
F(K) = K + (C_mid(K) − P_mid(K)) # forward price implied by parity ATM = round(median(F), nearest_5pt) # robust to outlier strikes
The median across all matched pairs (typically 30–60 pairs per minute) is robust to stale quotes at the wings. Requires ≥3 matched pairs; sessions with fewer pairs are SKIPped.
| Component | Before fix | After fix | Technique |
|---|---|---|---|
| 1m exit monitoring (per session) | ~1,200ms | ~13ms | Pre-built per-symbol {ts→mid} dicts; pure Python dict.get() in loop |
| 1s exit monitoring (per session) | ~31,600ms | ~250ms | Same dict approach; eliminates per-second O(n) pandas boolean scan |
| Full 4-year run (1,020 sessions) | 20+ min (hung) | 2:23 | Combined above + NaN filter in dict comprehension |
| NaN handling | NaN propagated to P/L | Excluded at dict build | `m == m` self-comparison (False for NaN, avoids math.isnan import) |