STRASMORE/EXPLORE 2,358 QUERIES

greeks_ladder

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-18, from are-0dte-options-high-risk.

as of series 5×5read in context →
greeks_ladder — 5 rows by 5 columns, computed from US exchange, SIP and OPRA data.
dte_bucketgamma_per_premium_dollartheta_pct_per_daygamma_ratio_vs_month_outtheta_ratio_vs_month_out
1 day (next session)0.029551.831.828.7
2-5 days0.009317109.4
6-10 days0.00476.95.13.9
11-20 days0.00233.92.52.2
21-45 days0.00091.811
Rows × columns
5 × 5
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for greeks_ladder, derived from the stored result.
ColumnTypeRangeNotes
dte_bucket text 5 distinct values
gamma_per_premium_dollar number 0.0009 to 0.0295 US dollars
theta_pct_per_day number 1.8 to 51.8 percent
gamma_ratio_vs_month_out number 1 to 31.8 ratio or rate
theta_ratio_vs_month_out number 1 to 28.7 ratio or rate

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

the exact SQL behind every number
WITH atm_calls AS
(
    SELECT
        days_to_expiry          AS dte,
        toFloat64(option_close) AS premium,
        toFloat64(gamma)        AS gma,
        toFloat64(theta)        AS tht
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND lower(toString(option_type)) IN ('call', 'c')
      AND date >= toDate('2026-06-01')
      AND date <  toDate('2026-07-01')
      AND days_to_expiry > 0
      AND days_to_expiry <= 45
      AND iv_converged = 1
      AND volume > 0
      AND option_close > 0
      AND toFloat64(delta) BETWEEN 0.2 AND 0.8
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.0025
),
ladder AS
(
    SELECT
        multiIf(dte <= 1,  '1 day (next session)',
                dte <= 5,  '2-5 days',
                dte <= 10, '6-10 days',
                dte <= 20, '11-20 days',
                           '21-45 days')       AS dte_bucket,
        min(dte)                               AS dte_lo,
        avg(gma / premium)                     AS gamma_raw,
        avg(abs(tht) / premium) * 100          AS theta_raw
    FROM atm_calls
    GROUP BY dte_bucket
)
SELECT
    dte_bucket,
    round(gamma_raw, 4)                                                                   AS gamma_per_premium_dollar,
    round(theta_raw, 1)                                                                   AS theta_pct_per_day,
    round(gamma_raw / (SELECT gamma_raw FROM ladder WHERE dte_bucket = '21-45 days'), 1)  AS gamma_ratio_vs_month_out,
    round(theta_raw / (SELECT theta_raw FROM ladder WHERE dte_bucket = '21-45 days'), 1)  AS theta_ratio_vs_month_out
FROM ladder
ORDER BY dte_lo

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisare-0dte-options-high-risk
expiry_day series 21×6 strike_gamma ranking 9×3 premium_ladder table 5×5 expiry_outcomes ranking 5×2 One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 monthly series 241×4 See all 2,358 queries →