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-10-09, from anatomy-of-an-option-contract.
| expiry_date | expiry_label | days_to_expiry | strike_count |
|---|---|---|---|
| 2026-10-09 | Oct 9, 2026 | 1 | 71 |
| 2026-10-12 | Oct 12, 2026 | 4 | 50 |
| 2026-10-14 | Oct 14, 2026 | 6 | 33 |
| 2026-10-16 | Oct 16, 2026 | 8 | 59 |
| 2026-10-19 | Oct 19, 2026 | 11 | 38 |
| 2026-10-21 | Oct 21, 2026 | 13 | 35 |
| 2026-10-23 | Oct 23, 2026 | 15 | 60 |
| 2026-10-30 | Oct 30, 2026 | 22 | 36 |
| 2026-11-06 | Nov 6, 2026 | 29 | 42 |
| 2026-11-13 | Nov 13, 2026 | 36 | 34 |
| 2026-11-20 | Nov 20, 2026 | 43 | 59 |
| 2026-11-27 | Nov 27, 2026 | 50 | 24 |
| 2026-12-18 | Dec 18, 2026 | 71 | 62 |
| 2027-01-15 | Jan 15, 2027 | 99 | 68 |
- Rows × columns
- 14 × 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 |
|---|---|---|---|
expiry_date |
date | 2026-10-09 to 2027-01-15 | |
expiry_label |
text | 14 distinct values (Dec 18, 2026, Jan 15, 2027, Nov 13, 2026…) | |
days_to_expiry |
number | 1 to 99 | |
strike_count |
number | 24 to 71 | US dollars |
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 expiry_date,
formatDateTime(toDate(expiration_date), '%b %e, %Y') AS expiry_label,
min(days_to_expiry) AS days_to_expiry,
countDistinct(strike_price) AS strike_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date =
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
)
GROUP BY expiration_date
ORDER BY expiration_date
LIMIT 14
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.