{"slug":"nikkei-225-options-explained","qid":"sq_open_gap","label":"SPY on monthly settlement Fridays: the opening gap, and where the session went afterwards","post_title":"Nikkei 225 Options and SQ Settlement","post_url":"/blog/nikkei-225-options-explained#q-sq_open_gap","columns":["date","friday_label","open_gap_pct","open_to_close_pct"],"rows":[{"date":"2025-01-17","friday_label":"Jan 17, 2025","open_gap_pct":0.89,"open_to_close_pct":0.1},{"date":"2025-02-21","friday_label":"Feb 21, 2025","open_gap_pct":-0.04,"open_to_close_pct":-1.67},{"date":"2025-03-21","friday_label":"Mar 21, 2025","open_gap_pct":-1.13,"open_to_close_pct":0.88},{"date":"2025-05-16","friday_label":"May 16, 2025","open_gap_pct":0.14,"open_to_close_pct":0.51},{"date":"2025-06-20","friday_label":"Jun 20, 2025","open_gap_pct":0.15,"open_to_close_pct":-0.69},{"date":"2025-07-18","friday_label":"Jul 18, 2025","open_gap_pct":0.21,"open_to_close_pct":-0.27},{"date":"2025-08-15","friday_label":"Aug 15, 2025","open_gap_pct":0.16,"open_to_close_pct":-0.39},{"date":"2025-09-19","friday_label":"Sep 19, 2025","open_gap_pct":0.01,"open_to_close_pct":0.2},{"date":"2025-10-17","friday_label":"Oct 17, 2025","open_gap_pct":-0.17,"open_to_close_pct":0.73},{"date":"2025-11-21","friday_label":"Nov 21, 2025","open_gap_pct":0.39,"open_to_close_pct":0.61},{"date":"2025-12-19","friday_label":"Dec 19, 2025","open_gap_pct":0.02,"open_to_close_pct":0.59},{"date":"2026-01-16","friday_label":"Jan 16, 2026","open_gap_pct":0.21,"open_to_close_pct":-0.3},{"date":"2026-02-20","friday_label":"Feb 20, 2026","open_gap_pct":-0.32,"open_to_close_pct":1.03},{"date":"2026-03-20","friday_label":"Mar 20, 2026","open_gap_pct":-0.49,"open_to_close_pct":-1.21},{"date":"2026-04-17","friday_label":"Apr 17, 2026","open_gap_pct":0.65,"open_to_close_pct":0.55},{"date":"2026-05-15","friday_label":"May 15, 2026","open_gap_pct":-0.85,"open_to_close_pct":-0.36}],"shape":"series","sql":"WITH sessions AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n           argMin(open, window_start) AS session_open,\n           argMax(close, window_start) AS session_close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-12-01')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY session_date\n),\npaired AS (\n    SELECT session_date,\n           toFloat64(session_open) AS open_px,\n           toFloat64(session_close) AS close_px,\n           any(toFloat64(session_close)) OVER (ORDER BY session_date ASC\n                                               ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_close\n    FROM sessions\n)\nSELECT formatDateTime(session_date, '%Y-%m-%d') AS date,\n       formatDateTime(session_date, '%b %e, %Y') AS friday_label,\n       round(100 * (open_px - prior_close) / prior_close, 2) AS open_gap_pct,\n       round(100 * (close_px - open_px) / open_px, 2) AS open_to_close_pct\nFROM paired\nWHERE prior_close > 0\n  AND session_date >= toDate('2025-01-01')\n  AND toDayOfWeek(session_date) = 5\n  AND toDayOfMonth(session_date) BETWEEN 15 AND 21\nORDER BY session_date","computed_at":"2026-08-03T08:06:58.167387+00:00","elapsed":0.003973555}