Three ways to build a 30-day IV for SPY, from one set of rows
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-15, from Where to Get Historical Implied Volatility Data.
| week | week_label | tight_atm_pct | wide_atm_pct | volume_weighted_pct | spread_pp |
|---|---|---|---|---|---|
| 2025-07-28 | July 28, 2025 | 16.6 | 16.4 | 16.7 | 0.2 |
| 2025-08-04 | August 4, 2025 | 13.6 | 14.7 | 14.9 | 1.3 |
| 2025-08-11 | August 11, 2025 | 12.3 | 13.6 | 13.9 | 1.5 |
| 2025-08-18 | August 18, 2025 | 12.6 | 13.5 | 14.5 | 2 |
| 2025-08-25 | August 25, 2025 | 11.8 | 12.8 | 13.6 | 1.8 |
| 2025-09-01 | September 1, 2025 | 12.5 | 13.2 | 14 | 1.4 |
| 2025-09-08 | September 8, 2025 | 11.9 | 12.5 | 13.3 | 1.4 |
| 2025-09-15 | September 15, 2025 | 12.6 | 13.2 | 14 | 1.5 |
| 2025-09-22 | September 22, 2025 | 13.4 | 14.2 | 15 | 1.6 |
| 2025-09-29 | September 29, 2025 | 13.5 | 14.1 | 14 | 0.6 |
| 2025-10-06 | October 6, 2025 | 15.2 | 15.6 | 16.8 | 1.6 |
| 2025-10-13 | October 13, 2025 | 17 | 17.7 | 18.8 | 1.8 |
| 2025-10-20 | October 20, 2025 | 14.3 | 15.1 | 15.7 | 1.5 |
| 2025-10-27 | October 27, 2025 | 14.2 | 15.1 | 15.4 | 1.2 |
| 2025-11-03 | November 3, 2025 | 15.6 | 16.3 | 16.6 | 1 |
| 2025-11-10 | November 10, 2025 | 15.7 | 15.9 | 17.2 | 1.5 |
| 2025-11-17 | November 17, 2025 | 19.6 | 18.8 | 21.2 | 2.4 |
| 2025-11-24 | November 24, 2025 | 14.7 | 15.4 | 15.9 | 1.2 |
| 2025-12-01 | December 1, 2025 | 13.4 | 14.2 | 14 | 0.7 |
| 2025-12-08 | December 8, 2025 | 13.1 | 13.6 | 13.4 | 0.5 |
| 2025-12-15 | December 15, 2025 | 13.2 | 13.9 | 14.3 | 1.1 |
| 2025-12-22 | December 22, 2025 | 11.4 | 12.4 | 12.3 | 0.9 |
| 2025-12-29 | December 29, 2025 | 12.4 | 12.7 | 12.4 | 0.3 |
| 2026-01-05 | January 5, 2026 | 12.6 | 13.3 | 13.5 | 0.9 |
| 2026-01-12 | January 12, 2026 | 13.2 | 13.8 | 14.1 | 1 |
| 2026-01-19 | January 19, 2026 | 14.3 | 14.9 | 16 | 1.7 |
| 2026-01-26 | January 26, 2026 | 14 | 14.5 | 15.2 | 1.2 |
| 2026-02-02 | February 2, 2026 | 15.3 | 16.2 | 16.5 | 1.2 |
| 2026-02-09 | February 9, 2026 | 15.9 | 16.3 | 17.5 | 1.6 |
| 2026-02-16 | February 16, 2026 | 16.6 | 16.7 | 17.4 | 0.8 |
| 2026-02-23 | February 23, 2026 | 16.2 | 16.5 | 17.7 | 1.5 |
| 2026-03-02 | March 2, 2026 | 19 | 18.8 | 19 | 0.2 |
| 2026-03-09 | March 9, 2026 | 21.5 | 21.1 | 21.3 | 0.4 |
| 2026-03-16 | March 16, 2026 | 20.9 | 20.6 | 22 | 1.3 |
| 2026-03-23 | March 23, 2026 | 24 | 22.9 | 24.3 | 1.4 |
| 2026-03-30 | March 30, 2026 | 22.6 | 21.6 | 21.3 | 1.3 |
| 2026-04-06 | April 6, 2026 | 17.7 | 18.4 | 18.4 | 0.7 |
| 2026-04-13 | April 13, 2026 | 15.1 | 16 | 16 | 0.9 |
| 2026-04-20 | April 20, 2026 | 16 | 16.4 | 17 | 1 |
| 2026-04-27 | April 27, 2026 | 15.1 | 15.7 | 15.9 | 0.8 |
| 2026-05-04 | May 4, 2026 | 15 | 15.9 | 15.7 | 0.9 |
| 2026-05-11 | May 11, 2026 | 15.5 | 16.3 | 16.5 | 1 |
| 2026-05-18 | May 18, 2026 | 15.1 | 15.4 | 16 | 0.9 |
| 2026-05-25 | May 25, 2026 | 13.5 | 14.1 | 14.5 | 1 |
| 2026-06-01 | June 1, 2026 | 14.2 | 14.8 | 16.3 | 2 |
| 2026-06-08 | June 8, 2026 | 16.3 | 17.1 | 17.6 | 1.3 |
| 2026-06-15 | June 15, 2026 | 13.9 | 14.6 | 15.6 | 1.7 |
| 2026-06-22 | June 22, 2026 | 16.1 | 16.5 | 16.7 | 0.6 |
| 2026-06-29 | June 29, 2026 | 14.4 | 14.4 | 14.1 | 0.4 |
| 2026-07-06 | July 6, 2026 | 13.3 | 13.9 | 14.2 | 0.9 |
| 2026-07-13 | July 13, 2026 | 14.5 | 14.8 | 15.5 | 1 |
| 2026-07-20 | July 20, 2026 | 15.2 | 15.3 | 15.6 | 0.5 |
| 2026-07-27 | July 27, 2026 | 15 | 15.3 | 15.8 | 0.8 |
- Rows × columns
- 53 × 6
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
week |
date | 2025-07-28 to 2026-07-27 | |
week_label |
text | 53 distinct values | |
tight_atm_pct |
number | 11.4 to 24 | percent |
wide_atm_pct |
number | 12.4 to 22.9 | percent |
volume_weighted_pct |
number | 12.3 to 24.3 | percent |
spread_pp |
number | 0.2 to 2.4 |
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
near_money AS
(
SELECT
toMonday(date) AS week_start,
toFloat64(implied_volatility) AS iv,
days_to_expiry AS dte,
volume AS vol,
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2025-08-01'
AND date < '2026-08-01'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
),
weekly AS
(
SELECT
week_start,
avgIf(iv, dte BETWEEN 25 AND 35 AND moneyness < 0.01) AS tight_atm,
avg(iv) AS wide_atm,
sum(iv * vol) / sum(vol) AS volume_weighted
FROM near_money
GROUP BY week_start
HAVING countIf(dte BETWEEN 25 AND 35 AND moneyness < 0.01) > 0
)
SELECT
toString(week_start) AS week,
concat(monthName(week_start), ' ', toString(toDayOfMonth(week_start)), ', ', toString(toYear(week_start))) AS week_label,
round(100 * tight_atm, 1) AS tight_atm_pct,
round(100 * wide_atm, 1) AS wide_atm_pct,
round(100 * volume_weighted, 1) AS volume_weighted_pct,
round(100 * (greatest(tight_atm, wide_atm, volume_weighted)
- least(tight_atm, wide_atm, volume_weighted)), 1) AS spread_pp
FROM weekly
ORDER BY week_start
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 analysisWhere to Get Historical Implied Volatility Data
Underlying names with converged daily IV, by quarter
table 49×2
→
Median near-the-money IV, 20 to 45 days to expiry (June 2026)
ranking 8×3
→
One name, one month: implied volatility by time to expiry (AAPL, June 2026)
table 6×5
→
The top-ranked name's implied volatility by week, with its 52-week high and low
series 53×4
→
SPY vs QQQ, normalized return over the last 45 days
series 33×3
→
One SPY $740 call's price over its 7-week life (expired Jun 18 2026)
series 31×2
→
See all 2,170 queries →