• 期权实验室交易分析
导航
  • 仪表盘
  • 期权链
  • 策略构建器
  • 持仓
  • 隐含波动率曲面
  • Gamma敞口
  • 希腊值计算器
  • 学习路径
  • 研究
  • 模型检验
  • 交易想法
  • 设置
  • Sign in
© 2026 Options Lab·粤ICP备2026135365号-1·粤公网安备44011302005991号
全部研究

用过去的波动率预测,比 implied volatility 更准吗?

数据:六只有上市期权的 exchange-traded fund(ETF,交易所交易基金):50ETF、300ETF、500ETF、创业板ETF、科创50ETF、深100ETF;135 个日期上的 387 个样本,2015-05-11 至 2026-08-10,最后一个窗口在 2026 年 9 月结束。来源:新浪日收盘价与 QVIX 波动率指数,均通过 AKShare 获取。

不会。 预测下个月的已实现波动率,最好的方法是用市场的 implied volatility(IV,隐含波动率)减去一个小而稳定的溢价,约 1 个 vol point(波动率点)。把近期的已实现波动率加进去(很多工具以及本 App 以前都这样做),预测并不会更准。

  • ≈ 1 点:平均溢价,即 at-the-money(ATM,平值)IV 比随后实际波动高出多少。
  • 3.2 点里只兑现 0.6 点:当“IV 高于近期波动”发出卖出信号时,声称有 3.2 点优势,实际只兑现约 0.6 点。
  • 27 %:“IV 便宜”这个想法(近期波动高于 IV,所以买入波动率)成立的比例。
  • −0.2 点:2026 年至今的溢价。今年没有溢价可赚。

问题是什么

每个期权策略的期望值都取决于一个数:标的到期前实际会波动多少,即 realised volatility(RV,已实现波动率)。市场自己的估计就是期权价格里隐含的 IV。一个常见的捷径是用过去几个月的 RV 预测下个月:

forecast = IV − average(IV − RV 30d, IV − RV 60d, IV − RV 90d)
         = 过去 30、60、90 天已实现波动率的平均值

式子里的 IV 会互相抵消,所以这个预测其实是“下个月和过去一到三个月一样”,完全没有用到市场当前的定价。IV − RV 这个差就是 volatility risk premium(VRP,波动率风险溢价):期权卖方承担波动率飙升风险、平均能收到的补偿。

检验方法:在过去的每个日期,把几种预测和随后 30 天的实际已实现波动率比较。

  • Trailing RV(过去的已实现波动率):上面的 30、60、90 天 RV 平均值。
  • Implied volatility:公开的 QVIX 指数(类似 VIX 的 30 天波动率指数,包含 skew(波动率偏斜),比 ATM IV 高 1–3 点),以及一个更接近期权链上平值 IV 的版本。
  • 混合预测:IV 和 trailing RV 各占一半;以及 IV 减去长期平均溢价(只用当时已经结束的窗口来估计,从不看到未来)。

样本落在同一组相隔至少 30 个自然日的日期上,所以任意两个 30 天窗口都不重叠。

50ETF 波动率折线图,单位为百分比,2015 年至 2026 年,每个 30 天样本一个点:蓝线是样本当天的 QVIX,橙线是基于过去已实现波动率的预测,白色虚线是随后 30 天的实际已实现波动率。蓝线通常略高于虚线;橙线滞后地跟随虚线,在 2015 年股灾和 2024 年底行情之后才冲高,而不是之前。

50ETF:两种预测与随后实际波动的对比,每个互不重叠的 30 天样本一个点。

如何阅读此图
  • 每个点是一个日期。蓝线和橙线是当天做出的预测,白色虚线是随后 30 天实际发生的波动率。
  • 好的预测应该压在虚线上。蓝线(QVIX)大多略高于虚线:这个差就是期权卖方收取的溢价。
  • 橙线(trailing RV)是过去的数据,所以总是来得晚:一次飙升之后(2015 年、2024 年底),虚线已经回落,它还停在高位。
  • 虚线上两种预测都没料到的尖峰,就是决定尾部风险的那些月份。

