{"slug":"what-is-the-cme-cvol-index","qid":"spy_strike_weights","label":"spy_strike_weights","post_title":"what-is-the-cme-cvol-index","post_url":"/blog/what-is-the-cme-cvol-index#q-spy_strike_weights","columns":["moneyness","iv_pct","vix_style_weight_pct","cvol_style_weight_pct"],"rows":[{"moneyness":"-10%","iv_pct":24.9,"vix_style_weight_pct":123.5,"cvol_style_weight_pct":100},{"moneyness":"-8%","iv_pct":22.8,"vix_style_weight_pct":118.1,"cvol_style_weight_pct":100},{"moneyness":"-6%","iv_pct":20.5,"vix_style_weight_pct":113.2,"cvol_style_weight_pct":100},{"moneyness":"-4%","iv_pct":18.8,"vix_style_weight_pct":108.5,"cvol_style_weight_pct":100},{"moneyness":"-2%","iv_pct":16.9,"vix_style_weight_pct":104.1,"cvol_style_weight_pct":100},{"moneyness":"0%","iv_pct":15,"vix_style_weight_pct":100,"cvol_style_weight_pct":100},{"moneyness":"+2%","iv_pct":13.2,"vix_style_weight_pct":96.1,"cvol_style_weight_pct":100},{"moneyness":"+4%","iv_pct":12.1,"vix_style_weight_pct":92.5,"cvol_style_weight_pct":100},{"moneyness":"+6%","iv_pct":11.7,"vix_style_weight_pct":89,"cvol_style_weight_pct":100},{"moneyness":"+8%","iv_pct":12.2,"vix_style_weight_pct":85.7,"cvol_style_weight_pct":100},{"moneyness":"+10%","iv_pct":13.4,"vix_style_weight_pct":82.6,"cvol_style_weight_pct":100}],"shape":"ranking","sql":"SELECT\n    concat(if(bucket_pct > 0, '+', ''), toString(bucket_pct), '%') AS moneyness,\n    round(100 * avg(implied_volatility), 1)                        AS iv_pct,\n    round(100 / pow(1 + bucket_pct / 100, 2), 1)                    AS vix_style_weight_pct,\n    100                                                             AS cvol_style_weight_pct\nFROM\n(\n    SELECT\n        implied_volatility,\n        toInt32(2 * round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 50)) AS bucket_pct\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND date >= '2026-06-01'\n      AND date <  '2026-07-01'\n      AND iv_converged = 1\n      AND volume > 0\n      AND days_to_expiry BETWEEN 23 AND 37\n      AND ((lower(toString(option_type)) IN ('put', 'p')\n                AND toFloat64(strike_price) < toFloat64(underlying_close))\n        OR (lower(toString(option_type)) IN ('call', 'c')\n                AND toFloat64(strike_price) > toFloat64(underlying_close)))\n)\nWHERE bucket_pct BETWEEN -10 AND 10\nGROUP BY bucket_pct\nORDER BY bucket_pct","computed_at":"2026-09-18T15:15:34.395232+00:00","elapsed":0.003726568}