{"slug":"event-driven-vs-vectorized-backtesting","qid":"overnight_gap","label":"Distance from the signal close to the next session's open, 2024","post_title":"Event-Driven vs Vectorized Backtesting","post_url":"/blog/event-driven-vs-vectorized-backtesting#q-overnight_gap","columns":["ticker","median_overnight_move_pct","p90_overnight_move_pct"],"rows":[{"ticker":"NVDA","median_overnight_move_pct":1.084,"p90_overnight_move_pct":2.664},{"ticker":"AAPL","median_overnight_move_pct":0.371,"p90_overnight_move_pct":1.234},{"ticker":"MSFT","median_overnight_move_pct":0.337,"p90_overnight_move_pct":1.079},{"ticker":"SPY","median_overnight_move_pct":0.27,"p90_overnight_move_pct":0.767},{"ticker":"KO","median_overnight_move_pct":0.205,"p90_overnight_move_pct":0.629}],"shape":"ranking","sql":"WITH px AS\n(\n    SELECT\n        ticker,\n        date,\n        toFloat64(any(close)) AS close,\n        toFloat64(any(open))  AS open\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO')\n      AND date >= '2024-01-01'\n      AND date <  '2025-01-10'\n    GROUP BY ticker, date\n),\nseq AS\n(\n    SELECT\n        ticker,\n        date,\n        close,\n        leadInFrame(open, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS next_open\n    FROM px\n)\nSELECT\n    ticker,\n    round(quantileDeterministic(0.5)(abs(next_open / close - 1) * 100, toUInt32(toRelativeDayNum(date))), 3) AS median_overnight_move_pct,\n    round(quantileDeterministic(0.9)(abs(next_open / close - 1) * 100, toUInt32(toRelativeDayNum(date))), 3) AS p90_overnight_move_pct\nFROM seq\nWHERE next_open > 0\n  AND date < '2025-01-01'\nGROUP BY ticker\nORDER BY median_overnight_move_pct DESC","computed_at":"2026-10-04T15:20:28.862772+00:00","elapsed":0.00475762}