哪种预测最准?

典型误差用 root mean square error(RMSE,均方根误差)衡量,单位是 vol point(1 点 = 0.01 年化波动率),六只 ETF 合并计算,越低越好。Bias(偏差)是(实际 − 预测)的平均值:为负表示预测偏高。

预测样本biasRMSE对数误差 sd
trailing RV(30/60/90 天平均)387−0.110.810.424
QVIX387−2.79.980.370
QVIX 的平值 IV 版本387−1.19.650.373
IV 与 trailing RV 各半387−1.410.030.385
IV − 长期溢价(样本外)363+0.49.690.388
  • 所有基于 IV 的预测都比 trailing RV 准。 把日期网格平移 0 到 20 个交易日得到 21 个版本,QVIX 的 RMSE 在全部 21 个版本里都更低。
  • 单独的 IV 偏高,偏高的部分就是溢价,但它的信息更充分(对数误差更集中)。Trailing RV 没有偏差,但噪声更大。
  • 差距不大:每种方法的典型误差都在 10 点左右。无论用什么方法,下个月的波动率都很难预测。
  • 统计上(用 Diebold–Mariano 检验逐日比较两个预测的平方误差),平值版本、IV − 溢价和各半混合都明显优于 trailing RV(t 值 2.2–2.5)。原始 QVIX 单独对比 trailing RV 不显著(t 1.5)。

溢价到底有多大?

溢价 = IV 减去随后的实际波动率:期权卖方在尾部亏损之前平均能收到的部分。

IV 口径均值中位数为正的月份sd(standard deviation,标准差)最差 5 % 均值
QVIX(含 skew)+2.7+4.675 %9.6−25.6
平值 IV+1.1+3.070 %9.6−27.1

按年份的 QVIX 溢价(vol point;2015–2019 年只有 50ETF):

年份月数均值为正的月份最差 5 % 均值
20158+0.8762 %−23.86
201612+8.20100 %+1.30
201712+1.8183 %−8.44
201812+1.4667 %−11.89
201912+3.6483 %−15.05
202024+1.7875 %−24.34
202124+2.9979 %−6.73
202230+2.7873 %−8.91
202367+3.9585 %−3.70
202472+1.7371 %−43.61
202566+4.2279 %−18.95
202648−0.1652 %−17.60
  • 典型的月份卖方能赚 3–5 点(中位数)。平均值更低,是因为少数月份非常惨烈:2015 年股灾、2020 年 2 月,以及 2024 年 9 月的刺激政策行情,那次创业板ETF 的实际波动比 IV 高出 59 点。
  • 每月的优势与噪声之比约为 1.1 / 9.6 ≈ 0.1。卖方大多数月份都赢,但一个月就可能亏掉一年的溢价。
  • 2026 年是样本中最弱的一年:平均 −0.2,只有 52 % 的月份为正。
  • 在 IV 处于过去一年最便宜的 20 % 时卖出,是最平稳的交易:平均 +3.7,86 % 的月份为正,sd 4.8。

“卖出”和“IV 便宜”信号有效吗?

一个流行的规则把 IV − trailing RV 当作优势:为正就是“IV 偏贵,卖出波动率”,为负就是“IV 便宜,买入波动率”。平值 IV 口径(vol point;买入的几行按买方计算优势):

规则月数命中率实际兑现声称的优势
每月都卖出,不看信号38770 %+1.1—
trailing RV < IV 时卖出26268 %+0.63.2
“IV 偏贵”区间卖出8771 %+3.01.5
trailing RV > IV 时买入波动率(“IV 便宜”)12527 %−2.13.6
“IV 便宜”区间买入波动率4626 %−1.5—

信号越大,兑现的溢价是否越多?

