STRASMORE/EXPLORE 2,358 QUERIES

premium_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 table 5×5read in context →
premium_ladder — 5 rows by 5 columns, computed from US exchange, SIP and OPRA data.
dte_bucketavg_premiumbreakeven_move_pctdouble_move_pctdelta_move_pct
1 day (next session)3.020.410.810.79
2-5 days4.770.641.291.25
6-10 days6.70.91.81.73
11-20 days9.021.222.432.31
21-45 days14.271.923.843.56
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 premium_ladder, derived from the stored result.
ColumnTypeRangeNotes
dte_bucket text 5 distinct values
avg_premium number 3.02 to 14.27 US dollars
breakeven_move_pct number 0.41 to 1.92 percent
double_move_pct number 0.81 to 3.84 percent
delta_move_pct number 0.79 to 3.56 percent

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(underlying_close) AS spot,
        toFloat64(delta)            AS dlt
    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
)
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,
    round(avg(premium), 2)                             AS avg_premium,
    round(avg(premium / spot) * 100, 2)                AS breakeven_move_pct,
    round(avg(premium / spot) * 200, 2)                AS double_move_pct,
    round(avg(premium / (dlt * spot)) * 100, 2)        AS delta_move_pct
FROM atm_calls
GROUP BY dte_bucket
ORDER BY min(dte)

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 greeks_ladder series 5×5 expiry_outcomes ranking 5×2 The 2s10s spread, every print of the half table 124×2 The 2s10s spread, every print of the half table 124×2 See all 2,358 queries →