STRASMORE/EXPLORE 2,170 QUERIES

Implied volatility band against the move the underlying made the next session

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-08-02, from Is 30% IV High? It Depends on the Ticker.

as of table 5×5read in context →
Implied volatility band against the move the underlying made the next session — 5 rows by 5 columns, computed from US exchange, SIP and OPRA data.
iv_bandsample_sizeimplied_daily_move_pctmedian_next_move_pctp90_next_move_pct
under 20%9351.040.531.5
20 to 30%8771.560.782.38
30 to 45%4942.41.293.7
45 to 70%10573.582.286.06
70% and up6295.273.39.15
Rows × columns
5 × 5
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 Implied volatility band against the move the underlying made the next session, derived from the stored result.
ColumnTypeRangeNotes
iv_band text 5 distinct values (20 to 30%, 30 to 45%, 45 to 70%…)
sample_size number 494 to 1,057
implied_daily_move_pct number 1.04 to 5.27 percent
median_next_move_pct number 0.53 to 3.3 percent
p90_next_move_pct number 1.5 to 9.15 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.

the exact SQL behind every number
WITH atm AS (
    SELECT underlying_symbol AS symbol,
           date,
           avg(implied_volatility) * 100 AS iv_pct
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'COIN', 'MSTR')
      AND date >= toDate('2024-08-01')
      AND date <= toDate('2026-07-30')
      AND iv_converged = 1
      AND volume > 0
      AND underlying_close > 0
      AND days_to_expiry BETWEEN 20 AND 45
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
    GROUP BY symbol, date
),
px AS (
    SELECT underlying_symbol AS symbol,
           date,
           any(toFloat64(underlying_close)) AS close
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'COIN', 'MSTR')
      AND date >= toDate('2024-08-01')
      AND date <= toDate('2026-07-31')
      AND iv_converged = 1
      AND underlying_close > 0
    GROUP BY symbol, date
),
nxt AS (
    SELECT symbol,
           date,
           close,
           leadInFrame(close) OVER (PARTITION BY symbol ORDER BY date ASC
                                    ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS next_close
    FROM px
)
SELECT multiIf(a.iv_pct < 20, 'under 20%',
               a.iv_pct < 30, '20 to 30%',
               a.iv_pct < 45, '30 to 45%',
               a.iv_pct < 70, '45 to 70%',
               '70% and up') AS iv_band,
       count() AS sample_size,
       round(avg(a.iv_pct) / sqrt(252), 2) AS implied_daily_move_pct,
       round(quantileDeterministic(0.5)(100 * abs(n.next_close / n.close - 1),
                                        cityHash64(concat(a.symbol, toString(a.date)))), 2) AS median_next_move_pct,
       round(quantileDeterministic(0.9)(100 * abs(n.next_close / n.close - 1),
                                        cityHash64(concat(a.symbol, toString(a.date)))), 2) AS p90_next_move_pct
FROM atm AS a
INNER JOIN nxt AS n ON a.symbol = n.symbol AND a.date = n.date
WHERE n.next_close > 0
GROUP BY iv_band
HAVING count() >= 50
ORDER BY min(a.iv_pct)

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 analysisIs 30% IV High? It Depends on the Ticker
IV rank against IV percentile: the latest reading inside each ticker's 52-week range table 8×6 Where a 30% reading sits in each ticker's own two-year distribution table 8×6 Monthly median 30-day implied volatility: index ETF, staple, and chipmaker series 24×5 Where IV percentile sits furthest above IV rank, latest session table 12×6 The same reading against each name's own 52-week implied volatility range (July 28, 2026) table 11×5 How the screened universe distributes across IV rank, latest session table 9×7 See all 2,170 queries →