{"slug":"is-the-stock-market-open-today","qid":"unscheduled_closures","label":"Unscheduled closures on the tape: zero regular-session bars on an ordinary weekday","post_title":"Is the Stock Market Open Today?","post_url":"/blog/is-the-stock-market-open-today#q-unscheduled_closures","columns":["closure_date","falls_on","name","spy_regular_session_bars"],"rows":[{"closure_date":"2012-10-29","falls_on":"Mon","name":"Hurricane Sandy — day 1","spy_regular_session_bars":0},{"closure_date":"2012-10-30","falls_on":"Tue","name":"Hurricane Sandy — day 2","spy_regular_session_bars":0},{"closure_date":"2012-10-31","falls_on":"Wed","name":"Reopening after Sandy","spy_regular_session_bars":390},{"closure_date":"2018-12-05","falls_on":"Wed","name":"Mourning — George H. W. Bush","spy_regular_session_bars":0},{"closure_date":"2025-01-09","falls_on":"Thu","name":"Mourning — Jimmy Carter","spy_regular_session_bars":0}],"shape":"series","sql":"WITH events AS (\n    SELECT arrayJoin([\n        (toDate('2012-10-29'), 'Hurricane Sandy — day 1'),\n        (toDate('2012-10-30'), 'Hurricane Sandy — day 2'),\n        (toDate('2012-10-31'), 'Reopening after Sandy'),\n        (toDate('2018-12-05'), 'Mourning — George H. W. Bush'),\n        (toDate('2025-01-09'), 'Mourning — Jimmy Carter')\n    ]) AS e\n),\ntape AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND ((window_start >= '2012-10-29 00:00:00' AND window_start < '2012-11-01 12:00:00')\n        OR (window_start >= '2018-12-05 00:00:00' AND window_start < '2018-12-06 12:00:00')\n        OR (window_start >= '2025-01-09 00:00:00' AND window_start < '2025-01-10 12:00:00'))\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)\nSELECT toString(e.1) AS closure_date,\n       formatDateTime(e.1, '%a') AS falls_on,\n       e.2 AS name,\n       toUInt32(ifNull(t.bars, 0)) AS spy_regular_session_bars\nFROM events\nLEFT JOIN tape AS t ON t.d = events.e.1\nORDER BY e.1","computed_at":"2026-08-25T13:00:04.313438+00:00","elapsed":0.056895009}