STRASMORE/EXPLORE 2,433 QUERIES

index_moves

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 spx-options-vs-es-futures-options.

as of series 13×6read in context →
index_moves — 13 rows by 6 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelavg_abs_move_pctlargest_move_pctbig_move_countsession_count
2025-09-01Sep 20250.410.84021
2025-10-01Oct 20250.612.7523
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.591.13213
Rows × columns
13 × 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 index_moves, derived from the stored result.
ColumnTypeRangeNotes
month date 2025-09-01 to 2026-09-01
month_label text 13 distinct values (Apr 2026, Aug 2026, Dec 2025…)
avg_abs_move_pct number 0.41 to 0.91 percent
largest_move_pct number 0.84 to 2.91 percent
big_move_count number 0 to 9 count
session_count number 13 to 23 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
More from this analysisspx-options-vs-es-futures-options
clock_volume ranking 16×2 The 2s10s spread by month, full history series 604×5 One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 3m10y and 2s10s spreads, monthly averages over twenty years series 241×4 2s10s spread, monthly average: last 20 years series 240×2 Rolling seven-year returns on SPY, one window per start month series 193×5 See all 2,433 queries →