Strasmore Research
市场回顾 Matt Connor作者: Matt Connor · data as of July 22, 2026 · refreshed weekly

IV Rank最高的美股排行榜:附IV Percentile与测量方法

当前IV Rank最高的美股排行:按各股自身52周隐含波动率区间打分,并列出IV Percentile与完整测量方法。

IV Rank 衡量的是一只股票当前的隐含波动率,落在其自身52周区间中的什么位置:区间最低点记为0,最高点记为100。读数接近顶部,意味着期权市场为这只股票未来的波动定价,达到了过去一年所有交易日中的最高水平;读数接近底部则相反。下表按最近一个已测量期权交易日(2026-07-20)的 IV Rank 从高到低排列美国股票和 ETF,并在旁边列出 IV Percentile——这两个数字回答的是同一个问题,只是用了不同的算法。

当前IV Rank最高的美股

查询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——的标的属于另一个筛选方向,不在这里展示。

查询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
),
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高到底是什么样子

查询榜首标的逐周隐含波动率,附52周最高值与最低值
每个数字背后的完整 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上的分布

查询筛选样本在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-1036.6%,差距一列衡量的是每一档相对最高档中位数的落差。请看整张表的整体斜率,而不要只盯着某一步的变化:样本量很少的档位,中位数噪音较大,相邻两档也可能出现顺序颠倒。

这个分布,正是解读单一读数所需要的背景。一个听起来很高的 Rank 数字,如果不知道同一时刻还有多少其他标的也在同样高的水平上,本身说明不了太多问题。

热门标的的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
    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 筛选器。