Why next-open execution can still be optimistic
Signal at close, execute at next open is the standard honest daily convention — and it still assumes a fill nobody guarantees. Lag-grid evidence from intraday work shows edges decaying within seconds, and spread measurements show exits costing four times entries.
The convention and what it actually claims
The daily stat-arb pipeline follows the textbook rule: compute signals at date t close, execute at t+1 open, mark at t+1 close. No same-bar execution, no lookahead. But “execute at the open” quietly claims four things: that the opening auction print was attainable for your size, that nothing repriced between yesterday’s close and the bell, that the spread at the open was zero, and that your order didn’t move the price. None of these is true for free.
- The open is an auction; participating in it changes it. The pipeline models this with a square-root impact term (
impact_bps = 10 × sqrt(notional / ADV$), capped at 50bps) on top of flat slippage and spread charges (2bps each), then re-run everything at 1×/2×/3× costs and at 1M–25M NAV with a 3%-of-ADV position cap. - Overnight news lands between the signal and the fill. Gap risk isn’t in the signal’s information set, and a daily backtest can only acknowledge it via cost stress and capacity discipline.
The intraday version of the same lesson
The open-drive lab made the optimism measurable by replaying SPX on 1-second data with an explicit execution-lag grid (1/2/5/10/15 seconds) and an unfavorable fill proxy — for a long entry, the worst price in the lag window, approximating what chasing a fast move actually costs. Results:
- On the opening-range breakout grid, 0 of 24 parameter cells survived the 5-second unfavorable-proxy gate at a 3-point threshold.
- For failed-breakout reversals, entering immediately showed a median +1.5 SPX points of 10-minute favorable excursion over baseline; waiting ~1–2 minutes for confirmation flipped the same statistic negative. The favorable excursion concentrates in the first one to two minutes — the edge and the execution window are the same object.
The 0DTE option layer adds its own asymmetry: measured entry spreads ran a median 1.66% of premium, but exit spreads ran 6.54% (p95 40%, worst prints above 100% on panic closes). Round-trip spread alone consumed ~4% of premium, and it lands hardest on small-PnL trades — the mid tier of the ledger is where spread cost turned modest wins into losses.
Practice
- Treat next-open as a timing convention, never a price claim. Price the fill pessimistically (ask side, lag-adjusted, impact-aware), then stress it.
- Put execution lag in the parameter grid, not in the appendix — if the edge dies at +5 seconds, that is a property of the strategy, not of the test.
- Report cost-multiplied and capacity-constrained variants alongside the headline. If the result only exists at 1× optimistic costs, the report should say exactly that.