{"slug":"what-is-vomma","qid":"vega_vomma_curve","label":"Vega and vomma across strikes, one SPY expiry","post_title":"What Is Vomma? The Convexity of Vega","post_url":"/blog/what-is-vomma#q-vega_vomma_curve","columns":["moneyness","vega_pct_of_peak","vomma_pct_of_peak","vega_growth_pct_per_vol_pt"],"rows":[{"moneyness":"10%+ below spot","vega_pct_of_peak":12.9,"vomma_pct_of_peak":24.8,"vega_growth_pct_per_vol_pt":12.88},{"moneyness":"5-10% below","vega_pct_of_peak":49,"vomma_pct_of_peak":60.4,"vega_growth_pct_per_vol_pt":7.63},{"moneyness":"2-5% below","vega_pct_of_peak":76.1,"vomma_pct_of_peak":44.4,"vega_growth_pct_per_vol_pt":3.62},{"moneyness":"within 2% of spot","vega_pct_of_peak":100,"vomma_pct_of_peak":9.3,"vega_growth_pct_per_vol_pt":0.58},{"moneyness":"2-5% above","vega_pct_of_peak":74.4,"vomma_pct_of_peak":71.3,"vega_growth_pct_per_vol_pt":6.55},{"moneyness":"5-10% above","vega_pct_of_peak":28.1,"vomma_pct_of_peak":100,"vega_growth_pct_per_vol_pt":25.42},{"moneyness":"10%+ above spot","vega_pct_of_peak":4.6,"vomma_pct_of_peak":34.2,"vega_growth_pct_per_vol_pt":46.63}],"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    strike_band                                             AS moneyness,\n    round(100 * avg_vega / max(avg_vega) OVER (), 1)        AS vega_pct_of_peak,\n    round(100 * avg_vomma / max(abs(avg_vomma)) OVER (), 1) AS vomma_pct_of_peak,\n    round(avg_growth, 2)                                    AS vega_growth_pct_per_vol_pt\nFROM\n(\n    SELECT\n        multiIf(k < -0.10, '10%+ below spot',\n                k < -0.05, '5-10% below',\n                k < -0.02, '2-5% below',\n                k <= 0.02, 'within 2% of spot',\n                k <= 0.05, '2-5% above',\n                k <= 0.10, '5-10% above',\n                           '10%+ above spot')     AS strike_band,\n        multiIf(k < -0.10, 1, k < -0.05, 2, k < -0.02, 3,\n                k <= 0.02, 4, k <= 0.05, 5, k <= 0.10, 6, 7) AS band_sort,\n        avg(vega)                                  AS avg_vega,\n        avg(vega * d1 * d2 / sigma)                AS avg_vomma,\n        avg(d1 * d2 / sigma)                       AS avg_growth\n    FROM\n    (\n        SELECT\n            k,\n            sigma,\n            vega,\n            d1,\n            d1 - sigma * sqrt(t_years)             AS d2\n        FROM\n        (\n            SELECT\n                k,\n                sigma,\n                vega,\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                    toFloat64(vega)                                           AS vega,\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    GROUP BY strike_band, band_sort\n)\nORDER BY band_sort","computed_at":"2026-10-05T15:52:51.313180+00:00","elapsed":0.004069798}