{"slug":"covid-crash-march-2020","qid":"breaker_days","label":"The four circuit-breaker sessions of March 2020: SPY close, change, volume","post_title":"COVID Crash 2020: Four Halts, Peak to Trough","post_url":"/blog/covid-crash-march-2020#q-breaker_days","columns":["session","close_usd","change_pct","shares_m"],"rows":[{"session":"2020-03-09","close_usd":274.4,"change_pct":-7.7,"shares_m":304.6},{"session":"2020-03-12","close_usd":248.1,"change_pct":-9.6,"shares_m":389.3},{"session":"2020-03-16","close_usd":239.41,"change_pct":-11.6,"shares_m":291.5},{"session":"2020-03-18","close_usd":241.01,"change_pct":-5.2,"shares_m":324.7}],"shape":"series","sql":"SELECT\n    toString(et_date) AS session,\n    close_usd,\n    change_pct,\n    shares_m\nFROM (\n    SELECT et_date, close_usd, shares_m,\n           round((close_usd / lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1) * 100, 1) AS change_pct\n    FROM (\n        SELECT\n            toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,\n            round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS close_usd,\n            round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker = 'SPY'\n          AND window_start >= toDateTime('2020-03-06 00:00:00') AND window_start < toDateTime('2020-03-19 00:00:00')\n        GROUP BY et_date\n    )\n)\nWHERE toString(et_date) IN ('2020-03-09', '2020-03-12', '2020-03-16', '2020-03-18')\nORDER BY et_date","computed_at":"2026-07-26T05:28:57.373434+00:00","elapsed":0.060481001}