{"slug":"what-is-vomma","qid":"dte_profile","label":"Percent change in vega per vol point, by time to expiry (SPY)","post_title":"What Is Vomma? The Convexity of Vega","post_url":"/blog/what-is-vomma#q-dte_profile","columns":["dte","wing_growth_pct","atm_growth_pct"],"rows":[{"dte":"7 to 21 days","wing_growth_pct":26.23,"atm_growth_pct":3.34},{"dte":"22 to 45 days","wing_growth_pct":16.86,"atm_growth_pct":0.62},{"dte":"46 to 90 days","wing_growth_pct":8.54,"atm_growth_pct":0.33},{"dte":"91 to 180 days","wing_growth_pct":4.64,"atm_growth_pct":0.26},{"dte":"over 180 days","wing_growth_pct":1.25,"atm_growth_pct":0.29}],"shape":"ranking","sql":"WITH\n    (\n        SELECT max(date)\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n    ) AS snap_date\nSELECT\n    dte,\n    round(wing_growth, 2) AS wing_growth_pct,\n    round(atm_growth, 2)  AS atm_growth_pct\nFROM\n(\n    SELECT\n        multiIf(dte_days <= 21,  '7 to 21 days',\n                dte_days <= 45,  '22 to 45 days',\n                dte_days <= 90,  '46 to 90 days',\n                dte_days <= 180, '91 to 180 days',\n                                 'over 180 days')  AS dte,\n        multiIf(dte_days <= 21, 1, dte_days <= 45, 2, dte_days <= 90, 3,\n                dte_days <= 180, 4, 5)             AS dte_sort,\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            dte_days,\n            d1,\n            d1 - sigma * sqrt(t_years) AS d2\n        FROM\n        (\n            SELECT\n                k,\n                sigma,\n                dte_days,\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                    toInt32(days_to_expiry)                                   AS dte_days,\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 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 dte, dte_sort\n    HAVING countIf(abs(k) > 0.05 AND abs(k) <= 0.12) > 2\n       AND countIf(abs(k) <= 0.02) > 2\n)\nORDER BY dte_sort","computed_at":"2026-10-05T15:52:54.584615+00:00","elapsed":0.006226725}