{"slug":"stock-returns-after-the-first-fed-hike","qid":"range_after_hike","label":"range_after_hike","post_title":"stock-returns-after-the-first-fed-hike","post_url":"/blog/stock-returns-after-the-first-fed-hike#q-range_after_hike","columns":["cycle","low_vs_hike_pct","low_on","high_vs_hike_pct","high_on"],"rows":[{"cycle":"Jun 30, 2004","low_vs_hike_pct":-6.7,"low_on":"Aug 6, 2004","high_vs_hike_pct":7.2,"high_on":"Mar 7, 2005"},{"cycle":"Dec 16, 2015","low_vs_hike_pct":-12.1,"low_on":"Feb 11, 2016","high_vs_hike_pct":9.5,"high_on":"Dec 13, 2016"},{"cycle":"Mar 16, 2022","low_vs_hike_pct":-18.1,"low_on":"Oct 12, 2022","high_vs_hike_pct":6,"high_on":"Mar 29, 2022"}],"shape":"table","sql":"WITH px AS\n(\n    SELECT\n        date,\n        toFloat64(close) AS px_close,\n        multiIf(date <= '2005-06-30', toDate('2004-06-30'),\n                date <= '2016-12-16', toDate('2015-12-16'),\n                                      toDate('2022-03-16')) AS hike_date\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND ((date >= '2004-06-30' AND date <= '2005-06-30')\n        OR (date >= '2015-12-16' AND date <= '2016-12-16')\n        OR (date >= '2022-03-16' AND date <= '2023-03-16'))\n)\nSELECT\n    formatDateTime(hike_date, '%b %e, %Y')                                AS cycle,\n    round(100 * (min(px_close) / argMin(px_close, date) - 1), 1)          AS low_vs_hike_pct,\n    formatDateTime(argMin(date, px_close), '%b %e, %Y')                   AS low_on,\n    round(100 * (max(px_close) / argMin(px_close, date) - 1), 1)          AS high_vs_hike_pct,\n    formatDateTime(argMax(date, px_close), '%b %e, %Y')                   AS high_on\nFROM px\nGROUP BY hike_date\nORDER BY hike_date","computed_at":"2026-09-20T17:04:27.573324+00:00","elapsed":0.003832218}