{"slug":"is-the-stock-market-open-today","qid":"weekend_gap","label":"SPY across recent weekends and holiday weekends: Friday's close vs. the reopening print","post_title":"Is the Stock Market Open Today?","post_url":"/blog/is-the-stock-market-open-today#q-weekend_gap","columns":["last_session_before","reopening_session","days_dark","close_before_break","reopening_print","gap_pct"],"rows":[{"last_session_before":"Fri 2026-06-12","reopening_session":"Mon 2026-06-15","days_dark":3,"close_before_break":"741.63","reopening_print":"751.85","gap_pct":1.38},{"last_session_before":"Thu 2026-06-18","reopening_session":"Mon 2026-06-22","days_dark":4,"close_before_break":"746.56","reopening_print":"747.7","gap_pct":0.15},{"last_session_before":"Fri 2026-06-26","reopening_session":"Mon 2026-06-29","days_dark":3,"close_before_break":"729.09","reopening_print":"736.52","gap_pct":1.02},{"last_session_before":"Thu 2026-07-02","reopening_session":"Mon 2026-07-06","days_dark":4,"close_before_break":"744.8","reopening_print":"748.74","gap_pct":0.53},{"last_session_before":"Fri 2026-07-10","reopening_session":"Mon 2026-07-13","days_dark":3,"close_before_break":"754.9","reopening_print":"752.47","gap_pct":-0.32},{"last_session_before":"Fri 2026-07-17","reopening_session":"Mon 2026-07-20","days_dark":3,"close_before_break":"743.2","reopening_print":"747.06","gap_pct":0.52},{"last_session_before":"Fri 2026-07-24","reopening_session":"Mon 2026-07-27","days_dark":3,"close_before_break":"738.85","reopening_print":"744.91","gap_pct":0.82},{"last_session_before":"Fri 2026-07-31","reopening_session":"Mon 2026-08-03","days_dark":3,"close_before_break":"746.81","reopening_print":"749.44","gap_pct":0.35},{"last_session_before":"Fri 2026-08-07","reopening_session":"Mon 2026-08-10","days_dark":3,"close_before_break":"773.2","reopening_print":"772.6","gap_pct":-0.08},{"last_session_before":"Fri 2026-08-14","reopening_session":"Mon 2026-08-17","days_dark":3,"close_before_break":"776.3","reopening_print":"776.18","gap_pct":-0.02},{"last_session_before":"Fri 2026-08-21","reopening_session":"Mon 2026-08-24","days_dark":3,"close_before_break":"766.95","reopening_print":"763.28","gap_pct":-0.48}],"shape":"series","sql":"WITH daily AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n           round(argMin(toFloat64(open), window_start), 2) AS open_px,\n           round(argMax(toFloat64(close), window_start), 2) AS close_px\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= today() - 75\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY d\n),\npaired AS (\n    SELECT d,\n           open_px,\n           lagInFrame(d) OVER (ORDER BY d) AS prev_d,\n           lagInFrame(close_px) OVER (ORDER BY d) AS prev_close\n    FROM daily\n)\nSELECT concat(formatDateTime(prev_d, '%a '), toString(prev_d)) AS last_session_before,\n       concat(formatDateTime(d, '%a '), toString(d)) AS reopening_session,\n       dateDiff('day', prev_d, d) AS days_dark,\n       toString(prev_close) AS close_before_break,\n       toString(open_px) AS reopening_print,\n       round((open_px - prev_close) / prev_close * 100, 2) AS gap_pct\nFROM paired\nWHERE prev_close > 0 AND dateDiff('day', prev_d, d) >= 3\nORDER BY d","computed_at":"2026-08-25T13:00:04.513917+00:00","elapsed":0.105399578}