STRASMORE/EXPLORE 2,170 QUERIES

SPY realised volatility by month against a 10% target

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-08-22, from Volatility Targeting for Position Sizing.

as of series 72×4read in context →
SPY realised volatility by month against a 10% target — 72 rows by 4 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelrealised_vol_pcttarget_vol_pct
2020-08-01Aug 20208.310
2020-09-01Sep 202024.810
2020-10-01Oct 202020.510
2020-11-01Nov 202016.210
2020-12-01Dec 20209.110
2021-01-01Jan 202116.810
2021-02-01Feb 202114.410
2021-03-01Mar 202116.410
2021-04-01Apr 202110.510
2021-05-01May 202114.110
2021-06-01Jun 20219.310
2021-07-01Jul 202111.410
2021-08-01Aug 20218.310
2021-09-01Sep 202113.110
2021-10-01Oct 202110.910
2021-11-01Nov 202112.910
2021-12-01Dec 202117.210
2022-01-01Jan 202218.710
2022-02-01Feb 202222.510
2022-03-01Mar 202223.210
2022-04-01Apr 202225.110
2022-05-01May 202231.410
2022-06-01Jun 202229.710
2022-07-01Jul 202219.110
2022-08-01Aug 202219.410
2022-09-01Sep 202224.210
2022-10-01Oct 202227.810
2022-11-01Nov 202227.610
2022-12-01Dec 202218.410
2023-01-01Jan 202316.510
2023-02-01Feb 202315.610
2023-03-01Mar 202318.510
2023-04-01Apr 20231210
2023-05-01May 202312.810
2023-06-01Jun 202310.810
2023-07-01Jul 2023810
2023-08-01Aug 202312.310
2023-09-01Sep 202311.410
2023-10-01Oct 20231410
2023-11-01Nov 202311.110
2023-12-01Dec 20239.810
2024-01-01Jan 202411.210
2024-02-01Feb 202412.110
2024-03-01Mar 202410.110
2024-04-01Apr 202413.210
2024-05-01May 20249.510
2024-06-01Jun 20246.710
2024-07-01Jul 202414.410
2024-08-01Aug 202419.210
2024-09-01Sep 202413.810
2024-10-01Oct 202411.210
2024-11-01Nov 202411.810
2024-12-01Dec 202414.110
2025-01-01Jan 202513.910
2025-02-01Feb 202513.210
2025-03-01Mar 202520.710
2025-04-01Apr 202551.910
2025-05-01May 202516.810
2025-06-01Jun 202510.210
2025-07-01Jul 20256.610
2025-08-01Aug 20251210
2025-09-01Sep 20257.110
2025-10-01Oct 202513.810
2025-11-01Nov 202515.410
2025-12-01Dec 20258.410
2026-01-01Jan 202610.310
2026-02-01Feb 202613.410
2026-03-01Mar 202618.210
2026-04-01Apr 202611.610
2026-05-01May 20269.710
2026-06-01Jun 202617.710
2026-07-01Jul 202612.110
Rows × columns
72 × 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 realised volatility by month against a 10% target, derived from the stored result.
ColumnTypeRangeNotes
month date 2020-08-01 to 2026-07-01
month_label text 72 distinct values (Apr 2021, Apr 2022, Apr 2023…)
realised_vol_pct number 6.6 to 51.9 percent
target_vol_pct number every row is 10 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.

the exact SQL behind every number
WITH
    px AS
    (
        SELECT
            date                  AS d,
            toFloat64(any(close)) AS c
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'SPY'
          AND date >= toStartOfMonth(subtractYears(today(), 6))
          AND date <  toStartOfMonth(today())
        GROUP BY d
    ),
    px_sorted AS
    (
        SELECT arraySort(p -> p.1, groupArray((d, c))) AS pts
        FROM px
    ),
    rets AS
    (
        SELECT arrayJoin(arrayFilter(x -> abs(x.2) < 0.4,
                   arrayMap((a, b) -> (b.1, log(b.2 / a.2)),
                            arraySlice(pts, 1, length(pts) - 1),
                            arraySlice(pts, 2)))) AS r
        FROM px_sorted
    )
SELECT
    toStartOfMonth(tupleElement(r, 1))                          AS month,
    formatDateTime(toStartOfMonth(tupleElement(r, 1)), '%b %Y') AS month_label,
    round(stddevSamp(tupleElement(r, 2)) * sqrt(252) * 100, 1)  AS realised_vol_pct,
    10                                                          AS target_vol_pct
FROM rets
GROUP BY month, month_label
ORDER BY month

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisVolatility Targeting for Position Sizing
Weekly realised volatility and the weight it implied, Nov 2019 to Apr 2020 series 25×4 One 10% risk budget, six names, six different weights ranking 6×4 What the lookback window costs in daily turnover (SPY, 10% target, 2x cap) ranking 4×4 SPY underwater curve: month end close against its running peak, 2016 to 2026 series 127×2 S&P 500 tracker (SPY): down sessions by calendar year, 2016 to mid-2026 table 11×5 Symbols that printed a final daily bar, by year ranking 10×3 See all 2,170 queries →