IV Rank最高的美股排行榜:附IV Percentile与测量方法
当前IV Rank最高的美股排行:按各股自身52周隐含波动率区间打分,并列出IV Percentile与完整测量方法。
IV Rank 衡量的是一只股票当前的隐含波动率,落在其自身52周区间中的什么位置:区间最低点记为0,最高点记为100。读数接近顶部,意味着期权市场为这只股票未来的波动定价,达到了过去一年所有交易日中的最高水平;读数接近底部则相反。下表按最近一个已测量期权交易日(2026-07-20)的 IV Rank 从高到低排列美国股票和 ETF,并在旁边列出 IV Percentile——这两个数字回答的是同一个问题,只是用了不同的算法。
当前IV Rank最高的美股
每个数字背后的完整 SQL
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 15看榜首这一行。NOW 收盘时的平值隐含波动率为 76%,而其52周区间为 22% 至 76%。由此得到它的 IV Rank 为 100,IV Percentile 为 99.6。
处于量表顶端的 IV Rank 只有一个确切含义:最近一个交易日的隐含波动率,是整个测量窗口内的最高读数。这个数字本身,并不能说明这只股票在绝对意义上有多“波动”,它只是这只股票和它自己历史的比较。
这个区分很有实际意义。在整个筛选样本中排名最高的那个十分位区间里,当前隐含波动率的分布范围是 28.1% 到 172.7%,中位数为 79.3%。一只本身波动很小的股票,触到自己那条平静区间的顶部,和一只本身波动剧烈的股票触到自己那条剧烈区间的顶部,得到的 IV Rank 分数是一样的。如果想看的是绝对水平而不是相对位置,隐含波动率最高股票榜用的就是同一份数据的原始 IV 排名。
IV Rank与IV Percentile的区别
这两个数字都是把今天的隐含波动率放到同一段52周历史里去比较,只是计算方式不同。
- IV Rank 等于(当前IV减去52周最低值)除以(52周最高值减去最低值),以百分比表示。它只读取当前值和窗口内的两个极值。
- IV Percentile 等于过去252个交易日中,收盘隐含波动率低于今天读数的交易日占比。它会读取窗口内的每一个交易日。
过去一年里哪怕只出现过一个剧烈波动的交易日,也会给基于区间的 IV Rank 设下一个它永远不会忘记的天花板,而基于计数的 IV Percentile 只会把它当成252个交易日里的普通一天。下面这个面板按其中一个方向对这种分歧排序:用 IV Percentile 减去 IV Rank,差值从大到小排列。呈相反形态——即 IV Rank 高于 IV Percentile——的标的属于另一个筛选方向,不在这里展示。
每个数字背后的完整 SQL
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 12这个方向上差距最大的是 AMZN:IV Percentile 为 89.7,而 IV Rank 只有 25.9,同一交易日、同一份数据下相差 63.8 个点。它当前的隐含波动率为 42.4%,而52周最高值为 99.4%。Percentile 统计的是交易日数量,而这只股票窗口内的大多数交易日都比最近这一天更平静;Rank 衡量的是与极值的距离,而那个52周最高值依然高于最近的读数。同一份数据,两个答案。
这两个数字都不存在“哪个更正确”的问题。Rank 回答的是最近这次读数距离极值有多近,Percentile 回答的是它相对于典型交易日有多不寻常。
IV Rank高到底是什么样子
每个数字背后的完整 SQL
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 week这是榜首标的 NOW 的逐周走势,图中以两条水平参考线标出其52周最高值和最低值。图上每一个点,都是当周每日读数的中位数,因此按构造方式,这条线始终落在每日高低区间之内,而不会真正触及任何一条参考线。测量窗口开始时读数为 29.2%,收官那一周(含最近交易日)读数为 76%,对照的天花板是 76%,地板是 22%。而 IV Rank 实际打分所用的,是上方榜单里那唯一一个交易日的读数:76%。一个位于量表顶端的 IV Rank,展示的就是这么一幅画面,仅此而已:最近的读数,落在它自己那条区间的上沿,无论那条区间本身处在什么水平上。
走势的形状和分数本身同样重要。一只用了数月时间慢慢爬升的股票,和一只在一周内跳空到同一水平的股票,打出的 IV Rank 可以完全相同。至于一个高读数在计划内事件(如财报)之后通常会怎样,参见用真实财报数据测量的IV crush。
整个市场在IV Rank上的分布
每个数字背后的完整 SQL
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 DESC这一交易日共有 231 只标的跨过了流动性和历史长度两道门槛。按 IV Rank 分成十分位区间后,90-100 这一档有 30 只,而另一端的 0-10 档只有 3 只。当前隐含波动率的中位数,随着 Rank 档位下降而逐档走低:从最高档的 79.3%,一路降到最低档 0-10 的 36.6%,差距一列衡量的是每一档相对最高档中位数的落差。请看整张表的整体斜率,而不要只盯着某一步的变化:样本量很少的档位,中位数噪音较大,相邻两档也可能出现顺序颠倒。
这个分布,正是解读单一读数所需要的背景。一个听起来很高的 Rank 数字,如果不知道同一时刻还有多少其他标的也在同样高的水平上,本身说明不了太多问题。
热门标的的IV Rank
每个数字背后的完整 SQL
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, ticker同样的测量方法,用在十二只被广泛持有的知名标的上。AMD 的 IV Rank 在这组里最高,为 86.3,当前隐含波动率为 87.5%。SPY 则在名单另一端,Rank 为 25.6,隐含波动率为 15.2%。请留意同一行里 Rank 和 Percentile 两列的数值可以相差多远——这正是上面差异面板测量的那种“区间对计数”的算法差异。
这些标的中的每一个都有自己独立的 IV 专题页面:NVDA隐含波动率、TSLA隐含波动率、AAPL隐含波动率和AMD隐含波动率,各自都带有完整的历史交易日数据和期限结构。想了解本页每一个分数背后的基础概念,可以从什么是隐含波动率读起。
本页的测量方法
本页所有数字都来自同一个数据源:每日期权希腊值文件,每个合约、每个交易日存一行记录,覆盖美国上市股票和 ETF 期权。
- 每只标的每个交易日只取一个IV值。 取该标的近平值合约(行权价与收盘股价相差在5%以内)、到期日在20到60个日历日之间的隐含波动率中位数。用中位数而非平均数,这样单个定价异常的合约不会拉动整体读数。
- 只有当至少有10个合约满足上述筛选条件时,这一交易日才计入。 成交过于清淡的交易日会被直接剔除,而不是发布出来。
- 只保留收敛的解算结果。 隐含波动率是由期权价格反推得出的,数据文件会标记这次反推是否收敛。未收敛的记录会被剔除,读数低于2%或高于500%的记录同样剔除。未收敛的解算是一次数值计算上的失败,不代表任何真实的市场价格。
- 测量窗口是该标的在过去380个日历日回看期内、最近的252个交易日。 一只标的至少要有200个已测量交易日的数据,才能出现在本页任何位置。
- IV Rank 等于(当前值减去窗口内最小值)除以(窗口内最大值减去最小值),再乘以100。IV Percentile 等于窗口内隐含波动率严格低于当前交易日读数的交易日数量,除以窗口内的交易日总数。
- 流动性门槛。 一只标的必须在最近20个已测量交易日内累计成交至少20,000张期权合约,才能进入筛选样本。热门标的面板同样应用了交易日数量门槛、历史长度门槛以及相同的“最近交易日”筛选,但不应用成交量门槛,因为这十二只标的是直接指定的,而不是筛选出来的。
- 杠杆型、反向型以及波动率期货类基金,均按明确名单剔除。 一只按设计要以三倍于指数波动的基金,其隐含波动率也天生是三倍,如果不剔除,会把真正的个股标的挤出榜单。持有 VIX 期货而非股票的产品也在同一份剔除名单中,因为它们的隐含波动率描述的是一条期货曲线,而不是一家公司。
- 逐周走势面板画的是中位数,不是单个交易日。 图上每一个点,都是榜首标的当周每日读数的中位数,因此按构造方式,这条线始终落在每日高低区间之内。已测量交易日不足三天的周会被剔除,唯一的例外是包含最近交易日的那一周——即便这一周只有一个交易日,也照样绘出。
- 本数据文件不包含的内容。 当日到期(0DTE)合约和现金结算的指数期权都不在这份数据集内,因此0DTE的波动率飙升永远不会体现在这些数字里。SPY 和 QQQ 在本页作为普通 ETF 处理。本数据仓库也没有任何未平仓合约字段,因此以上所有流动性门槛,指的都是成交合约量,而不是未平仓合约数。
- 日期标注对应的是真实交易日。 希腊值文件的结算,比股票成交记录要滞后几个交易日,因此每张榜单都标注了它所使用的交易日日期,榜单上的每一行数据也都来自那同一个交易日。逐周走势面板是刻意设计的例外:它绘出了榜首标的整整一年的历史数据。这些都不是实时报价。
FAQ
什么是IV Rank?
IV Rank 衡量的是一只股票当前的隐含波动率,落在其自身52周区间中的位置:区间最低点记为0,最高点记为100。计算公式是当前IV减去52周最低值,再除以52周最高值减去最低值。它比较的永远是标的自身的历史,而不是与其他股票比较,这也是为什么两只波动率天差地别的股票,可以打出同样的 IV Rank。
卖期权选多少IV Rank合适?
不存在某个 Rank 数值能让卖出期权这件事本身“正确”,本页也不会给出这样的数字。高 Rank 意味着期权权利金,处于该标的过去一年定价水平的高位;低 Rank 则接近低位。卖方通常偏好高读数,买方通常偏好低读数,但无论哪一方,都承担着股票实际走势与其定价所隐含的走势不一致的风险。
IV Rank和IV Percentile有什么区别?
IV Rank 只使用今天的隐含波动率和52周区间的两个极值;IV Percentile 统计的是过去252个交易日里,有多少天的收盘读数低于今天。一个极端交易日会拉大整个区间、把 Rank 往下拉,却几乎不会影响 Percentile,于是同一只标的的这两个数字,可以相差几十个百分点,就像上文面板展示的那样。
哪里可以免费查询IV Rank?
本页就是一个免费的 IV Rank 查询工具:它按固定周期基于完整的美国期权成交记录刷新,并公开每个单元格背后的具体 SQL。单只标的另有各自的专题页面,波动率偏斜页面则说明了同一到期日下,隐含波动率如何随行权价变化。
本页每个面板都存有各自的查询语句。打开任意一个即可从头到尾核对整个测量过程,也可以在 Strasmore 终端上,用任意窗口、任意样本运行同样的 IV Rank 筛选器。