{"slug":"when-do-spx-options-stop-trading","qid":"third_friday_gaps","label":"third_friday_gaps","post_title":"when-do-spx-options-stop-trading","post_url":"/blog/when-do-spx-options-stop-trading#q-third_friday_gaps","columns":["expiration_date","expiration_label","overnight_gap_pct","abs_gap_pct","avg_abs_gap_pct"],"rows":[{"expiration_date":"2025-10-17","expiration_label":"Oct 17, 2025","overnight_gap_pct":-0.17,"abs_gap_pct":0.17,"avg_abs_gap_pct":0.44},{"expiration_date":"2025-11-21","expiration_label":"Nov 21, 2025","overnight_gap_pct":0.39,"abs_gap_pct":0.39,"avg_abs_gap_pct":0.44},{"expiration_date":"2025-12-19","expiration_label":"Dec 19, 2025","overnight_gap_pct":0.02,"abs_gap_pct":0.02,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-01-16","expiration_label":"Jan 16, 2026","overnight_gap_pct":0.21,"abs_gap_pct":0.21,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-02-20","expiration_label":"Feb 20, 2026","overnight_gap_pct":-0.32,"abs_gap_pct":0.32,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-03-20","expiration_label":"Mar 20, 2026","overnight_gap_pct":-0.5,"abs_gap_pct":0.5,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-04-17","expiration_label":"Apr 17, 2026","overnight_gap_pct":0.64,"abs_gap_pct":0.64,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-05-15","expiration_label":"May 15, 2026","overnight_gap_pct":-0.85,"abs_gap_pct":0.85,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-07-17","expiration_label":"Jul 17, 2026","overnight_gap_pct":-1.15,"abs_gap_pct":1.15,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-08-21","expiration_label":"Aug 21, 2026","overnight_gap_pct":0.45,"abs_gap_pct":0.45,"avg_abs_gap_pct":0.44},{"expiration_date":"2026-09-18","expiration_label":"Sep 18, 2026","overnight_gap_pct":-0.17,"abs_gap_pct":0.17,"avg_abs_gap_pct":0.44}],"shape":"series","sql":"SELECT\n    toString(d)                          AS expiration_date,\n    formatDateTime(d, '%b %e, %Y')       AS expiration_label,\n    round(gap_pct, 2)                    AS overnight_gap_pct,\n    round(abs(gap_pct), 2)               AS abs_gap_pct,\n    round(avg(abs(gap_pct)) OVER (), 2)  AS avg_abs_gap_pct\nFROM\n(\n    SELECT\n        d,\n        100 * (toFloat64(open_px) - toFloat64(prev_close)) / toFloat64(prev_close) AS gap_pct\n    FROM\n    (\n        SELECT\n            date                                       AS d,\n            open                                       AS open_px,\n            lagInFrame(close) OVER (ORDER BY date ASC) AS prev_close\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker = 'SPY'\n          AND date >= '2025-10-01'\n          AND date <= today() - 2\n    )\n    WHERE toDayOfWeek(d) = 5\n      AND toDayOfMonth(d) BETWEEN 15 AND 21\n)\nORDER BY expiration_date","computed_at":"2026-09-23T14:42:39.436772+00:00","elapsed":0.040173217}