path_by_week
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-20, from stock-returns-after-the-first-fed-hike.
| wk_after_hike | cycle_2004_pct | cycle_2015_pct | cycle_2022_pct |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | -2 | -1 | 1.9 |
| 2 | -2.6 | -1 | 5.3 |
| 3 | -4.3 | -4.4 | 2.5 |
| 4 | -3.9 | -9.2 | 1.8 |
| 5 | -3.8 | -10.8 | 2.1 |
| 6 | -5.6 | -9.6 | -4.2 |
| 7 | -3.9 | -8 | -1.5 |
| 8 | -3 | -10.9 | -9.8 |
| 9 | -2.8 | -7.3 | -10 |
| 10 | -1.7 | -7.1 | -8.8 |
| 11 | -1.5 | -4.3 | -6 |
| 12 | -2.6 | -4.2 | -5.6 |
| 13 | -2.3 | -2.3 | -13 |
| 14 | 0.1 | -2.3 | -14.1 |
| 15 | -2.6 | -1 | -12.7 |
| 16 | -3.5 | -0.8 | -12 |
| 17 | -1.4 | 0 | -13 |
| 18 | 0.4 | 1 | -9.4 |
| 19 | 2.1 | 0.6 | -7.9 |
| 20 | 3.5 | -1.5 | -4.9 |
| 21 | 3.4 | -0.7 | -3.6 |
| 22 | 4.1 | -1.5 | -2.1 |
| 23 | 3.7 | 0.6 | -5 |
| 24 | 5.5 | 1.1 | -9.3 |
| 25 | 5.4 | 2.1 | -8.7 |
| 26 | 6 | -0.1 | -9.4 |
| 27 | 3 | 0 | -13.4 |
| 28 | 3.5 | -0.7 | -14.9 |
| 29 | 3.2 | 0.8 | -13.4 |
| 30 | 2.4 | 3.3 | -18.1 |
| 31 | 4.1 | 4.4 | -15.4 |
| 32 | 4.2 | 4.1 | -12.3 |
| 33 | 5.8 | 3.9 | -13.9 |
| 34 | 4.3 | 4.6 | -14.1 |
| 35 | 5.8 | 5 | -9.2 |
| 36 | 5.6 | 4.7 | -7.6 |
| 37 | 4 | 4.5 | -6.4 |
| 38 | 2.2 | 5.3 | -9.7 |
| 39 | 3.2 | 2.5 | -8.3 |
| 40 | 3.6 | 3.7 | -11.3 |
| 41 | 2.4 | 4.1 | -13.5 |
| 42 | -0.6 | 3.7 | -11.9 |
| 43 | 1 | 2.7 | -9.2 |
| 44 | 2.6 | 3 | -10.1 |
| 45 | 2.4 | 2.7 | -8.1 |
| 46 | 3.7 | 0.8 | -5.7 |
| 47 | 4.3 | 4 | -5.7 |
| 48 | 5.2 | 4.7 | -5 |
| 49 | 4.7 | 6.1 | -8.5 |
| 50 | 5.7 | 5.9 | -9.4 |
| 51 | 6.1 | 8 | -8.4 |
| 52 | 4.6 | 8.6 | -10.6 |
- Rows × columns
- 53 × 4
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
wk_after_hike |
number | 0 to 52 | |
cycle_2004_pct |
number | -5.6 to 6.1 | percent |
cycle_2015_pct |
number | -10.9 to 8.6 | percent |
cycle_2022_pct |
number | -18.1 to 5.3 | percent |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
WITH
px AS
(
SELECT
date,
toFloat64(close) AS px_close,
multiIf(date <= '2005-06-30', toDate('2004-06-30'),
date <= '2016-12-16', toDate('2015-12-16'),
toDate('2022-03-16')) AS hike_date
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND ((date >= '2004-06-30' AND date <= '2005-06-30')
OR (date >= '2015-12-16' AND date <= '2016-12-16')
OR (date >= '2022-03-16' AND date <= '2023-03-16'))
),
base AS
(
SELECT hike_date, argMin(px_close, date) AS hike_close
FROM px
GROUP BY hike_date
),
weekly AS
(
SELECT
p.hike_date AS hk,
intDiv(dateDiff('day', p.hike_date, p.date) + 6, 7) AS wk,
argMax(p.px_close, p.date) / any(b.hike_close) AS ratio
FROM px AS p
INNER JOIN base AS b ON p.hike_date = b.hike_date
GROUP BY hk, wk
)
SELECT
wk AS wk_after_hike,
round(100 * (maxIf(ratio, toYear(hk) = 2004) - 1), 1) AS cycle_2004_pct,
round(100 * (maxIf(ratio, toYear(hk) = 2015) - 1), 1) AS cycle_2015_pct,
round(100 * (maxIf(ratio, toYear(hk) = 2022) - 1), 1) AS cycle_2022_pct
FROM weekly
WHERE wk <= 52
GROUP BY wk
ORDER BY wk