Highest IV Rank Stocks Right Now
See the stocks wey get highest IV rank now, measured against each name own 52-week implied volatility range, with IV percentile and method beside am.
IV rank score dey show where a stock implied volatility dey inside im own 52-week range. E dey start from 0 for the range low reach 100 for the range high. Reading wey dey near the top mean say options market dey price more future movement into that name pass any time for the past one year of trading sessions. Reading wey dey near the bottom mean say na the least movement market dey price.
The board below rank US stocks and ETFs wey get the highest IV rank for the latest options session wey dem measure, dated 2026-09-02. E also show IV percentile beside am because both numbers dey answer the same question, but dem use different arithmetic.
Stocks wey get highest IV rank now
| ticker | iv now pct | iv rank | iv percentile | iv 52w low pct | iv 52w high pct | session date |
|---|---|---|---|---|---|---|
| AEO | 76.3 | 83.2 | 89.9 | 45.6 | 82.5 | 2026-09-02 |
| PCG | 57.9 | 80 | 96.1 | 25.4 | 66 | 2026-09-02 |
| HPE | 79 | 78.4 | 95.6 | 25 | 93.9 | 2026-09-02 |
| ACN | 50.3 | 74.5 | 79.4 | 22 | 60 | 2026-09-02 |
| ADBE | 51.3 | 71.7 | 80.2 | 24.9 | 61.8 | 2026-09-02 |
| COST | 25.1 | 68.6 | 69.4 | 16.6 | 29 | 2026-09-02 |
| PBR | 40.2 | 68 | 84.8 | 20.6 | 49.5 | 2026-09-02 |
| LULU | 57.2 | 66.3 | 74.2 | 28.5 | 71.8 | 2026-09-02 |
| AMGN | 32.3 | 65.4 | 86.5 | 17.9 | 39.9 | 2026-09-02 |
| BP | 31 | 63.7 | 69.8 | 18.9 | 37.9 | 2026-09-02 |
| XOM | 28.8 | 62.8 | 62.7 | 17.2 | 35.6 | 2026-09-02 |
| PATH | 88.2 | 60.8 | 84.5 | 33.7 | 123.3 | 2026-09-02 |
| EWZ | 31.9 | 59.9 | 87.3 | 18.1 | 41.2 | 2026-09-02 |
| NKE | 43.2 | 59.7 | 65.1 | 20.1 | 58.7 | 2026-09-02 |
| VALE | 33.9 | 58.3 | 53.3 | 17.7 | 45.5 | 2026-09-02 |
The exact SQL behind every number
WITH per_session AS (
SELECT underlying_symbol AS u,
date AS d,
quantileExact(0.5)(implied_volatility) AS iv,
sum(volume) AS vol
FROM global_markets.options_greeks
WHERE date >= (SELECT max(date) FROM global_markets.options_greeks) - 380
AND iv_converged AND implied_volatility BETWEEN 0.02 AND 5
AND abs(strike_price / underlying_close - 1) <= 0.05
AND expiration_date BETWEEN date + 20 AND date + 60
AND underlying_symbol NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT','AMDL','NUAI','VXX','VIXY')
GROUP BY u, d
HAVING count() >= 10
),
ranked AS (
SELECT u, d, iv, vol,
row_number() OVER w AS rn,
first_value(iv) OVER w AS iv_latest,
first_value(d) OVER w AS d_latest
FROM per_session
WINDOW w AS (PARTITION BY u ORDER BY d DESC)
),
agg AS (
SELECT u,
any(iv_latest) AS iv_cur,
any(d_latest) AS last_d,
count() AS sessions,
min(iv) AS iv_lo,
max(iv) AS iv_hi,
countIf(iv < iv_latest) AS below_now,
sumIf(vol, rn <= 20) AS vol_20d
FROM ranked
WHERE rn <= 252
GROUP BY u
)
SELECT u AS ticker,
round(100 * iv_cur, 1) AS iv_now_pct,
round(100 * (iv_cur - iv_lo) / (iv_hi - iv_lo), 1) AS iv_rank,
round(100 * below_now / sessions, 1) AS iv_percentile,
round(100 * iv_lo, 1) AS iv_52w_low_pct,
round(100 * iv_hi, 1) AS iv_52w_high_pct,
toString(last_d) AS session_date
FROM agg
WHERE sessions >= 200
AND vol_20d >= 20000
AND iv_hi > iv_lo
AND last_d = (SELECT max(date) FROM global_markets.options_greeks)
ORDER BY iv_rank DESC, vol_20d DESC, ticker
LIMIT 15Make we take the top row. AEO close with at-the-money implied volatility of 76.3%, against 52-week range wey run from 45.6% reach 82.5%. This put im IV rank for 83.2, while im IV percentile na 89.9.
The scale get one exact meaning for each end: rank of 100 mean say the latest session’s implied volatility na the highest reading anywhere inside the measured window, while rank of 0 mean say na the lowest. The number no mean say the stock volatile in absolute terms. E only describe the stock compared with itself.
This difference matter. Across the top rank decile for the whole screened universe, current implied volatility dey run from 57.9% reach 76.3%, with median of 76.3%. Quiet stock wey dey the top of its own quiet range go score the same way as violent stock wey dey the top of its violent range. If you want the absolute level instead of the relative one, the highest implied volatility stocks board rank the same tape based on raw IV.
IV rank versus IV percentile
Both numbers dey place today’s implied volatility against the same 52-week history, but dem dey count am different ways.
- IV rank na (current IV minus the 52-week low) divided by (the 52-week high minus the low), expressed as percentage. E only look current value and the two extremes for the period.
- IV percentile na the share of the last 252 sessions wey their implied volatility close below today’s own. E look every session inside the period.
One violent session inside the year fit set a ceiling wey range-based rank no go forget, while count-based percentile treat am as just one tick among 252. The panel below arrange one side of that difference: IV percentile minus IV rank, from the biggest one. Names wey get the opposite pattern, where rank pass percentile, dey another screen and no dey here.
| ticker | iv now pct | iv rank | iv percentile | percentile minus rank | iv 52w high pct |
|---|---|---|---|---|---|
| MRNA | 79.2 | 29.1 | 68.3 | 39.2 | 133 |
| AAPL | 25.2 | 16.1 | 48.8 | 32.7 | 55.9 |
| AVGO | 49.1 | 19.5 | 52 | 32.5 | 132.1 |
| SHEL | 24.7 | 31.9 | 62.7 | 30.8 | 47.9 |
| USO | 44.5 | 18.4 | 48.8 | 30.4 | 123.2 |
| XBI | 31.9 | 44.9 | 73.8 | 28.9 | 41.5 |
| EWZ | 31.9 | 59.9 | 87.3 | 27.4 | 41.2 |
| GME | 52.9 | 40.1 | 66.3 | 26.2 | 87.2 |
| PATH | 88.2 | 60.8 | 84.5 | 23.7 | 123.3 |
| QCOM | 40.9 | 29.1 | 52.8 | 23.7 | 92.8 |
| GLD | 23.8 | 34 | 57.5 | 23.5 | 40.6 |
| XOP | 30.6 | 25.1 | 48.4 | 23.3 | 63.5 |
The exact SQL behind every number
WITH per_session AS (
SELECT underlying_symbol AS u,
date AS d,
quantileExact(0.5)(implied_volatility) AS iv,
sum(volume) AS vol
FROM global_markets.options_greeks
WHERE date >= (SELECT max(date) FROM global_markets.options_greeks) - 380
AND iv_converged AND implied_volatility BETWEEN 0.02 AND 5
AND abs(strike_price / underlying_close - 1) <= 0.05
AND expiration_date BETWEEN date + 20 AND date + 60
AND underlying_symbol NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT','AMDL','NUAI','VXX','VIXY')
GROUP BY u, d
HAVING count() >= 10
),
ranked AS (
SELECT u, d, iv, vol,
row_number() OVER w AS rn,
first_value(iv) OVER w AS iv_latest,
first_value(d) OVER w AS d_latest
FROM per_session
WINDOW w AS (PARTITION BY u ORDER BY d DESC)
),
agg AS (
SELECT u,
any(iv_latest) AS iv_cur,
any(d_latest) AS last_d,
count() AS sessions,
min(iv) AS iv_lo,
max(iv) AS iv_hi,
countIf(iv < iv_latest) AS below_now,
sumIf(vol, rn <= 20) AS vol_20d
FROM ranked
WHERE rn <= 252
GROUP BY u
),
board AS (
SELECT u,
round(100 * iv_cur, 1) AS iv_now_pct,
round(100 * (iv_cur - iv_lo) / (iv_hi - iv_lo), 1) AS iv_rank,
round(100 * below_now / sessions, 1) AS iv_percentile,
round(100 * iv_hi, 1) AS iv_52w_high_pct
FROM agg
WHERE sessions >= 200
AND vol_20d >= 20000
AND iv_hi > iv_lo
AND last_d = (SELECT max(date) FROM global_markets.options_greeks)
)
SELECT u AS ticker,
iv_now_pct,
iv_rank,
iv_percentile,
round(iv_percentile - iv_rank, 1) AS percentile_minus_rank,
iv_52w_high_pct
FROM board
ORDER BY percentile_minus_rank DESC, iv_now_pct DESC, ticker
LIMIT 12The biggest gap for this direction belong to MRNA: IV percentile na 68.3 while IV rank na 29.1, giving spread of 39.2 points for the same session and the same data. Current implied volatility there na 79.2%, and the 52-week high na 133%. Percentile dey count sessions, and most sessions for that name inside the period quieter pass the latest one. Rank dey measure distance from the extremes, and that 52-week high still dey above the latest reading. Same data, two answers.
None of the two numbers na the correct one. Rank answer how close the latest reading dey to the extremes. Percentile answer how unusual e be compared with the normal session.
Wetin high IV rank really dey look like
| week | iv pct | iv 52w high pct | iv 52w low pct |
|---|---|---|---|
| 2025-08-18 | 72.5 | 82.5 | 45.6 |
| 2025-08-25 | 72.7 | 82.5 | 45.6 |
| 2025-09-08 | 55.3 | 82.5 | 45.6 |
| 2025-09-15 | 56 | 82.5 | 45.6 |
| 2025-09-22 | 55.2 | 82.5 | 45.6 |
| 2025-09-29 | 51.3 | 82.5 | 45.6 |
| 2025-10-06 | 54.3 | 82.5 | 45.6 |
| 2025-10-13 | 62.1 | 82.5 | 45.6 |
| 2025-10-20 | 58.7 | 82.5 | 45.6 |
| 2025-10-27 | 61 | 82.5 | 45.6 |
| 2025-11-10 | 78.3 | 82.5 | 45.6 |
| 2025-11-17 | 76.4 | 82.5 | 45.6 |
| 2025-11-24 | 77.7 | 82.5 | 45.6 |
| 2025-12-01 | 51.5 | 82.5 | 45.6 |
| 2025-12-08 | 48.8 | 82.5 | 45.6 |
| 2025-12-15 | 58.5 | 82.5 | 45.6 |
| 2025-12-22 | 52.6 | 82.5 | 45.6 |
| 2025-12-29 | 53.1 | 82.5 | 45.6 |
| 2026-01-05 | 55.7 | 82.5 | 45.6 |
| 2026-01-12 | 53.6 | 82.5 | 45.6 |
The exact SQL behind every number
WITH per_session AS (
SELECT underlying_symbol AS u,
date AS d,
quantileExact(0.5)(implied_volatility) AS iv,
sum(volume) AS vol
FROM global_markets.options_greeks
WHERE date >= (SELECT max(date) FROM global_markets.options_greeks) - 380
AND iv_converged AND implied_volatility BETWEEN 0.02 AND 5
AND abs(strike_price / underlying_close - 1) <= 0.05
AND expiration_date BETWEEN date + 20 AND date + 60
AND underlying_symbol NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT','AMDL','NUAI','VXX','VIXY')
GROUP BY u, d
HAVING count() >= 10
),
ranked AS (
SELECT u, d, iv, vol,
row_number() OVER w AS rn,
first_value(iv) OVER w AS iv_latest,
first_value(d) OVER w AS d_latest
FROM per_session
WINDOW w AS (PARTITION BY u ORDER BY d DESC)
),
agg AS (
SELECT u,
any(iv_latest) AS iv_cur,
any(d_latest) AS last_d,
count() AS sessions,
min(iv) AS iv_lo,
max(iv) AS iv_hi,
sumIf(vol, rn <= 20) AS vol_20d
FROM ranked
WHERE rn <= 252
GROUP BY u
),
leader AS (
SELECT u, iv_lo, iv_hi
FROM agg
WHERE sessions >= 200
AND vol_20d >= 20000
AND iv_hi > iv_lo
AND last_d = (SELECT max(date) FROM global_markets.options_greeks)
ORDER BY round(100 * (iv_cur - iv_lo) / (iv_hi - iv_lo), 1) DESC, vol_20d DESC, u
LIMIT 1
)
SELECT toString(toMonday(r.d)) AS week,
round(100 * quantileExact(0.5)(r.iv), 1) AS iv_pct,
round(100 * any(l.iv_hi), 1) AS iv_52w_high_pct,
round(100 * any(l.iv_lo), 1) AS iv_52w_low_pct
FROM ranked AS r
INNER JOIN leader AS l ON r.u = l.u
WHERE r.rn <= 252
GROUP BY week
HAVING uniqExact(r.d) >= 3
OR max(r.d) = (SELECT max(date) FROM global_markets.options_greeks)
ORDER BY weekNa the weekly movement of AEO be this, the board top name, with the 52-week high and low drawn as flat reference lines. Every point wey dem plot na the median of that week daily readings, so the line dey inside the daily high-low band by design; e no dey touch any of the two reference lines. The measurement starts the window at 72.5% and ends the week with the latest session at 76.2%, against ceiling of 82.5% and floor of 45.6%. The one session wey the rank score na the daily reading of 76.3% for the board above. IV rank na this picture, nothing more: dem place the latest reading against the edges of its own band, wherever that band dey.
The shape matter as much as the score. One name fit climb for months, while another gap reach the same level within one week, but both go print the same rank. To see wetin high reading normally dey do after scheduled event, see IV crush measured on real earnings.
Wia the whole market dey sit for IV rank
| iv rank bucket | names | names cumulative | median iv pct | median gap to top pct | lowest iv pct | highest iv pct |
|---|---|---|---|---|---|---|
| 80-90 | 2 | 2 | 76.3 | 0 | 57.9 | 76.3 |
| 70-80 | 3 | 5 | 51.3 | -25 | 50.3 | 79 |
| 60-70 | 7 | 12 | 32.3 | -44 | 25.1 | 88.2 |
| 50-60 | 13 | 25 | 40.3 | -36 | 18.7 | 76.9 |
| 40-50 | 33 | 58 | 38 | -38.3 | 16.4 | 79.7 |
| 30-40 | 46 | 104 | 37.1 | -39.2 | 15.2 | 89.9 |
| 20-30 | 70 | 174 | 34 | -42.3 | 5.9 | 83.3 |
| 10-20 | 58 | 232 | 35.3 | -41 | 10.2 | 92.7 |
| 0-10 | 24 | 256 | 48 | -28.3 | 4.7 | 77.2 |
The exact SQL behind every number
WITH per_session AS (
SELECT underlying_symbol AS u,
date AS d,
quantileExact(0.5)(implied_volatility) AS iv,
sum(volume) AS vol
FROM global_markets.options_greeks
WHERE date >= (SELECT max(date) FROM global_markets.options_greeks) - 380
AND iv_converged AND implied_volatility BETWEEN 0.02 AND 5
AND abs(strike_price / underlying_close - 1) <= 0.05
AND expiration_date BETWEEN date + 20 AND date + 60
AND underlying_symbol NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT','AMDL','NUAI','VXX','VIXY')
GROUP BY u, d
HAVING count() >= 10
),
ranked AS (
SELECT u, d, iv, vol,
row_number() OVER w AS rn,
first_value(iv) OVER w AS iv_latest,
first_value(d) OVER w AS d_latest
FROM per_session
WINDOW w AS (PARTITION BY u ORDER BY d DESC)
),
agg AS (
SELECT u,
any(iv_latest) AS iv_cur,
any(d_latest) AS last_d,
count() AS sessions,
min(iv) AS iv_lo,
max(iv) AS iv_hi,
sumIf(vol, rn <= 20) AS vol_20d
FROM ranked
WHERE rn <= 252
GROUP BY u
),
screened AS (
SELECT least(intDiv(toUInt16(floor(100 * (iv_cur - iv_lo) / (iv_hi - iv_lo))), 10), 9) AS b,
100 * iv_cur AS iv_now_pct
FROM agg
WHERE sessions >= 200
AND vol_20d >= 20000
AND iv_hi > iv_lo
AND last_d = (SELECT max(date) FROM global_markets.options_greeks)
),
buckets AS (
SELECT b,
count() AS names,
round(quantileExact(0.5)(iv_now_pct), 1) AS median_iv_pct,
round(min(iv_now_pct), 1) AS lowest_iv_pct,
round(max(iv_now_pct), 1) AS highest_iv_pct
FROM screened
GROUP BY b
)
SELECT concat(toString(b * 10), '-', toString(b * 10 + 10)) AS iv_rank_bucket,
names,
sum(names) OVER (ORDER BY b DESC) AS names_cumulative,
median_iv_pct,
round(median_iv_pct - first_value(median_iv_pct) OVER (ORDER BY b DESC), 1) AS median_gap_to_top_pct,
lowest_iv_pct,
highest_iv_pct
FROM buckets
ORDER BY b DESC256 names pass the liquidity and history requirements for this session. When dem group am into rank deciles, 2 of dem dey inside the 80-90 band, while 24 dey inside the 0-10 band for the other end. Median current implied volatility dey reduce as rank dey fall, from 76.3% for the top band reach 48% for the 0-10 band at the bottom. The gap column dey measure every band against the top band median. Look the slope across the whole table, no be just one step: bands wey get only small number of names fit get noisy medians, and two bands next to each other fit change order.
This distribution na the context wey one reading need. High-sounding rank no mean much by itself until you know how many other names dey carry am at the same time.
IV rank for the names wey most people dey follow
| ticker | iv now pct | iv rank | iv percentile | iv 52w low pct | iv 52w high pct | session date |
|---|---|---|---|---|---|---|
| QQQ | 18.3 | 31.7 | 16.7 | 13.3 | 29 | 2026-09-02 |
| COIN | 63 | 31.3 | 29.8 | 49.1 | 93.5 | 2026-09-02 |
| AMD | 47.4 | 27.3 | 11.5 | 28.9 | 96.9 | 2026-09-02 |
| META | 34 | 24.8 | 40.1 | 22.6 | 68.6 | 2026-09-02 |
| MSTR | 68.5 | 23.6 | 31.7 | 50.2 | 127.6 | 2026-09-02 |
| SPY | 13.2 | 16.9 | 12.7 | 10.6 | 25.9 | 2026-09-02 |
| AAPL | 25.2 | 16.1 | 48.8 | 19.3 | 55.9 | 2026-09-02 |
| TSLA | 41.7 | 14.6 | 10.3 | 37 | 69.4 | 2026-09-02 |
| MSFT | 24.6 | 11.3 | 20.6 | 19.4 | 65.8 | 2026-09-02 |
| AMZN | 29.8 | 7 | 25.4 | 24.6 | 99.4 | 2026-09-02 |
| PLTR | 46.8 | 6.7 | 8.7 | 42.1 | 112.1 | 2026-09-02 |
| NVDA | 31.7 | 0 | 0 | 31.7 | 61.7 | 2026-09-02 |
The exact SQL behind every number
WITH per_session AS (
SELECT underlying_symbol AS u,
date AS d,
quantileExact(0.5)(implied_volatility) AS iv
FROM global_markets.options_greeks
WHERE date >= (SELECT max(date) FROM global_markets.options_greeks) - 380
AND underlying_symbol IN ('SPY','QQQ','AAPL','MSFT','AMZN','META','NVDA','AMD','TSLA','COIN','MSTR','PLTR')
AND iv_converged AND implied_volatility BETWEEN 0.02 AND 5
AND abs(strike_price / underlying_close - 1) <= 0.05
AND expiration_date BETWEEN date + 20 AND date + 60
GROUP BY u, d
HAVING count() >= 10
),
ranked AS (
SELECT u, d, iv,
row_number() OVER w AS rn,
first_value(iv) OVER w AS iv_latest,
first_value(d) OVER w AS d_latest
FROM per_session
WINDOW w AS (PARTITION BY u ORDER BY d DESC)
),
agg AS (
SELECT u,
any(iv_latest) AS iv_cur,
any(d_latest) AS last_d,
count() AS sessions,
min(iv) AS iv_lo,
max(iv) AS iv_hi,
countIf(iv < iv_latest) AS below_now
FROM ranked
WHERE rn <= 252
GROUP BY u
)
SELECT u AS ticker,
round(100 * iv_cur, 1) AS iv_now_pct,
round(100 * (iv_cur - iv_lo) / (iv_hi - iv_lo), 1) AS iv_rank,
round(100 * below_now / sessions, 1) AS iv_percentile,
round(100 * iv_lo, 1) AS iv_52w_low_pct,
round(100 * iv_hi, 1) AS iv_52w_high_pct,
toString(last_d) AS session_date
FROM agg
WHERE sessions >= 200
AND iv_hi > iv_lo
AND last_d = (SELECT max(date) FROM global_markets.options_greeks)
ORDER BY iv_rank DESC, tickerNa the same measurement for twelve tickers wey many people dey hold. QQQ get the highest IV rank for the group at 31.7, based on current implied volatility of 18.3%. NVDA dey the other end of the list, with rank of 0 and implied volatility of 31.7%. Notice how rank and percentile columns fit far apart inside one row. Na the same range-versus-count calculation wey divergence panel dey measure.
Each of these names get im own IV page: NVDA implied volatility, TSLA implied volatility, AAPL implied volatility, and AMD implied volatility each get complete session history and term structure. To understand the concept behind every score for this page, start with wetin implied volatility be.
How dem dey measure am
Every number for here come from one source: daily options greeks file. E get one stored row for each contract for each session, and e cover US-listed equity and ETF options.
- One IV for each name for each session. Na the median implied volatility of that name’s near-the-money contracts. This mean strikes wey dey within 5% of the stock closing price, with expiry between 20 and 60 calendar days. Dem use median instead of average so one contract wey price wrong no fit move the reading.
- Session only count when at least 10 contracts pass those filters. Dem drop thin sessions instead of publishing dem.
- Na only converged solves. Dem solve implied volatility from the option price, and the file show whether the solve converge. Dem exclude rows wey no converge, plus readings below 2% or above 500%. Solve wey no converge na numerical failure, no be market price.
- The window na the last 252 sessions wey dey available for that name inside 380-calendar-day lookback. Name need at least 200 measured sessions before e fit show anywhere for this page.
- IV rank na (current minus window minimum) divided by (window maximum minus window minimum), then dem multiply am by 100. IV percentile na the number of window sessions wey get implied volatility strictly below the current session’s, divided by the total number of sessions.
- Liquidity floor. Name must don trade at least 20,000 option contracts across its last 20 measured sessions before e fit enter the screened universe. The household-name panel dey apply the session floor, history floor and the same latest-session filter. But e no apply volume floor because dem name the twelve tickers directly instead of screening dem.
- Dem exclude leveraged, inverse and volatility-futures funds from the screen through an explicit list. Fund wey dem build to move three times its index carry three times the implied volatility by construction, so e fit push real single names out. Products wey hold VIX futures instead of shares dey the same list because their implied volatility describe futures curve, no be company.
- The weekly path panel dey plot medians, no be single sessions. Each point na the median of that week’s daily readings for the top-ranked name. So the plotted line must stay inside the daily high and low band by construction. Dem drop weeks wey get fewer than three measured sessions. But the week wey hold the latest session always dey plot, even if na only one day.
- Wetin the file no contain. Same-day-expiry (0DTE) contracts and cash-settled index options no dey inside this dataset. So 0DTE volatility spike no fit reach these numbers. SPY and QQQ dey show as ordinary ETFs. The warehouse no get open interest field anywhere too. So every liquidity threshold above na traded contract volume, no be open interest.
- The date stamp na the actual session. The greeks file dey settle some sessions behind the equity tape. So each board carry the date of the session wey e use, and every row for every board come from that same session. The weekly path panel na the deliberate exception: e dey draw one year of history behind the top-ranked name. These no be live quotes.
FAQ
IV rank na wetin?
IV rank dey show where current implied volatility of one stock dey inside the stock own 52-week range. E dey start from 0 for the lowest point reach 100 for the highest point. Formula na current IV minus 52-week low, divide by 52-week high minus the low. E dey compare the stock with its own history, no be with other stocks. Na why two stocks wey get very different volatility fit still get the same rank.
Which IV rank good for selling options?
No rank dey make selling automatically correct, and this page no dey give any one. High rank mean say option premiums dey near the highest level wey that stock charge for the past year. Low rank mean say dem dey near the lowest level. Sellers generally prefer high readings, while buyers prefer low ones. But both sides still carry the risk say the stock move fit differ from the move wey the option price don already price in.
IV rank vs IV percentile, wetin be the difference?
IV rank dey use only today’s implied volatility plus the two extremes of the 52-week range. IV percentile dey count how many of the last 252 sessions close below today’s reading. One extreme session fit stretch the range and push rank down, while e barely move percentile. Because of this, both measures fit disagree by tens of points for the same stock, as the panel above dey show.
Where I fit check IV rank free?
This page na free IV rank checker. E dey refresh according to schedule against the full US options tape, and e dey publish the exact SQL behind every cell. Individual stocks get standing pages, while the volatility skew page explain how implied volatility dey change across strikes for one expiry.
Every panel for here store its own query. Open one to audit the measurement from beginning reach end, or run the same IV rank screen across any window and any universe for the Strasmore terminal.