{"slug":"where-to-get-historical-implied-volatility-data","qid":"thirty_day_iv","label":"Three ways to build a 30-day IV for SPY, from one set of rows","post_title":"Where to Get Historical Implied Volatility Data","post_url":"/blog/where-to-get-historical-implied-volatility-data#q-thirty_day_iv","columns":["week","week_label","tight_atm_pct","wide_atm_pct","volume_weighted_pct","spread_pp"],"rows":[{"week":"2025-07-28","week_label":"July 28, 2025","tight_atm_pct":16.6,"wide_atm_pct":16.4,"volume_weighted_pct":16.7,"spread_pp":0.2},{"week":"2025-08-04","week_label":"August 4, 2025","tight_atm_pct":13.6,"wide_atm_pct":14.7,"volume_weighted_pct":14.9,"spread_pp":1.3},{"week":"2025-08-11","week_label":"August 11, 2025","tight_atm_pct":12.3,"wide_atm_pct":13.6,"volume_weighted_pct":13.9,"spread_pp":1.5},{"week":"2025-08-18","week_label":"August 18, 2025","tight_atm_pct":12.6,"wide_atm_pct":13.5,"volume_weighted_pct":14.5,"spread_pp":2},{"week":"2025-08-25","week_label":"August 25, 2025","tight_atm_pct":11.8,"wide_atm_pct":12.8,"volume_weighted_pct":13.6,"spread_pp":1.8},{"week":"2025-09-01","week_label":"September 1, 2025","tight_atm_pct":12.5,"wide_atm_pct":13.2,"volume_weighted_pct":14,"spread_pp":1.4},{"week":"2025-09-08","week_label":"September 8, 2025","tight_atm_pct":11.9,"wide_atm_pct":12.5,"volume_weighted_pct":13.3,"spread_pp":1.4},{"week":"2025-09-15","week_label":"September 15, 2025","tight_atm_pct":12.6,"wide_atm_pct":13.2,"volume_weighted_pct":14,"spread_pp":1.5},{"week":"2025-09-22","week_label":"September 22, 2025","tight_atm_pct":13.4,"wide_atm_pct":14.2,"volume_weighted_pct":15,"spread_pp":1.6},{"week":"2025-09-29","week_label":"September 29, 2025","tight_atm_pct":13.5,"wide_atm_pct":14.1,"volume_weighted_pct":14,"spread_pp":0.6},{"week":"2025-10-06","week_label":"October 6, 2025","tight_atm_pct":15.2,"wide_atm_pct":15.6,"volume_weighted_pct":16.8,"spread_pp":1.6},{"week":"2025-10-13","week_label":"October 13, 2025","tight_atm_pct":17,"wide_atm_pct":17.7,"volume_weighted_pct":18.8,"spread_pp":1.8},{"week":"2025-10-20","week_label":"October 20, 2025","tight_atm_pct":14.3,"wide_atm_pct":15.1,"volume_weighted_pct":15.7,"spread_pp":1.5},{"week":"2025-10-27","week_label":"October 27, 2025","tight_atm_pct":14.2,"wide_atm_pct":15.1,"volume_weighted_pct":15.4,"spread_pp":1.2},{"week":"2025-11-03","week_label":"November 3, 2025","tight_atm_pct":15.6,"wide_atm_pct":16.3,"volume_weighted_pct":16.6,"spread_pp":1},{"week":"2025-11-10","week_label":"November 10, 2025","tight_atm_pct":15.7,"wide_atm_pct":15.9,"volume_weighted_pct":17.2,"spread_pp":1.5},{"week":"2025-11-17","week_label":"November 17, 2025","tight_atm_pct":19.6,"wide_atm_pct":18.8,"volume_weighted_pct":21.2,"spread_pp":2.4},{"week":"2025-11-24","week_label":"November 24, 2025","tight_atm_pct":14.7,"wide_atm_pct":15.4,"volume_weighted_pct":15.9,"spread_pp":1.2},{"week":"2025-12-01","week_label":"December 1, 2025","tight_atm_pct":13.4,"wide_atm_pct":14.2,"volume_weighted_pct":14,"spread_pp":0.7},{"week":"2025-12-08","week_label":"December 8, 2025","tight_atm_pct":13.1,"wide_atm_pct":13.6,"volume_weighted_pct":13.4,"spread_pp":0.5},{"week":"2025-12-15","week_label":"December 15, 2025","tight_atm_pct":13.2,"wide_atm_pct":13.9,"volume_weighted_pct":14.3,"spread_pp":1.1},{"week":"2025-12-22","week_label":"December 22, 2025","tight_atm_pct":11.4,"wide_atm_pct":12.4,"volume_weighted_pct":12.3,"spread_pp":0.9},{"week":"2025-12-29","week_label":"December 29, 2025","tight_atm_pct":12.4,"wide_atm_pct":12.7,"volume_weighted_pct":12.4,"spread_pp":0.3},{"week":"2026-01-05","week_label":"January 5, 2026","tight_atm_pct":12.6,"wide_atm_pct":13.3,"volume_weighted_pct":13.5,"spread_pp":0.9},{"week":"2026-01-12","week_label":"January 12, 2026","tight_atm_pct":13.2,"wide_atm_pct":13.8,"volume_weighted_pct":14.1,"spread_pp":1},{"week":"2026-01-19","week_label":"January 19, 2026","tight_atm_pct":14.3,"wide_atm_pct":14.9,"volume_weighted_pct":16,"spread_pp":1.7},{"week":"2026-01-26","week_label":"January 26, 2026","tight_atm_pct":14,"wide_atm_pct":14.5,"volume_weighted_pct":15.2,"spread_pp":1.2},{"week":"2026-02-02","week_label":"February 2, 2026","tight_atm_pct":15.3,"wide_atm_pct":16.2,"volume_weighted_pct":16.5,"spread_pp":1.2},{"week":"2026-02-09","week_label":"February 9, 2026","tight_atm_pct":15.9,"wide_atm_pct":16.3,"volume_weighted_pct":17.5,"spread_pp":1.6},{"week":"2026-02-16","week_label":"February 16, 2026","tight_atm_pct":16.6,"wide_atm_pct":16.7,"volume_weighted_pct":17.4,"spread_pp":0.8},{"week":"2026-02-23","week_label":"February 23, 2026","tight_atm_pct":16.2,"wide_atm_pct":16.5,"volume_weighted_pct":17.7,"spread_pp":1.5},{"week":"2026-03-02","week_label":"March 2, 2026","tight_atm_pct":19,"wide_atm_pct":18.8,"volume_weighted_pct":19,"spread_pp":0.2},{"week":"2026-03-09","week_label":"March 9, 2026","tight_atm_pct":21.5,"wide_atm_pct":21.1,"volume_weighted_pct":21.3,"spread_pp":0.4},{"week":"2026-03-16","week_label":"March 16, 2026","tight_atm_pct":20.9,"wide_atm_pct":20.6,"volume_weighted_pct":22,"spread_pp":1.3},{"week":"2026-03-23","week_label":"March 23, 2026","tight_atm_pct":24,"wide_atm_pct":22.9,"volume_weighted_pct":24.3,"spread_pp":1.4},{"week":"2026-03-30","week_label":"March 30, 2026","tight_atm_pct":22.6,"wide_atm_pct":21.6,"volume_weighted_pct":21.3,"spread_pp":1.3},{"week":"2026-04-06","week_label":"April 6, 2026","tight_atm_pct":17.7,"wide_atm_pct":18.4,"volume_weighted_pct":18.4,"spread_pp":0.7},{"week":"2026-04-13","week_label":"April 13, 2026","tight_atm_pct":15.1,"wide_atm_pct":16,"volume_weighted_pct":16,"spread_pp":0.9},{"week":"2026-04-20","week_label":"April 20, 2026","tight_atm_pct":16,"wide_atm_pct":16.4,"volume_weighted_pct":17,"spread_pp":1},{"week":"2026-04-27","week_label":"April 27, 2026","tight_atm_pct":15.1,"wide_atm_pct":15.7,"volume_weighted_pct":15.9,"spread_pp":0.8},{"week":"2026-05-04","week_label":"May 4, 2026","tight_atm_pct":15,"wide_atm_pct":15.9,"volume_weighted_pct":15.7,"spread_pp":0.9},{"week":"2026-05-11","week_label":"May 11, 2026","tight_atm_pct":15.5,"wide_atm_pct":16.3,"volume_weighted_pct":16.5,"spread_pp":1},{"week":"2026-05-18","week_label":"May 18, 2026","tight_atm_pct":15.1,"wide_atm_pct":15.4,"volume_weighted_pct":16,"spread_pp":0.9},{"week":"2026-05-25","week_label":"May 25, 2026","tight_atm_pct":13.5,"wide_atm_pct":14.1,"volume_weighted_pct":14.5,"spread_pp":1},{"week":"2026-06-01","week_label":"June 1, 2026","tight_atm_pct":14.2,"wide_atm_pct":14.8,"volume_weighted_pct":16.3,"spread_pp":2},{"week":"2026-06-08","week_label":"June 8, 2026","tight_atm_pct":16.3,"wide_atm_pct":17.1,"volume_weighted_pct":17.6,"spread_pp":1.3},{"week":"2026-06-15","week_label":"June 15, 2026","tight_atm_pct":13.9,"wide_atm_pct":14.6,"volume_weighted_pct":15.6,"spread_pp":1.7},{"week":"2026-06-22","week_label":"June 22, 2026","tight_atm_pct":16.1,"wide_atm_pct":16.5,"volume_weighted_pct":16.7,"spread_pp":0.6},{"week":"2026-06-29","week_label":"June 29, 2026","tight_atm_pct":14.4,"wide_atm_pct":14.4,"volume_weighted_pct":14.1,"spread_pp":0.4},{"week":"2026-07-06","week_label":"July 6, 2026","tight_atm_pct":13.3,"wide_atm_pct":13.9,"volume_weighted_pct":14.2,"spread_pp":0.9},{"week":"2026-07-13","week_label":"July 13, 2026","tight_atm_pct":14.5,"wide_atm_pct":14.8,"volume_weighted_pct":15.5,"spread_pp":1},{"week":"2026-07-20","week_label":"July 20, 2026","tight_atm_pct":15.2,"wide_atm_pct":15.3,"volume_weighted_pct":15.6,"spread_pp":0.5},{"week":"2026-07-27","week_label":"July 27, 2026","tight_atm_pct":15,"wide_atm_pct":15.3,"volume_weighted_pct":15.8,"spread_pp":0.8}],"shape":"series","sql":"WITH\n    near_money AS\n    (\n        SELECT\n            toMonday(date)                                                 AS week_start,\n            toFloat64(implied_volatility)                                  AS iv,\n            days_to_expiry                                                 AS dte,\n            volume                                                         AS vol,\n            abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n          AND date >= '2025-08-01'\n          AND date <  '2026-08-01'\n          AND iv_converged = 1\n          AND volume > 0\n          AND underlying_close > 0\n          AND days_to_expiry BETWEEN 20 AND 45\n          AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05\n    ),\n    weekly AS\n    (\n        SELECT\n            week_start,\n            avgIf(iv, dte BETWEEN 25 AND 35 AND moneyness < 0.01) AS tight_atm,\n            avg(iv)                                               AS wide_atm,\n            sum(iv * vol) / sum(vol)                              AS volume_weighted\n        FROM near_money\n        GROUP BY week_start\n        HAVING countIf(dte BETWEEN 25 AND 35 AND moneyness < 0.01) > 0\n    )\nSELECT\n    toString(week_start) AS week,\n    concat(monthName(week_start), ' ', toString(toDayOfMonth(week_start)), ', ', toString(toYear(week_start))) AS week_label,\n    round(100 * tight_atm, 1)       AS tight_atm_pct,\n    round(100 * wide_atm, 1)        AS wide_atm_pct,\n    round(100 * volume_weighted, 1) AS volume_weighted_pct,\n    round(100 * (greatest(tight_atm, wide_atm, volume_weighted)\n               - least(tight_atm, wide_atm, volume_weighted)), 1) AS spread_pp\nFROM weekly\nORDER BY week_start","computed_at":"2026-08-15T16:05:46.590345+00:00","elapsed":0.004093776}