expiry_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-26, from vix-settlement-and-the-soq.
| expiration_date | days_to_expiry | listed_strikes | traded_strikes |
|---|---|---|---|
| 2026-09-04 | 21 | 184 | 184 |
| 2026-09-11 | 28 | 167 | 167 |
| 2026-09-18 | 35 | 247 | 247 |
- Rows × columns
- 3 × 4
- Period covered
- to
- 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 |
|---|---|---|---|
expiration_date |
date | 2026-09-04 to 2026-09-18 | |
days_to_expiry |
number | 21 to 35 | |
listed_strikes |
number | 167 to 247 | |
traded_strikes |
number | 167 to 247 |
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
toString(expiration_date) AS expiration_date,
max(dte) AS days_to_expiry,
countDistinct(strike_price) AS listed_strikes,
countDistinctIf(strike_price, volume > 0) AS traded_strikes
FROM
(
SELECT
expiration_date,
days_to_expiry AS dte,
strike_price,
volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = '2026-08-14'
AND days_to_expiry BETWEEN 21 AND 40
)
GROUP BY expiration_date
ORDER BY expiration_date
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.