worst_gaps
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-01, from stocks-with-the-biggest-iv-rv-gap.
| label | implied_vol_pct | realized_vol_pct | gap_pct |
|---|---|---|---|
| SOXL Jun 2026 | 136.9 | 243.2 | -106.3 |
| SLV Jan 2026 | 47.8 | 139.7 | -91.9 |
| APP Feb 2026 | 72.2 | 137.6 | -65.4 |
| SNDK Jul 2026 | 104.6 | 159.7 | -55.1 |
| DELL Feb 2026 | 46.3 | 92.2 | -45.9 |
| HOOD Feb 2026 | 59.6 | 102.1 | -42.5 |
| IBIT Feb 2026 | 40.2 | 81.8 | -41.6 |
| CRWV Feb 2026 | 93.4 | 130.8 | -37.4 |
| MU Jun 2026 | 89.1 | 126.4 | -37.3 |
| SOXX Jun 2026 | 45.1 | 82.1 | -37 |
- Rows × columns
- 10 × 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 |
|---|---|---|---|
label |
text | 10 distinct values | |
implied_vol_pct |
number | 40.2 to 136.9 | percent |
realized_vol_pct |
number | 81.8 to 243.2 | percent |
gap_pct |
number | -106.3 to -37 | percent |
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.
WITH
split_tickers AS
(
SELECT DISTINCT ticker
FROM global_markets.stocks_splits
WHERE execution_date >= '2025-10-01'
AND execution_date < '2026-08-01'
),
px AS
(
SELECT
ticker AS symbol,
date AS session,
max(toFloat64(close)) AS px
FROM global_markets.stocks_daily_aggs
WHERE date >= '2025-10-01'
AND date < '2026-08-01'
AND ticker NOT IN (SELECT ticker FROM split_tickers)
AND ticker NOT IN ('SPCX')
GROUP BY symbol, session
),
iv_rows AS
(
SELECT
g.symbol AS symbol,
g.session AS session,
g.iv AS iv
FROM
(
SELECT
underlying_symbol AS symbol,
toDate(date) AS session,
toFloat64(strike_price) AS strike,
implied_volatility AS iv
FROM global_markets.options_greeks
WHERE date >= '2025-10-01'
AND date < '2026-07-01'
AND lower(toString(option_type)) IN ('c', 'call')
AND days_to_expiry BETWEEN 20 AND 45
AND implied_volatility > 0
) AS g
INNER JOIN px AS p ON p.symbol = g.symbol AND p.session = g.session
WHERE p.px > 10
AND abs(g.strike / p.px - 1) < 0.05
),
implied AS
(
SELECT
symbol,
iv_month,
addMonths(iv_month, 1) AS forward_month,
implied_vol_pct
FROM
(
SELECT
symbol,
toStartOfMonth(session) AS iv_month,
round(100 * avg(iv), 1) AS implied_vol_pct
FROM iv_rows
GROUP BY symbol, iv_month
HAVING countDistinct(session) >= 18
AND count() >= 500
)
),
daily_returns AS
(
SELECT
symbol,
arrayJoin(arrayMap((a, b) -> (tupleElement(a, 1), log(tupleElement(a, 2) / tupleElement(b, 2))),
arraySlice(series, 2),
arraySlice(series, 1, length(series) - 1))) AS ret
FROM
(
SELECT
symbol,
arraySort(groupArray((session, px))) AS series
FROM px
WHERE symbol IN (SELECT symbol FROM implied)
GROUP BY symbol
)
),
realized AS
(
SELECT
symbol,
toStartOfMonth(tupleElement(ret, 1)) AS rv_month,
round(100 * sqrt(252) * stddevSamp(tupleElement(ret, 2)), 1) AS realized_vol_pct
FROM daily_returns
GROUP BY symbol, rv_month
HAVING count() >= 15
)
SELECT
concat(implied.symbol, ' ', formatDateTime(implied.forward_month, '%b %Y')) AS label,
implied.implied_vol_pct AS implied_vol_pct,
realized.realized_vol_pct AS realized_vol_pct,
round(implied.implied_vol_pct - realized.realized_vol_pct, 1) AS gap_pct
FROM implied
INNER JOIN realized ON realized.symbol = implied.symbol
AND realized.rv_month = implied.forward_month
WHERE realized.realized_vol_pct > implied.implied_vol_pct
ORDER BY gap_pct ASC
LIMIT 10
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.