{"slug":"how-options-are-quoted-in-volatility","qid":"vol_smile","label":"Quoted volatility and delta across strikes, AAPL calls with 20 to 45 days left","post_title":"How Options Are Quoted in Volatility","post_url":"/blog/how-options-are-quoted-in-volatility#q-vol_smile","columns":["strike_vs_spot","quoted_vol_pct","typical_delta"],"rows":[{"strike_vs_spot":"-10%","quoted_vol_pct":29.85,"typical_delta":0.87},{"strike_vs_spot":"-8%","quoted_vol_pct":28.8,"typical_delta":0.85},{"strike_vs_spot":"-6%","quoted_vol_pct":28.33,"typical_delta":0.79},{"strike_vs_spot":"-4%","quoted_vol_pct":26.99,"typical_delta":0.73},{"strike_vs_spot":"-2%","quoted_vol_pct":26.6,"typical_delta":0.64},{"strike_vs_spot":"0%","quoted_vol_pct":25.88,"typical_delta":0.52},{"strike_vs_spot":"+2%","quoted_vol_pct":25.71,"typical_delta":0.42},{"strike_vs_spot":"+4%","quoted_vol_pct":25.24,"typical_delta":0.33},{"strike_vs_spot":"+6%","quoted_vol_pct":25.01,"typical_delta":0.24},{"strike_vs_spot":"+8%","quoted_vol_pct":25.06,"typical_delta":0.17},{"strike_vs_spot":"+10%","quoted_vol_pct":24.62,"typical_delta":0.12}],"shape":"ranking","sql":"SELECT\n    strike_vs_spot,\n    round(100 * quantileDeterministic(0.5)(iv, obs_id), 2)       AS quoted_vol_pct,\n    round(quantileDeterministic(0.5)(contract_delta, obs_id), 2) AS typical_delta\nFROM\n(\n    SELECT\n        cityHash64(ticker, date)      AS obs_id,\n        toFloat64(implied_volatility) AS iv,\n        toFloat64(delta)              AS contract_delta,\n        toInt32(round(100 * (toFloat64(strike_price) / toFloat64(underlying_close) - 1) / 2) * 2) AS moneyness_step,\n        concat(if(moneyness_step > 0, '+', ''), toString(moneyness_step), '%')                    AS strike_vs_spot\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'AAPL'\n      AND toFloat64(delta) > 0\n      AND date BETWEEN '2026-04-06' AND '2026-05-15'\n      AND iv_converged = 1\n      AND volume > 0\n      AND days_to_expiry BETWEEN 20 AND 45\n      AND implied_volatility > 0\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.10\n)\nGROUP BY strike_vs_spot, moneyness_step\nHAVING count() >= 20\nORDER BY moneyness_step ASC","computed_at":"2026-08-17T14:04:12.385238+00:00","elapsed":0.00287459}