STRASMORE/EXPLORE 3,293 QUERIES
Full options quote history: clean NBBO bid/ask snapshots for any US option contract at the interval you choose, by SQL API, $79 a month. See the options quotes plan

SPY versus its hike-day close, week by week, three cycles aligned

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 Rate Hike.

as of table 53×4read in context →
SPY versus its hike-day close, week by week, three cycles aligned — 53 rows by 4 columns, computed from US exchange, SIP and OPRA data.
wk_after_hikecycle_2004_pctcycle_2015_pctcycle_2022_pct
0000
1-2-11.9
2-2.6-15.3
3-4.3-4.42.5
4-3.9-9.21.8
5-3.8-10.82.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
140.1-2.3-14.1
15-2.6-1-12.7
16-3.5-0.8-12
17-1.40-13
180.41-9.4
192.10.6-7.9
203.5-1.5-4.9
213.4-0.7-3.6
224.1-1.5-2.1
233.70.6-5
245.51.1-9.3
255.42.1-8.7
266-0.1-9.4
2730-13.4
283.5-0.7-14.9
293.20.8-13.4
302.43.3-18.1
314.14.4-15.4
324.24.1-12.3
335.83.9-13.9
344.34.6-14.1
355.85-9.2
365.64.7-7.6
3744.5-6.4
382.25.3-9.7
393.22.5-8.3
403.63.7-11.3
412.44.1-13.5
42-0.63.7-11.9
4312.7-9.2
442.63-10.1
452.42.7-8.1
463.70.8-5.7
474.34-5.7
485.24.7-5
494.76.1-8.5
505.75.9-9.4
516.18-8.4
524.68.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
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for SPY versus its hike-day close, week by week, three cycles aligned, derived from the stored result.
ColumnTypeRangeNotes
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
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisStock Returns After the First Fed Rate Hike
Lowest and highest SPY close in the twelve months after each first hike table 3×5 → SPY forward returns after the first hike of each cycle table 3×5 → The 2s10s Treasury spread on hike day and twelve months later ranking 3×4 → Record closes per year, SPY (price basis, first four years of the file excluded) table 20×7 → Deepest closing declines from a record close, SPY table 7×5 → Forward price change after record closes vs all other sessions, SPY table 3×7 → See all 3,293 queries →