{"slug":"what-is-vomma","qid":"vol_shock_uplift","label":"How far the vega-only estimate falls short, by size of the vol move","post_title":"What Is Vomma? The Convexity of Vega","post_url":"/blog/what-is-vomma#q-vol_shock_uplift","columns":["vol_rise","wing_uplift_pct","atm_uplift_pct"],"rows":[{"vol_rise":"+1 vol pts","wing_uplift_pct":7.9,"atm_uplift_pct":0.3},{"vol_rise":"+2 vol pts","wing_uplift_pct":15.9,"atm_uplift_pct":0.6},{"vol_rise":"+3 vol pts","wing_uplift_pct":23.8,"atm_uplift_pct":0.9},{"vol_rise":"+5 vol pts","wing_uplift_pct":39.7,"atm_uplift_pct":1.4},{"vol_rise":"+8 vol pts","wing_uplift_pct":63.5,"atm_uplift_pct":2.3},{"vol_rise":"+10 vol pts","wing_uplift_pct":79.3,"atm_uplift_pct":2.9},{"vol_rise":"+15 vol pts","wing_uplift_pct":119,"atm_uplift_pct":4.3}],"shape":"ranking","sql":"WITH\n    (\n        SELECT max(date)\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n    ) AS snap_date,\n    (\n        SELECT argMin(expiration_date, abs(toInt32(days_to_expiry) - 35))\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n          AND date = snap_date\n          AND iv_converged = 1\n          AND volume > 0\n          AND days_to_expiry BETWEEN 20 AND 60\n    ) AS expiry\nSELECT\n    concat('+', toString(shock_pts), ' vol pts')  AS vol_rise,\n    round(0.5 * wing_growth * shock_pts, 1)       AS wing_uplift_pct,\n    round(0.5 * atm_growth * shock_pts, 1)        AS atm_uplift_pct\nFROM\n(\n    SELECT\n        avgIf(d1 * d2 / sigma, abs(k) > 0.05 AND abs(k) <= 0.12) AS wing_growth,\n        avgIf(d1 * d2 / sigma, abs(k) <= 0.02)                   AS atm_growth\n    FROM\n    (\n        SELECT\n            k,\n            sigma,\n            d1,\n            d1 - sigma * sqrt(t_years) AS d2\n        FROM\n        (\n            SELECT\n                k,\n                sigma,\n                t_years,\n                (log(spot / strike) + (rate + sigma * sigma / 2) * t_years)\n                    / (sigma * sqrt(t_years)) AS d1\n            FROM\n            (\n                SELECT\n                    toFloat64(underlying_close)                               AS spot,\n                    toFloat64(strike_price)                                   AS strike,\n                    toFloat64(strike_price) / toFloat64(underlying_close) - 1 AS k,\n                    toFloat64(implied_volatility)                             AS sigma,\n                    days_to_expiry / 365.0                                    AS t_years,\n                    if(toFloat64(risk_free_rate) > 1,\n                       toFloat64(risk_free_rate) / 100,\n                       toFloat64(risk_free_rate))                             AS rate\n                FROM global_markets.options_greeks\n                WHERE underlying_symbol = 'SPY'\n                  AND date = snap_date\n                  AND expiration_date = expiry\n                  AND iv_converged = 1\n                  AND volume > 0\n                  AND vega > 0\n                  AND days_to_expiry >= 7\n                  AND implied_volatility BETWEEN 0.02 AND 3.0\n            )\n        )\n    )\n    HAVING countIf(abs(k) > 0.05 AND abs(k) <= 0.12) > 0\n       AND countIf(abs(k) <= 0.02) > 0\n) AS chain\nCROSS JOIN\n(\n    SELECT arrayJoin([1, 2, 3, 5, 8, 10, 15]) AS shock_pts\n) AS shocks\nORDER BY shock_pts","computed_at":"2026-10-05T15:52:54.401448+00:00","elapsed":2.998615246}