{"slug":"covid-stimulus-rally-2020","qid":"aftermath","label":"SPY closes, March 23-26, 2020: the three-day burst","post_title":"March 24, 2020: The Day the Market Turned","post_url":"/blog/covid-stimulus-rally-2020#q-aftermath","columns":["session","close_usd","change_pct","shares_m"],"rows":[{"session":"2020-03-23","close_usd":222.51,"change_pct":-2.8,"shares_m":322.4},{"session":"2020-03-24","close_usd":243.59,"change_pct":9.5,"shares_m":232.4},{"session":"2020-03-25","close_usd":246.77,"change_pct":1.3,"shares_m":297.4},{"session":"2020-03-26","close_usd":261.39,"change_pct":5.9,"shares_m":253.8}],"shape":"series","sql":"SELECT\n    toString(et_date) AS session,\n    close_usd,\n    round(if(prev_close = 0, NULL, (close_usd / prev_close - 1) * 100), 1) AS change_pct,\n    shares_m\nFROM (\n    SELECT et_date, close_usd, shares_m,\n           lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close\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-20 00:00:00') AND window_start < toDateTime('2020-03-26 23:59:00')\n        GROUP BY et_date\n    )\n)\nWHERE et_date >= toDate('2020-03-23') AND et_date <= toDate('2020-03-26')\nORDER BY et_date","computed_at":"2026-07-26T05:29:12.557482+00:00","elapsed":0.095224974}