STRASMORE/EXPLORE 2,707 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,707 answered market questions

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

How to Pick an Option Strike Price by Delta
Median premium collected per delta band, as a percent of the share priceranking · 2026-09-27 · 9×4Preview: 9 ranked values, smallest first. Implied versus realized in the money share by the contract's own implied volatilitytable · 2026-09-27 · 7×5 The 15 to 25 delta band at three horizons: implied versus realized in the money sharetable · 2026-09-27 · 3×5 Delta band versus the share of contracts that finished in the money, 30 days outtable · 2026-09-27 · 9×5
Median premium collected per delta band, as a percent of the share price

Median premium collected per delta band, as a percent of the share price

most recentas of ranking 9×4read in context →
Median premium collected per delta band, as a percent of the share price — 9 rows by 4 columns, computed from US exchange, SIP and OPRA data.
delta_bandcall_premium_pctput_premium_pctcontract_count
5 to 100.210.267543
10 to 150.380.454875
15 to 200.570.643829
20 to 250.780.893248
25 to 300.981.122865
30 to 351.251.42688
35 to 401.491.72531
40 to 451.842.052447
45 to 502.132.432394
the exact SQL behind every number
WITH
snaps AS
(
    SELECT
        ticker                                                AS contract,
        any(if(upper(substring(toString(option_type), 1, 1)) = 'C', 'call', 'put')) AS opt,
        argMin(abs(delta), abs(toInt32(days_to_expiry) - 30)) AS abs_delta,
        argMin(100 * toFloat64(option_close) / toFloat64(underlying_close),
               abs(toInt32(days_to_expiry) - 30))             AS premium_pct
    FROM global_markets.options_greeks
    WHERE date >= '2024-01-01'
      AND date <  '2026-09-01'
      AND days_to_expiry BETWEEN 27 AND 33
      AND delta != 0
      AND volume > 0
      AND option_close > 0
      AND underlying_close > 0
      AND toDate(expiration_date) < '2026-09-01'
      AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'SPY', 'KO', 'JPM', 'XOM')
    GROUP BY contract
    HAVING abs_delta >= 0.05 AND abs_delta < 0.50
),
banded AS
(
    SELECT
        toUInt16(floor(abs_delta * 20)) AS band,
        contract,
        opt,
        premium_pct
    FROM snaps
)
SELECT
    concat(toString(band * 5), ' to ', toString(band * 5 + 5))                              AS delta_band,
    round(quantileDeterministicIf(0.5)(premium_pct, cityHash64(contract), opt = 'call'), 2) AS call_premium_pct,
    round(quantileDeterministicIf(0.5)(premium_pct, cityHash64(contract), opt = 'put'), 2)  AS put_premium_pct,
    count()                                                                                 AS contract_count
FROM banded
GROUP BY band
HAVING countIf(opt = 'call') > 0 AND countIf(opt = 'put') > 0
ORDER BY band
$