信号(IV − trailing RV)月数实际溢价
低于 −355+3.43
−3 到 070+0.97
0 到 3155+0.35
3 到 681+0.80
6 及以上26+1.57
  • 卖出信号没有判断力。 它的胜率和每月都卖一样,溢价反而更小。它声称约 3 点优势,实际只兑现约 0.6 点。
  • 波动率飙升之后,trailing RV 会高估下个月。 当 trailing RV 比 IV 高出 3 点以上时,随后的实际波动有 75–85 % 的时间低于 IV,样本中每一次飙升都是如此,不是某一次的特例。所以信号最负的那一组,溢价反而最大。
  • “IV 便宜”押错了方向。 按这个想法买入波动率,每月亏 2–4 点。

近期波动率应该占多大权重?

把下个月的波动率拟合为 w·IV + (1 − w)·trailing RV。留给 trailing RV 的权重 1 − w,就是预测应该相信近期波动的程度。

样本IV 权重trailing RV 权重95 % 区间(RV 权重)
全部 ETF,QVIX0.790.21−0.22 … 0.59
全部 ETF,平值 IV1.000.00−0.50 … 0.47
  • 加入常数项后,拟合结果为 下个月波动率 ≈ 1.03 × IV − 2.8 点(QVIX 口径)。也就是 IV 减一个常数,trailing RV 项消失了。
  • QVIX 的权重低于 1,只是因为 RV 项吸收了 QVIX 较大的溢价。把 QVIX 下移 1.5–2 点(大约是平值 IV 的位置),权重就变成 1.0。
  • 数据支持的 trailing RV 权重是 0–0.2,而不是“折中取一半”规则用的 0.5。

最佳预测会错多少? IV − 溢价的对数误差离散度约为 0.39(大约 ±39 %),且偏向上方:log(实际 / 预测) 的第 5 和第 95 百分位是 −0.49 和 +0.71。以 20 % 的预测为例,下个月通常落在 14 % 到 29 % 之间。大约每 100 个月有 1 个月的实际波动达到预测的 3.4 倍(最严重的是 2024 年 9 月行情,4.1 倍);没有一个月低于预测的约 0.3 倍。

App 据此做了什么

  • 波动率预测改为 ATM IV − 1 点,所有标的通用,用于策略评分、成本检查(“优势期望值”)和 Kelly criterion(凯利公式)仓位。它只需要当天的 IV,所以即使已实现波动率数据缺失,优势也不会被关掉。2026 年 10 月更新:后续研究发现溢价随 IV 增大,预测现在是 0.95 × ATM IV(IV 为 15 % 时减 0.75 点,30 % 时减 1.5 点)。
  • VRP 卡片把 IV − trailing RV 作为历史显示,而不是优势,旁边给出预测值。
  • “IV 便宜”的买入波动率提醒已移除。
  • Kelly 按预测的误差范围计算仓位,而不是只用一个数字。这个范围有多宽、在短期限上如何变化,见波动率预测研究和按波动率区间计算 Kelly。

局限与注意事项

  • 独立样本约 135 个月,不是 387 个。 2020 年之前只有 50ETF,之后六只 ETF 走势高度相关,所以合并后的样本数高估了独立性。权重的 95 % 区间很宽(±0.4–0.5)。
  • 只有三次压力事件(2015 年、2020 年 2 月、2024 年 9 月)决定了尾部数字。新类型的冲击可能更糟。
  • QVIX 不是你交易的 IV。 它是 model-free(无模型)的,包含 skew,所以比平值 IV 高 1–3 点。平值 IV 版本是把 QVIX 按一个平稳年份(2025-10 至 2026-09)测得的差距平移,再套用回 2015 年:它用到了后来的数据,并且在压力月份可能低估了差距。QVIX 和平值两行应看作真实值所在的范围。
  • 较晚上市的品种从相对平稳的年份开始(2019–2023),那段时间溢价普遍为正。
  • 已实现波动率用的是 ETF 收盘价,保留了分红除息的下跌。 换成不含分红的指数,溢价是 +2.9 而不是 +2.7(QVIX),结论不变。一次 ETF 份额拆分(500ETF,2022-08-29)已从所有 RV 中剔除。
  • 中证1000 股指期权(IM)没有覆盖。 它的公开波动率指数有问题(有零值、缺口,且在 2026 年 3 月中断),所以 1 点溢价在 IM 上是未经检验的,App 也标明了这一点。

