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

Daily S&P 500 moves by month, measured on SPY

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-11-01, from SPX Options vs ES Futures Options: Which to Use.

as of series 12×6read in context →
Daily S&P 500 moves by month, measured on SPY — 12 rows by 6 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelavg_abs_move_pctlargest_move_pctbig_move_countsession_count
2025-11-01Nov 20250.781.66619
2025-12-01Dec 20250.421.1222
2026-01-01Jan 20260.442.04220
2026-02-01Feb 20260.671.92419
2026-03-01Mar 20260.912.91922
2026-04-01Apr 20260.652.55421
2026-05-01May 20260.541.39320
2026-06-01Jun 20260.852.58721
2026-07-01Jul 20260.591.68322
2026-08-01Aug 20260.481.8221
2026-09-01Sep 20260.561.55321
2026-10-01Oct 20260.581.77422
Rows × columns
12 × 6
Period covered
to
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 Daily S&P 500 moves by month, measured on SPY, derived from the stored result.
ColumnTypeRangeNotes
month date 2025-11-01 to 2026-10-01
month_label text 12 distinct values (Apr 2026, Aug 2026, Dec 2025…)
avg_abs_move_pct number 0.42 to 0.91 percent
largest_move_pct number 1.1 to 2.91 percent
big_move_count number 2 to 9 count
session_count number 19 to 22 count

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.

SELECT
    toString(toStartOfMonth(session))                   AS month,
    formatDateTime(toStartOfMonth(session), '%b %Y')    AS month_label,
    round(avg(abs_move_pct), 2)                         AS avg_abs_move_pct,
    round(max(abs_move_pct), 2)                         AS largest_move_pct,
    countIf(abs_move_pct >= 1)                          AS big_move_count,
    count()                                             AS session_count
FROM
(
    SELECT
        session,
        abs(close_px / lagInFrame(close_px) OVER (ORDER BY session ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - 1) * 100 AS abs_move_pct
    FROM
    (
        SELECT
            date                   AS session,
            toFloat64(any(close))  AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'SPY'
          AND date >= toStartOfMonth(today() - 365) - 10
        GROUP BY date
    )
)
WHERE session >= toStartOfMonth(today() - 365)
GROUP BY month, month_label
ORDER BY month
⌘/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 analysisSPX Options vs ES Futures Options: Which to Use
Share of SPY volume by hour of the day (ET), trailing month ranking 16×2 → Share of contract volume by days to expiry, SPX and SPY ranking 5×3 → Average daily options volume: Section 1256 names against equity options ranking 4×3 → Dollar exposure in one 100-multiplier contract, by month series 36×5 → The prices behind the arithmetic: Thursday's close, the strike, Friday's open and close series 29×6 → Every monthly expiration since January 2024: the overnight gap, then the session that followed series 29×4 → See all 3,293 queries →