STRASMORE/EXPLORE 3,094 QUERIES 22Y EQUITIES · 12Y OPTIONS

3,094 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

What Is Vomma? The Convexity of Vega
How far the vega-only estimate falls short, by size of the vol moveranking · 2026-10-05 · 7×3Preview: 7 ranked values, smallest first. Vega and vomma across strikes, one SPY expiryranking · 2026-10-05 · 7×4Preview: 7 ranked values, largest first. Implied volatility across strikes on the same SPY expiryranking · 2026-10-05 · 7×4Preview: 7 ranked values, largest first. Percent change in vega per vol point, by time to expiry (SPY)ranking · 2026-10-05 · 5×3Preview: 5 ranked values, largest first.
How far the vega-only estimate falls short, by size of the vol move

How far the vega-only estimate falls short, by size of the vol move

most recentas of ranking 7×3read in context →
How far the vega-only estimate falls short, by size of the vol move — 7 rows by 3 columns, computed from US exchange, SIP and OPRA data.
vol_risewing_uplift_pctatm_uplift_pct
+1 vol pts7.90.3
+2 vol pts15.90.6
+3 vol pts23.80.9
+5 vol pts39.71.4
+8 vol pts63.52.3
+10 vol pts79.32.9
+15 vol pts1194.3
the exact SQL behind every number
WITH
    (
        SELECT max(date)
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'SPY'
    ) AS snap_date,
    (
        SELECT argMin(expiration_date, abs(toInt32(days_to_expiry) - 35))
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'SPY'
          AND date = snap_date
          AND iv_converged = 1
          AND volume > 0
          AND days_to_expiry BETWEEN 20 AND 60
    ) AS expiry
SELECT
    concat('+', toString(shock_pts), ' vol pts')  AS vol_rise,
    round(0.5 * wing_growth * shock_pts, 1)       AS wing_uplift_pct,
    round(0.5 * atm_growth * shock_pts, 1)        AS atm_uplift_pct
FROM
(
    SELECT
        avgIf(d1 * d2 / sigma, abs(k) > 0.05 AND abs(k) <= 0.12) AS wing_growth,
        avgIf(d1 * d2 / sigma, abs(k) <= 0.02)                   AS atm_growth
    FROM
    (
        SELECT
            k,
            sigma,
            d1,
            d1 - sigma * sqrt(t_years) AS d2
        FROM
        (
            SELECT
                k,
                sigma,
                t_years,
                (log(spot / strike) + (rate + sigma * sigma / 2) * t_years)
                    / (sigma * sqrt(t_years)) AS d1
            FROM
            (
                SELECT
                    toFloat64(underlying_close)                               AS spot,
                    toFloat64(strike_price)                                   AS strike,
                    toFloat64(strike_price) / toFloat64(underlying_close) - 1 AS k,
                    toFloat64(implied_volatility)                             AS sigma,
                    days_to_expiry / 365.0                                    AS t_years,
                    if(toFloat64(risk_free_rate) > 1,
                       toFloat64(risk_free_rate) / 100,
                       toFloat64(risk_free_rate))                             AS rate
                FROM global_markets.options_greeks
                WHERE underlying_symbol = 'SPY'
                  AND date = snap_date
                  AND expiration_date = expiry
                  AND iv_converged = 1
                  AND volume > 0
                  AND vega > 0
                  AND days_to_expiry >= 7
                  AND implied_volatility BETWEEN 0.02 AND 3.0
            )
        )
    )
    HAVING countIf(abs(k) > 0.05 AND abs(k) <= 0.12) > 0
       AND countIf(abs(k) <= 0.02) > 0
) AS chain
CROSS JOIN
(
    SELECT arrayJoin([1, 2, 3, 5, 8, 10, 15]) AS shock_pts
) AS shocks
ORDER BY shock_pts
$