STRASMORE/EXPLORE 3,293 QUERIES

SPY implied volatility against the realized volatility that followed, by month

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-10-16, from The Volatility Risk Premium, Measured.

as of series 62×5read in context →
SPY implied volatility against the realized volatility that followed, by month — 62 rows by 5 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelimplied_vol_pctrealized_vol_pctpremium_pct
2021-08-01Aug 202113.339.573.76
2021-09-01Sep 202115.114.510.58
2021-10-01Oct 202114.788.845.94
2021-11-01Nov 202114.5917.36-2.77
2021-12-01Dec 202116.7715.850.92
2022-01-01Jan 202219.3821.31-1.93
2022-02-01Feb 202221.8524.14-2.29
2022-03-01Mar 202222.7519.782.97
2022-04-01Apr 202220.3831.75-11.36
2022-05-01May 202226.6529.52-2.87
2022-06-01Jun 202225.5223.681.84
2022-07-01Jul 202223.0118.984.03
2022-08-01Aug 202220.0822.96-2.88
2022-09-01Sep 202225.127.81-2.72
2022-10-01Oct 202227.8426.831.01
2022-11-01Nov 202222.3321.880.45
2022-12-01Dec 202220.8317.92.93
2023-01-01Jan 202319.3716.363.01
2023-02-01Feb 202318.9216.872.05
2023-03-01Mar 202320.0614.215.85
2023-04-01Apr 202316.513.443.06
2023-05-01May 202315.711.943.76
2023-06-01Jun 202312.69.642.96
2023-07-01Jul 202312.9610.152.81
2023-08-01Aug 202314.2711.852.41
2023-09-01Sep 202313.7712.940.83
2023-10-01Oct 202317.0514.782.28
2023-11-01Nov 202313.069.743.33
2023-12-01Dec 202312.1110.141.97
2024-01-01Jan 202412.4412.390.06
2024-02-01Feb 202412.5811.261.32
2024-03-01Mar 202412.5910.981.61
2024-04-01Apr 202414.7812.32.49
2024-05-01May 202412.288.493.78
2024-06-01Jun 202411.739.382.35
2024-07-01Jul 202413.3719.68-6.32
2024-08-01Aug 202416.2414.71.54
2024-09-01Sep 202415.0110.064.95
2024-10-01Oct 202416.6112.853.76
2024-11-01Nov 202413.8710.73.17
2024-12-01Dec 202412.8214.93-2.12
2025-01-01Jan 202514.3712.052.31
2025-02-01Feb 202514.0819.24-5.16
2025-03-01Mar 202519.0543.44-24.39
2025-04-01Apr 202527.7527.30.45
2025-05-01May 202518.4113.35.11
2025-06-01Jun 202515.849.056.79
2025-07-01Jul 202514.9210.374.55
2025-08-01Aug 202513.788.655.13
2025-09-01Sep 202513.3310.662.67
2025-10-01Oct 202515.6113.81.82
2025-11-01Nov 202516.6511.515.15
2025-12-01Dec 202513.469.244.22
2026-01-01Jan 202614.0312.351.68
2026-02-01Feb 202616.3513.163.19
2026-03-01Mar 202621.0618.422.64
2026-04-01Apr 202617.0811.485.6
2026-05-01May 202615.5114.411.1
2026-06-01Jun 202615.6513.372.28
2026-07-01Jul 202614.7413.021.72
2026-08-01Aug 202613.39.184.12
2026-09-01Sep 202613.539.943.59
Rows × columns
62 × 5
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 implied volatility against the realized volatility that followed, by month, derived from the stored result.
ColumnTypeRangeNotes
month date 2021-08-01 to 2026-09-01
month_label text 62 distinct values (Apr 2022, Apr 2023, Apr 2024…)
implied_vol_pct number 11.73 to 27.84 percent
realized_vol_pct number 8.49 to 43.44 percent
premium_pct number -24.39 to 6.79 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
closes AS
(
    SELECT
        date,
        toFloat64(any(close)) AS px
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= '2021-06-01'
    GROUP BY date
),
daily_returns AS
(
    SELECT
        date,
        pow(log(px / lagInFrame(px) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)), 2) AS r2
    FROM closes
),
forward_rv AS
(
    SELECT
        date,
        100 * sqrt(252 * avg(r2) OVER (ORDER BY date ROWS BETWEEN 1 FOLLOWING AND 21 FOLLOWING)) AS rv_pct,
        count(r2) OVER (ORDER BY date ROWS BETWEEN 1 FOLLOWING AND 21 FOLLOWING)                 AS sessions_ahead
    FROM daily_returns
    WHERE isFinite(r2)
),
implied AS
(
    SELECT
        date,
        100 * avg(toFloat64(implied_volatility)) AS iv_pct
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 20 AND 45
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
      AND date >= '2021-08-01'
    GROUP BY date
    HAVING count() >= 20
),
paired AS
(
    SELECT
        i.date              AS date,
        i.iv_pct            AS iv_pct,
        f.rv_pct            AS rv_pct,
        i.iv_pct - f.rv_pct AS premium_pct
    FROM implied AS i
    INNER JOIN forward_rv AS f ON f.date = i.date
    WHERE f.sessions_ahead = 21
)
SELECT
    toString(toStartOfMonth(date))                AS month,
    formatDateTime(toStartOfMonth(date), '%b %Y') AS month_label,
    round(avg(iv_pct), 2)                         AS implied_vol_pct,
    round(avg(rv_pct), 2)                         AS realized_vol_pct,
    round(avg(premium_pct), 2)                    AS premium_pct
FROM paired
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 analysisThe Volatility Risk Premium, Measured
The ten deepest 21 session shortfalls, one per calendar month ranking 10×4 → The 21 session premium across strikes, puts and calls, 20 to 45 days to expiry ranking 7×3 → Distribution of the 21 session volatility risk premium, in volatility points ranking 6×3 → The volatility risk premium by option tenor, each matched to its own realized window table 4×5 → AAPL realized volatility: 20-session against 60-session lookback series 72×3 → SPY: monthly 30-day implied volatility against the next month's realized volatility series 24×4 → See all 3,293 queries →