STRASMORE/EXPLORE 2,749 QUERIES

expiration_history

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-28, from why-only-some-stocks-have-daily-options.

as of series 60×3read in context →
expiration_history — 60 rows by 3 columns, computed from US exchange, SIP and OPRA data.
monthspy_expiry_daysaapl_expiry_days
2021-09134
2021-10135
2021-11134
2021-12145
2022-01134
2022-02124
2022-03144
2022-04135
2022-05134
2022-06144
2022-07135
2022-08144
2022-09135
2022-10134
2022-11174
2022-12215
2023-01204
2023-02194
2023-03235
2023-04194
2023-05224
2023-06215
2023-07204
2023-08234
2023-09205
2023-10224
2023-11214
2023-12205
2024-01214
2024-02204
2024-03205
2024-04224
2024-05225
2024-06194
2024-07224
2024-08225
2024-09204
2024-10234
2024-11205
2024-12214
2025-01215
2025-02194
2025-03214
2025-04214
2025-05215
2025-06204
2025-07224
2025-08215
2025-09214
2025-10235
2025-11194
2025-12224
2026-01205
2026-021911
2026-032213
2026-042113
2026-052013
2026-062113
2026-072214
2026-082113
Rows × columns
60 × 3
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 expiration_history, derived from the stored result.
ColumnTypeRangeNotes
month text 60 distinct values (2021-09, 2021-10, 2021-11…)
spy_expiry_days number 12 to 23
aapl_expiry_days number 4 to 14

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
    formatDateTime(toStartOfMonth(expiration_date), '%Y-%m')      AS month,
    countDistinctIf(expiration_date, underlying_symbol = 'SPY')   AS spy_expiry_days,
    countDistinctIf(expiration_date, underlying_symbol = 'AAPL')  AS aapl_expiry_days
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL')
  AND volume > 0
  AND date >= '2021-09-01'
  AND expiration_date >= '2021-09-01'
  AND expiration_date <  toStartOfMonth(today())
  AND days_to_expiry BETWEEN 0 AND 45
GROUP BY month
ORDER BY month
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysiswhy-only-some-stocks-have-daily-options
expiry_volume_share series 13×5 → quote_load ranking 7×3 → expiry_calendar ranking 7×4 → The 2s10s spread by month, full history series 604×5 → One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 → monthly_history series 241×4 → See all 2,749 queries →