term_structure
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-12, from what-is-an-implied-volatility-index.
| expiry_date | expiry_label | time_to_expiry | atm_iv_pct | contract_count |
|---|---|---|---|---|
| 2026-06-17 | June 17 | 2 days | 25.51 | 12 |
| 2026-06-18 | June 18 | 3 days | 25.89 | 12 |
| 2026-06-22 | June 22 | 7 days | 20.86 | 12 |
| 2026-06-24 | June 24 | 9 days | 22.1 | 12 |
| 2026-06-26 | June 26 | 11 days | 22.68 | 12 |
| 2026-06-29 | June 29 | 14 days | 21.17 | 6 |
| 2026-07-02 | July 2 | 17 days | 22.17 | 11 |
| 2026-07-10 | July 10 | 25 days | 21.77 | 6 |
| 2026-07-17 | July 17 | 32 days | 21.85 | 6 |
| 2026-07-24 | July 24 | 39 days | 22.41 | 6 |
| 2026-07-31 | July 31 | 46 days | 25.45 | 6 |
| 2026-08-21 | August 21 | 67 days | 25.01 | 6 |
| 2026-09-18 | September 18 | 95 days | 25.45 | 6 |
- Rows × columns
- 13 × 5
- 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-06-17 to 2026-09-18 | |
expiry_label |
text | 13 distinct values (August 21, July 10, July 17…) | |
time_to_expiry |
text | 13 distinct values (11 days, 14 days, 17 days…) | |
atm_iv_pct |
number | 20.86 to 25.89 | percent |
contract_count |
number | 6 to 12 | 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.
the exact SQL behind every number
SELECT
toString(expiration_date) AS expiry_date,
concat(monthName(expiration_date), ' ', toString(toDayOfMonth(expiration_date))) AS expiry_label,
concat(toString(days_to_expiry), ' days') AS time_to_expiry,
round(avg(toFloat64(implied_volatility)) * 100, 2) AS atm_iv_pct,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = '2026-06-15'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 1 AND 120
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.025
GROUP BY expiration_date, days_to_expiry
HAVING contract_count >= 2
ORDER BY expiration_date
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysiswhat-is-an-implied-volatility-index
iv30_trace
series 54×5
→
iv_screener
ranking 6×4
→
bracket_legs
table 2×7
→
One SPY $600 LEAPS call's price over two years (expired Jan 16 2026)
series 470×2
→
2s10s spread, monthly average: last 20 years
series 240×2
→
Growth of $100 in the 1x SOXX vs the 3x SOXL, Jan 2 to Jul 13 2026
series 131×3
→
See all 2,214 queries →