iv_skew
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-18, from where-to-find-options-trade-data.
| strike | put_iv_pct | call_iv_pct | contracts_volume |
|---|---|---|---|
| 573 | 18 | 15.6 | 430 |
| 574 | 18.2 | 14.9 | 487 |
| 575 | 17.7 | 17 | 17465 |
| 576 | 17.6 | 15.6 | 940 |
| 577 | 17.2 | 15.8 | 378 |
| 578 | 17.3 | 16.8 | 868 |
| 579 | 17.2 | 15.6 | 1696 |
| 580 | 16.9 | 16.1 | 6640 |
| 581 | 17.1 | 15.2 | 574 |
| 582 | 16.6 | 14.7 | 450 |
| 583 | 16.8 | 15.2 | 909 |
| 584 | 16.5 | 15.1 | 475 |
| 585 | 16.3 | 15.4 | 7892 |
| 586 | 16.2 | 14.5 | 2163 |
| 587 | 16 | 14.4 | 2827 |
| 588 | 15.8 | 15 | 2069 |
| 589 | 15.8 | 14.8 | 1670 |
| 590 | 15.7 | 14.6 | 7707 |
| 591 | 15.6 | 14.7 | 1059 |
| 592 | 16.2 | 14.4 | 2371 |
| 593 | 15.4 | 14.2 | 480 |
| 594 | 15.8 | 13.6 | 2473 |
| 595 | 15.3 | 14 | 2645 |
| 596 | 16.1 | 14 | 616 |
| 597 | 16.2 | 13.9 | 325 |
| 598 | 15.5 | 13.8 | 539 |
| 599 | 15.7 | 13.3 | 244 |
| 600 | 15.1 | 13.6 | 10169 |
| 605 | 15.5 | 13.2 | 8151 |
- Rows × columns
- 29 × 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 |
|---|---|---|---|
strike |
text | 29 distinct values (573, 574, 575…) | |
put_iv_pct |
number | 15.1 to 18.2 | percent |
call_iv_pct |
number | 13.2 to 17 | percent |
contracts_volume |
number | 244 to 17,465 | 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(toFloat64(strike_price)) AS strike,
round(maxIf(implied_volatility, lower(toString(option_type)) LIKE 'p%') * 100, 1) AS put_iv_pct,
round(maxIf(implied_volatility, lower(toString(option_type)) LIKE 'c%') * 100, 1) AS call_iv_pct,
sum(volume) AS contracts_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = '2025-05-15'
AND expiration_date = '2025-06-20'
AND iv_converged = 1
AND volume > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.03
GROUP BY strike_price
HAVING countIf(lower(toString(option_type)) LIKE 'p%') > 0
AND countIf(lower(toString(option_type)) LIKE 'c%') > 0
ORDER BY strike_price
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 analysiswhere-to-find-options-trade-data
venue_share
table 18×5
→
largest_prints
table 10×7
→
session_clock
series 14×5
→
The 2s10s spread, every print of the half
table 124×2
→
The 2s10s spread, every print of the half
table 124×2
→
Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print
table 100×7
→
See all 2,358 queries →