STRASMORE/EXPLORE 2,749 QUERIES

spy_monthly

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-28, from what-is-market-volatility.

as of series 24×4read in context →
spy_monthly — 24 rows by 4 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelrv_annualised_pctsession_count
2024-09-01Sep 202413.820
2024-10-01Oct 202411.223
2024-11-01Nov 202411.820
2024-12-01Dec 202414.121
2025-01-01Jan 202513.920
2025-02-01Feb 202513.219
2025-03-01Mar 202520.721
2025-04-01Apr 202551.921
2025-05-01May 202516.821
2025-06-01Jun 202510.220
2025-07-01Jul 20256.622
2025-08-01Aug 20251221
2025-09-01Sep 20257.121
2025-10-01Oct 202513.823
2025-11-01Nov 202515.419
2025-12-01Dec 20258.422
2026-01-01Jan 202610.320
2026-02-01Feb 202613.419
2026-03-01Mar 202618.222
2026-04-01Apr 202611.621
2026-05-01May 20269.720
2026-06-01Jun 202617.721
2026-07-01Jul 202612.122
2026-08-01Aug 202610.321
Rows × columns
24 × 4
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 spy_monthly, derived from the stored result.
ColumnTypeRangeNotes
month date 2024-09-01 to 2026-08-01
month_label text 24 distinct values (Apr 2025, Apr 2026, Aug 2025…)
rv_annualised_pct number 6.6 to 51.9 percent
session_count number 19 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.

WITH bars AS
(
    SELECT
        date,
        any(toFloat64(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= today() - 790
      AND date <  today()
    GROUP BY date
),
rets AS
(
    SELECT
        date,
        log(c / lagInFrame(c) OVER (ORDER BY date)) AS r
    FROM bars
)
SELECT
    toString(toStartOfMonth(date))                          AS month,
    formatDateTime(toStartOfMonth(date), '%b %Y')           AS month_label,
    round(stddevSamp(r) * sqrt(252) * 100, 1)               AS rv_annualised_pct,
    count()                                                 AS session_count
FROM rets
WHERE isFinite(r)
  AND date >= toStartOfMonth(today() - 730)
  AND date <  toStartOfMonth(today())
GROUP BY month, month_label
HAVING session_count >= 15
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.