near_expiry_risk
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-24, from market-making-in-prediction-markets.
| dte_bucket | atm_iv_pct | delta_shift | contract_count |
|---|---|---|---|
| 0-1d | 20.4 | 0.275 | 2387 |
| 2-3d | 17.4 | 0.229 | 3666 |
| 4-7d | 14.7 | 0.191 | 9744 |
| 8-14d | 14.8 | 0.149 | 13644 |
| 15-30d | 15.7 | 0.103 | 9574 |
| 31-60d | 15.7 | 0.075 | 10446 |
- Rows × columns
- 6 × 4
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
dte_bucket |
text | 6 distinct values (0-1d, 15-30d, 2-3d…) | |
atm_iv_pct |
number | 14.7 to 20.4 | percent |
delta_shift |
number | 0.075 to 0.275 | |
contract_count |
number | 2,387 to 13,644 | count |
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.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
SELECT
multiIf(days_to_expiry <= 1, '0-1d',
days_to_expiry <= 3, '2-3d',
days_to_expiry <= 7, '4-7d',
days_to_expiry <= 14, '8-14d',
days_to_expiry <= 30, '15-30d',
'31-60d') AS dte_bucket,
round(100 * avg(toFloat64(implied_volatility)), 1) AS atm_iv_pct,
round(avg(toFloat64(gamma) * toFloat64(underlying_close)) / 100, 3) AS delta_shift,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2026-04-01'
AND date <= '2026-06-30'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry >= 0
AND days_to_expiry <= 60
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.02
GROUP BY dte_bucket
ORDER BY min(days_to_expiry)
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.