自己复现

下面的脚本用公开数据重算本页 QVIX 口径的各项数字,不需要账号或密钥。

数据(通过免费的 AKShare 获取):

内容AKShare 函数起始
ETF 日收盘价(新浪,未复权)fund_etf_hist_sina("sh510050") 等各 ETF 上市日
跟踪指数收盘价,仅用于识别份额拆分stock_zh_index_daily("sh000016") 等—
QVIX 日收盘值index_option_50etf_qvix()、_300etf_、_500etf_、_cyb_、_kcb_、_100etf_2015-02-09(50ETF)至 2023-06(科创50)

已实现波动率(收盘价对收盘价,预测和目标用同一个估计方法):

def realized_vol(points, as_of, lookback_days, *, skip_gaps):
    start = as_of - timedelta(days=lookback_days)
    window = [(d, p) for d, p in points if start <= d <= as_of]
    rets = [log(p1 / p0) for (d0, p0), (d1, p1) in zip(window, window[1:])
            if not (skip_gaps and (d1 - d0).days > 5)]   # 跳过长假
    m = sum(rets) / len(rets)
    return sqrt(sum((r - m) ** 2 for r in rets) / len(rets) * 252)

起点 t 的各个预测,以及目标:

trailing = mean(realized_vol(px, t, w, skip_gaps=True) for w in (30, 60, 90))
qvix     = qvix_close[t] / 100
target   = realized_vol(px, t + timedelta(days=30), 30, skip_gaps=False)

# IV − 溢价:截至 t 已经结束的样本的平均溢价
past     = samples[samples.origin + timedelta(days=30) <= t]
iv_minus_premium = qvix - (past.iv - past.rv_fwd).mean()

评分:

rmse    = 100 * sqrt(((target - forecast) ** 2).mean())   # vol point
premium = 100 * (iv - target)                             # 均值、中位数、为正的比例

运行:

pip install -r requirements.txt
python vrp_backtest.py --cache-dir data --until 2026-09-30

--until 2026-09-30 把数据截在本页所用的日期;不加的话,之后结束的月份会被加进来,数字会略有变化。

2026-10-01 核对:分别用研究保存的数据和重新从 AKShare 下载的数据运行,两次结果相同,与本页显示的每一位数字一致。声明的容差为 ±0.01 vol point(四舍五入)。

数字本页脚本
样本 / 日期387 / 135387 / 135
RMSE,trailing RV10.8110.81
RMSE,QVIX9.989.98
RMSE,IV − 溢价9.699.69
QVIX 溢价:均值 / 中位数 / 为正的月份+2.70 / +4.62 / 75 %+2.70 / +4.62 / 75 %
IV 权重(QVIX)0.790.788
“IV 便宜”(QVIX):成立比例 / 买方优势26 % / −3.6826 % / −3.68
IV − 溢价的对数误差 sd0.3880.388

平值 IV 的几行不在脚本里:QVIX 与平值 IV 之间的差距,是用本站从实时期权链记录的一年平值 IV 测出来的,这不是公开数据。

下载脚本

独立的 Python 脚本,只使用公开数据(AKShare)。先安装 requirements.txt 中的依赖,再运行脚本。

  • vrp_backtest.py
  • requirements.txt

免责声明: 仅供学习。以下均为对历史数据的研究,过往结果不代表未来表现,不构成任何投资建议。