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

隐含波动率冲到极端的那天,是卖期权的最好时机吗?

数据:六只有上市期权的 exchange-traded fund(ETF,交易所交易基金):50ETF、300ETF、500ETF、创业板ETF、科创50ETF、深100ETF。每一个随后 30 天已经结束的交易日,2015-05 至 2026-08:2,742 个日期上的 7,631 个样本。预测检验:135 个日期上的 387 个样本,大约每 30 天一个。来源:新浪日线收盘价和 QVIX 隐含波动率指数,均通过 AKShare 获取;平值隐含波动率由 QVIX 加上每只 ETF 一个固定差值估算,差值用本站的期权链数据测得。

只有事后看才是。 在一次隐含波动率极端行情的峰值当天卖出期权,赚得最多。但当天没有人知道那就是峰值。按当时能知道的信息,在隐含波动率仍在创新高时卖出,是这段样本里最差的时机;等它停止上涨约两周后再卖,是最好的时机,但优势不足以证明。

  • +13.1 对 +4.0 个波动率点:在 11 次极端行情的峰值当天卖出,对比 20 个交易日后再卖。峰值只有事后才知道。
  • +2.9 对 +4.4:在隐含波动率第一次越过“当天就能知道的极端线”那天卖出,对比 10 天后再卖(5 次行情,全部在 2024 年及以后)。最大亏损 −38 点正出现在当天。
  • −1.3 点:隐含波动率处于高位、并且创出 60 日新高的日子的平均值,尾部最差。峰值后第 10–19 天则是 +4.3。
  • 13.2 倍对 7 倍预算:亏了就加倍(1 倍、2 倍、4 倍)在极端行情里赢了,但在更大范围的测试中,最差的起点需要第一轮保证金的 13.2 倍,最终亏掉 3.7 倍。
  • 0.95 × 平值隐含波动率:对下个月已实现波动率更好的预测,本站将用它取代“隐含波动率 − 1 点”。
  • 不设“刚刚飙升”惩罚:事先定好的检验(2015–2020 年拟合,2021–2026 年检验)不支持它。

问题是什么

期权卖方赚到的溢价,是 implied volatility(IV,隐含波动率,即今天期权价格里包含的波动率)减去随后 30 个自然日的 realised volatility(RV,已实现波动率),单位是 vol point(波动率点,1 点 = 1 % 年化波动率)。波动率溢价研究发现,这个溢价平均来看小而为正;文献综述解释了它从哪里来。

A 股的隐含波动率有上限:涨跌停(±10 %,创业板ETF 和科创50ETF 为 ±20 %)限制了 ETF 的移动速度,已实现波动率不会像其他市场那样失控。那么当隐含波动率飙升时,它冲到极端的那天是不是最好的卖出日?还是等几周更好?高隐含波动率能多赚单位风险的收益,还是只多赚波动率点?

设定。 这里的隐含波动率用每只 ETF 公开的 QVIX 指数(类似 VIX 的 30 天隐含波动率),再减去每只 ETF 一个固定差值(0.5–2.2 点),换算成 at-the-money(ATM,平值)隐含波动率的估计值,也就是本站从期权链读取的那个隐含波动率。极端指 QVIX 进入它自身历史的最高 2 %;相隔不到 20 个交易日的读数算同一次行情,几只 ETF 的峰值相距 20 个交易日以内时只算一次(那是同一个市场事件)。这样得到 11 次独立的极端行情:2015-06-29、2015-08-26、2020-02-03、2020-03-17、2020-07-06、2022-10-24、2024-02-05、2024-10-08、2025-04-07、2026-03-23 和 2026-07-30。

分组、阈值、训练期与检验期以及候选惩罚项,都在计算任何结果之前写定。看到结果之后才加入的内容,出现时都有标注。

QVIX 从未到过 100:50ETF 的最高值是 63.8(2015-08-26),只有科创50ETF 接近过(97.4,2024-10-08)。“50ETF 隐含波动率 100”是盘中或单个期权的数字,不是 30 天指数。

事后信息的阶梯

同一个问题,用越来越少的事后信息来问。每一行是一种认定“极端那天”的方法;各列是当天卖出、或 5、10、20 个交易日后卖出的平均溢价(波动率点,平值隐含波动率)。“等待更好”统计晚卖赚得更多的行情次数。

卖出日行情数当天+5+10+20等待更好(+5 / +10 / +20)
行情峰值(只有事后才知道)11+13.1+7.1+6.3+4.011 次中 4 / 3 / 2
第一次越过全部历史的最高 2 % 线11+9.2+8.0+6.0+4.611 次中 4 / 5 / 5
第一次越过当天就能知道的最高 2 % 线5(2024 年起)+2.9+3.2+4.4+3.75 次中 2 / 2 / 2
隐含波动率处于高位(分位数 ≥ 0.70)且创 60 日新高的任一天122 个日期上的 250 天−1.3————
  • 第 1 行需要未来信息。 峰值当天,你并不知道明天隐含波动率不会更高。
  • 第 2 行仍然需要:最高 2 % 线用了全部历史,包括之后的年份。
  • 第 3 行才是卖方当时能交易的:这条线是截至当天所有读数的最高 2 %。只有 5 次行情符合,全部在 2024 年及以后(每个序列先要积累约一年的读数,而 50ETF 的线被 2015 年抬得很高)。这里当天卖出没有任何优势,最差结果是 −37.8 点,前两行分别只有 −6.2 和 −9.5。
  • 第 4 行看的是每一个交易日,不只是极端行情:隐含波动率处于高位、刚创出 60 日新高的日子,平均为 −1.3 点,最差 5 % 的平均是 −55.9。
11 次独立极端行情的折线图:每条细蓝线是一次行情,显示在峰值日之后 0、5、10、20、40、60 个交易日卖出时的溢价(隐含波动率减随后 30 天已实现波动率,平值隐含波动率,单位波动率点)。粗橙线是平均值:峰值当天 +13.1,5 天 +7.1,10 天 +6.3,20 天 +4.0,40 天约 +2,60 天约 +3。单次行情从约 −26 到 +31 不等。

在隐含波动率极端时卖出:峰值当天(0)或之后卖出赚到的溢价,11 次独立行情。第 0 天只有事后才知道。

如何阅读此图
  • 横轴是卖出时间:0 是这次行情的峰值日(QVIX 最高的一天),20 是 20 个交易日之后。
  • 纵轴是卖方赚到的:卖出日的隐含波动率减去随后 30 天的已实现波动率,单位波动率点。在虚线零线之上,卖方赚钱。
  • 每条细蓝线是一次行情;粗橙线是它们的平均。
  • 橙线在 20 天内从 +13.1 降到 +4.0:如果当时知道峰值,在峰值卖出最好。
  • 关键在于: 第 0 天是回头看完整次行情才选出来的。上面的表格显示了必须当时选日子时还剩下什么。
  • 例子: 图中最低点,约在第 20 天的 −26,是 2015-06-29 那次行情:在那个“峰值”一个月后卖出亏损很大,因为真正的顶部在 8 月。

按距峰值的天数。 在隐含波动率处于高位(过去一年分位数 ≥ 0.70)的每个交易日,按距过去 60 个交易日隐含波动率最高点的交易日数统计溢价。95 % 置信区间来自 block bootstrap(分块自助法):整段 3 个月的日期一起重抽样,因为相互重叠的 30 天窗口和同涨同跌的六只 ETF 会让普通误差线窄得多。

距峰值天数01–23–56–910–1920–3940–59
平均,波动率点−1.3+0.4+1.1+1.4+4.3+2.5+1.8
95 % 区间−7.1 … +4.9−3.0 … +5.6−2.2 … +5.4−2.6 … +5.5+1.7 … +6.0−2.2 … +6.3−3.6 … +6.1
平均 ÷ 标准差−0.07+0.04+0.10+0.10+0.47+0.22+0.21
最差 5 % 的平均−55.9−23.5−24.5−45.2−18.3−26.5−19.1

10–19 天这一档是七档之一,是看完全部结果后才注意到的。应该把这一行当作形状来读(峰值当天最差,隐含波动率回落后更好),而不是一个可以直接交易的数字。

两幅带 95 % 阴影带的折线图,样本为隐含波动率分位数至少 0.70 的日子,横轴是距 60 日隐含波动率峰值的交易日数(0、1–2、3–5、6–9、10–19、20–39、40–59)。左图是溢价(波动率点):0 天 −1.3,升到 10–19 天的 +4.3,之后为 +2.5 和 +1.8;只有 10–19 天的阴影带整体在零之上。右图是卖出跨式占权利金的百分比:0 天约 −6 %,之后为 +9 % 到 +25 %。

在隐含波动率处于高位时卖出,按距 60 日峰值的交易日数。左:溢价(波动率点)。右:不对冲的卖出跨式,占所收权利金的 %。

如何阅读此图
  • 每个点是卖出的平均结果,样本是隐含波动率处于高位(处在过去一年的最高 30 %)、并落在同一档“距上次峰值的交易日数”里的所有日子。0 表示当天隐含波动率正创 60 日新高。
  • 阴影带是 95 % 置信区间。阴影带跨过零线的地方,平均值可能是零甚至为负。
  • 左图: 隐含波动率减随后的已实现波动率,单位波动率点。右图: 卖出平值 straddle(跨式组合)持有 30 天、不做对冲的收益,占所收权利金的 %。
  • 怎么读: 最差的卖出时点就是峰值本身(第 0 档);隐含波动率停止上涨后,两幅图都变好。只有左图的 10–19 天这一档,整条阴影带都在零之上。
  • 例子: 第 0 档左图的点是 −1.3,阴影带从 −7.1 到 +4.9:平均来看,在隐含波动率还在创新高时卖出什么也没赚到,而且结果分散得很厉害。

2015 年:陷阱

2015-06-29,在 6 月见顶后的暴跌中,50ETF 的 QVIX 升到约 60,看上去就是极端。那天卖出,随后 30 天亏 6 点;一个月后(20 个交易日)再卖,亏 26 点。真正的顶部在 2015-08-26(QVIX 64),那时卖出赚了 +22 点。

极端只有事后看才像极端。当隐含波动率处于高位且仍在上升时,下一次冲击可能把它推得更高,而卖波动率的头寸正好承受这一击。

亏了就加倍?

这个问题是在知道上面的结果之后提出的:在极端那天卖出,如果亏了就把仓位加倍,最多三轮:第一轮用 1 倍资金,然后 2 倍、4 倍,一共是第一轮资金的 7 倍。这就是 martingale(马丁格尔策略,每次亏损后加倍下注)。这样还能赢吗?

在这些极端行情里它赢了,但 5 次或 11 次行情看不出它会怎样输。更大范围的测试显示了输法:6 % 的起点突破了 7 倍的预算,最差的一个需要第一轮保证金的 13.2 倍,最终亏掉第一轮保证金的 3.7 倍。

规则,在计算这些结果之前写定:

  • 第一轮在第一次收盘高于“最高 2 %”极端线的那天,卖出一份平值跨式(同一行权价的一个看涨和一个看跌),30 天到期。
  • 当整个头寸的亏损达到已收权利金的 50 %,并且距上一次卖出至少 3 个交易日时加仓,按当天的隐含波动率卖出,每轮各自 30 天到期。每轮按交易所保证金定规模:第二轮是第一轮保证金的 2 倍,第三轮是 4 倍。
  • 每天收盘时,用 Black–Scholes 按当天的平值隐含波动率给未到期的各轮估值,并按上海证券交易所(SSE)卖出期权的保证金公式重算保证金。
  • 对照组:只卖一次(1 倍);在马丁格尔的加仓日期等量卖出(1-1-1);分批入场(第一天三分之一,隐含波动率比高点低 10 % 时三分之一,高点已过去 10 个交易日时再三分之一)。

“3 次加仓”按字面理解是 1 + 2 + 4 + 8 = 15 倍。在这些行情里第四轮从未触发,所以 15 倍与 7 倍的结果相同。

在极端行情里。 盈亏以第一轮权利金的倍数计;“每元保证金”是总盈亏除以投入过的全部保证金。

极端线行情次数马丁格尔 7 倍:合计 / 盈利次数 / 最差只卖一次等量 1-1-1分批每元保证金:马丁格尔 / 只卖一次峰值保证金,第一轮的倍数
当天就能知道5(2024 年起)+2.1 / 5 次中 4 次 / −0.09−0.34+0.10−0.28+5.6 % / −1.1 %5.8
全部历史(事后)11+9.6 / 11 次中 10 次 / −0.09+1.0+5.0+2.1+9.4 % / +3.2 %7.04
  • 为什么赢了: 加仓是在大波动之后触发的。加仓时的隐含波动率更高(2024 年 9 月:从 41 点升到 57 点),而飙升之后价格通常会回来。这和上面峰值后第 10–19 天那一档是同一个“峰值之后再卖”的效应,加倍只是把大部分资金放在了那里。
  • 结果取决于触发条件。 如果改为隐含波动率上升 5 点就加仓,而不是亏损后加仓,用当天就能知道的极端线时,马丁格尔亏掉 3.2 份权利金(最差的一次行情 −4.8)。

更大范围的测试。 风险在尾部,而这些行情没有触及尾部。所以把同样的头寸从每一个“隐含波动率处于高位(分位数 ≥ 0.70)并且创出 60 日新高”的日子开始:122 个日期上的 250 个 ETF 日。一次飙升会产生好几个相互重叠的起点,所以这是描述,不是证明。

策略平均,第一轮权利金的倍数盈利占比最差峰值保证金,第一轮的倍数超出预算(7 倍或 15 倍)的起点
马丁格尔 1-2-4(7 倍)+0.2080 %−20.413.26.0 %
马丁格尔 1-2-4-8(15 倍)+0.5082 %−18.015.20.8 %
只卖一次−0.0660 %−5.63.5—
等量 1-1-1−0.0570 %−14.47.4—
分批 ⅓-⅓-⅓−0.0558 %−4.12.4—
  • 最差的起点: 创业板ETF,2024-09-11 卖出,09-26 和 10-08 加仓,正好撞上 2024-09-30 前后的大涨。它亏掉第一轮权利金的 20 倍,即第一轮保证金的 3.7 倍。一次这样的亏损抵掉 25 次平均盈利。
  • 10-08 那天,这个头寸需要第一轮保证金的 13.2 倍。光是两轮未到期的仓位就要约 9 倍,所以按 7 倍准备资金的账户,在能下 4 倍那一轮之前就会被追加保证金。
两幅折线图,250 个起点各自从最差排到最好。左图:四种做法(只卖一次、等量 1-1-1、分批、马丁格尔 1-2-4)每个起点的盈亏,以第一轮保证金的倍数计。多数起点上四条线都略高于零;马丁格尔在最右端最高,约 +0.8,在最左端最低,为 −3.7,其他做法的最低点在约 −1 到 −2.6 之间。右图:马丁格尔的峰值保证金,前约 60 % 的起点平在 1 倍,之后跳到约 3 倍和 6 倍,在约 94 % 处越过 7 倍预算的虚线,最后到 13.2。

亏了就加倍:从每一个隐含波动率处于高位并创 60 日新高的日子开始(250 个起点)。左:每个起点的盈亏。右:马丁格尔需要的保证金与 7 倍预算的对比。

如何阅读此图
  • 两幅图都把 250 个起点从最差(左)排到最好(右);横轴是起点的占比。
  • 左图: 每种做法赚了多少,以第一轮保证金的倍数计。在零点虚线之上就是赚钱。红橙色线是马丁格尔;其余是只卖一次(蓝)、在同样日期等量卖出(绿)和分批入场(琥珀色)。
  • 在多数起点上,马丁格尔比其他做法略高一点;在最左端却低得多:这就是它的代价,很多次小赚,加上偶尔一次大亏。
  • 右图: 马丁格尔头寸持仓期间需要的最高保证金,以第一轮保证金的倍数计。平在 1 倍的部分是没有加过仓的起点。虚线是 7 倍预算;越过虚线之后的部分(6 % 的起点)需要的保证金超过了预算。
  • 例子: 右图最后一个点 13.2 和左图最低的点 −3.7 是同一个起点:创业板ETF,2024-09-11 卖出,被当月月底的大涨套住。

结论:亏了就加倍并不会创造优势。 它把一点小优势变成很多次小赚,加上偶尔一次超出预算的大亏。如果确实要在亏损后加仓,每次加仓的规模应按它在最坏时点可能需要的保证金来定(在这次测试中,单独一轮就达到过自身初始保证金的 3.5 倍),而不是简单加倍。

本节的注意事项:

  • 只是个案。 5 次(当天就能知道的极端线)和 11 次(事后)行情;更大范围的测试是 122 个日期上 250 个相互重叠的起点。没有给出置信区间。
  • 估值没有考虑偏斜。 未到期的各轮按当天的平值隐含波动率估值。在下跌中,看跌期权会被估得过低,所以亏损、加仓时点和峰值保证金都是下限。
  • 只看收盘,不计成本。 保证金只在收盘时检查(盘中追加保证金会来得更早);不计买卖价差和手续费。没有模拟追加保证金:超出预算的头寸在这里继续持有,所以真实亏损更大(会在最差的时点被强制平仓)。
  • 保证金按单腿计算。 没有用交易所对卖出跨式两条腿的保证金优惠,所以突破预算的情况略有高估。

高隐含波动率能多赚单位风险的收益,还是只多赚波动率点?

研究把每个交易日分进事先定好的组:高位(分位数 ≥ 0.70)再分为刚飙升(60 日隐含波动率峰值在最近 5 个交易日内,或 5 日涨幅处在过去一年涨幅的最高 10 %)和已回落(峰值在 10 个或更多交易日之前);中位;以及低位(分位数 ≤ 0.20)。“平均 ÷ 标准差”是平均溢价除以它的波动,即单位风险的溢价。

组样本 / 日期平均,波动率点平均 ÷ 标准差标准差最差 5 % 的平均
高位、刚飙升1,025 / 447+0.2(−3.0 … +4.2)+0.0214.0−39.0
高位、已回落1,326 / 666+3.0(−0.3 … +5.8)+0.348.7−18.5
全部高位2,567 / 1,063+1.8(−1.0 … +4.7)+0.1611.5−29.6
中位3,503 / 1,477+0.1(−3.0 … +2.1)+0.0111.5−36.8
低位1,561 / 922+0.7(−1.0 … +2.1)+0.106.6−20.4

括号内是 95 % 区间,来自 3 个月分块自助法。

  • 多赚波动率点:是的,多一点。 全部高位减中位 = +1.7 点(−1.3 … +4.9)。
  • 多赚单位风险的收益:没有证据。 平均 ÷ 标准差是 0.16 对 0.01,但差值 +0.15 的区间是 −0.20 … +0.42。高隐含波动率的结果也波动得更厉害。
  • 多出来的部分全在“已回落”的日子里。 刚飙升减已回落 = −2.7 点(−5.5 … +1.0);92 % 的自助抽样结果中刚飙升低于已回落。这个排序并不稳固:在 21 个平移过的日期网格上,已回落有 20 个胜过中位,刚飙升只有 12 个;在波动率溢价研究的网格(每 30 天一个样本)上,两者的排序甚至反过来。
  • 不对冲的卖出跨式看起来不一样:高隐含波动率之后它赚到权利金的 +16 %,中位组是 −14 %。这个差距来自价格路径,不是波动率溢价:高隐含波动率之后,30 天的价格变动只有已实现波动率所对应幅度的 0.64–0.79 倍(价格回摆),平静的月份之后则是 1.22–1.33 倍(价格单边走)。本站的优势模型是对冲后结构的波动率溢价,所以以波动率点计的那几行才是相关的。
三幅点加误差线的图,每行一个组(高位刚飙升、高位已回落、高位 6–9 天、中位、低位),带 95 % 区间。左图是溢价(波动率点):已回落 +3.0,6–9 天 +2.0,刚飙升 +0.2,中位 +0.1,低位 +0.7,每个区间都跨过零。中图是平均除以标准差:已回落 0.34,其余为 0.01 到 0.16。右图是卖出跨式占权利金的百分比:高位各组约 +13 % 到 +17 %,中位和低位约 −14 %。

按隐含波动率分组的随后 30 天,每个交易日,带 95 % 分块自助法区间。橙色行:隐含波动率高位;蓝色行:中位和低位。

如何阅读此图
  • 每一行是一组交易日,分组在计算结果之前就已定好。圆点是组平均;穿过它的横线是 95 % 区间。
  • 左图: 溢价(波动率点)。中图: 单位风险的溢价(平均 ÷ 标准差)。右图: 不对冲的卖出平值跨式,占所收权利金的 %。
  • 横线相互重叠,说明差异没有得到证明。 左边两幅图里,每条高位组的横线都与中位组重叠,所以无论按波动率点还是按单位风险,“高隐含波动率赚得更多”都没有被证明。
  • 右图把高位与中位、低位分开了,但那来自高隐含波动率之后价格怎样走(价格回摆),不是来自波动率溢价。
  • 图中英文标签:“high & fresh”是高位刚飙升,“high & settled”是高位已回落,“middle”是中位,“low”是低位;“high, 6–9 d”是剩下的高位日子(峰值在 6–9 个交易日前),既不算刚飙升也不算已回落,单独列出而不合并。
  • 例子: “high & settled”在 +3.0 点,横线从 −0.3 到 +5.8:它是最好的一组,但区间仍然碰到零。

预测:用 0.95 × 隐含波动率取代“隐含波动率 − 1 点”

波动率预测研究保留了对下个月已实现波动率的简单预测 平值隐含波动率 − 1 点。这项研究检验了它的形式。1 点的常数溢价在隐含波动率 12 % 和 60 % 时一样大;隐含波动率的倍数则随隐含波动率增大。

在波动率溢价研究的网格上做样本外检验(每只 ETF 大约每 30 天一个样本;每次预测只用已经结束的窗口拟合):共 363 个预测。RMSE 是 root mean square error(均方根误差),单位波动率点;log-RMSE 是对 log(RV ÷ 预测) 算的同一指标;QLIKE 是对方差算的一种损失,会重罚预测偏低。Diebold–Mariano(DM)t 逐日比较每种形式与“隐含波动率 − c”的误差:t > 0 表示该形式更好,通常要到 2 左右才算显著。

下个月已实现波动率的预测拟合值(全部数据)偏差RMSElog-RMSEQLIKEDM t(RMSE / log / QLIKE)
隐含波动率 − c(现在的形式)c = 1.08 点+0.329.680.3890.455—
k × 隐含波动率,k = 已实现波动率均值 ÷ 隐含波动率均值k = 0.950+0.309.600.3810.413+2.34 / +1.62 / +1.53
k × 隐含波动率,最小二乘k = 0.925+0.749.560.3770.418+1.87 / +1.78 / +1.49
  • k × 隐含波动率在每种损失上都胜过“隐含波动率 − c”。 只有平方误差的 t 超过 2。在 21 个平移日期网格中的 21 个上,它的 log-RMSE 也更低(RMSE 更低的有 14 个)。
  • k 很稳定:2020 年之前 0.954,2021 年起 0.950。分 ETF 看,从 0.92(500ETF)到 1.02(创业板ETF,按平值口径看不到溢价)。
  • 为什么用“已实现波动率均值 ÷ 隐含波动率均值”而不是最小二乘: 最小二乘更看重高隐含波动率的月份,平均会把已实现波动率预测低 0.7 点,在 Kelly 仓位计算里会高估卖方的期望收益。这个版本是看到结果后才加入的;平均来看它没有偏差。
  • 拟合的直线 a + b·隐含波动率(b ≈ 0.78)RMSE 更低,但在 log 和 QLIKE 上更差,斜率也不稳定(300ETF 上只有 0.43)。它意味着隐含波动率约 17 % 时没有溢价、更低时溢价为负,而低位组实际赚到 +0.7 点,67 % 的日子为正。

本站将采用它: 预测从平值隐含波动率 − 1 点改为 0.95 × 平值隐含波动率,即溢价为隐含波动率的 5 %:

平值隐含波动率12 %15 %20 %30 %40 %60 %
现在的溢价(隐含波动率 − 1 点)1.01.01.01.01.01.0
0.95 × 隐含波动率下的溢价0.60.751.01.52.03.0

在样本的平均隐含波动率(约 20 %)附近两者一致。评分仍然要除以风险,所以高隐含波动率的交易按波动率点得到更多优势,但比值并不更好,这正是数据显示的情况。

387 个样本的散点图:横轴是预测日的平值隐含波动率(约 8 % 到 95 %),纵轴是随后 30 天的已实现波动率。大多数点落在隐含波动率 10 % 到 30 % 之间。虚线表示 RV = IV;蓝线是 IV − 1.1 点,橙线是 0.925 × IV,绿色虚线是 3.7 + 0.78 × IV。几条线在隐含波动率 20 % 附近一致,在高隐含波动率处分开,绿线最低。

用全部 387 个样本拟合的三种预测形式。采用的 0.95 × 隐含波动率没有画出:低隐含波动率时它贴近蓝线,高隐含波动率时位于蓝线和橙线之间。

如何阅读此图
  • 每个灰点是某只 ETF 的一个预测日:横向是当天的平值隐含波动率,纵向是随后 30 天的已实现波动率。
  • 虚线是 RV = IV:点落在它下方,表示卖方赚钱(已实现波动率低于隐含波动率)。
  • 蓝线是现在的形式,隐含波动率减一个常数(这里拟合为 1.1 点)。橙线是 k × 隐含波动率,k 用最小二乘得到 0.925。绿色虚线是拟合的直线 3.7 + 0.78 × 隐含波动率。
  • 采用的预测 0.95 × 隐含波动率没有画出:它在隐含波动率约 22 % 处与蓝线相交,在此之下与蓝线相差不到 1 点,在此之上位于蓝线和橙线之间。
  • 怎么读: 在大多数点所在的隐含波动率 20 % 附近,几种形式一致。它们在点很少的高隐含波动率处分开:常数溢价认为隐含波动率 60 % 之后的已实现波动率是 59 %,0.95 × 隐含波动率认为是 57 %。
  • 点在每条线周围都散得很开:无论用哪种形式,单个月份的已实现波动率都很难预测。

不设“刚刚飙升”惩罚

其他市场的研究发现,刚刚跳升的隐含波动率往往低估随后的已实现波动率,所以预测可以在这些日子加一个惩罚。研究事先定好了六个候选触发条件,都要求隐含波动率分位数 ≥ 0.70:60 日隐含波动率峰值在最近 5、10、15 或 20 个交易日内;5 日涨幅处在最高 10 %;以及隐含波动率高于它过去各月水平的一个缓慢更新的平均值。每个条件都作为一项加进 RV = a + b·IV + c·触发 来拟合。

  • 在 2015-05 至 2020-12 上拟合,最好的触发条件是“隐含波动率峰值在最近 5 个交易日内”:c = +3.1 点,即多出的已实现波动率(−3.2 … +6.9)。区间包含零,第一关就没过。
  • 在 2021-01 至 2026-08 上检验:c = +2.4(−2.2 … +5.9),符号相同,但加了惩罚的预测输给了不加的预测(DM t −1.59):在那些被标记的日子里,卖方赚得更多而不是更少。
  • 反过来拟合(用 2021 年起的数据拟合、用更早的年份检验),胜出的是另一个触发条件,而且符号反转。
  • 用全部数据:+2.6 点(−1.3 … +5.3)。

所以预测不加飙升惩罚。两个半段的符号都与文献一致,值得在再积累约两年数据后重新检验。

本站据此做什么

  • 不给极端那天加分。 在峰值卖出是事后的结论;按当时能知道的信息,高位且仍在上升的隐含波动率是这段样本里最差的卖出时点。
  • 预测改为 0.95 × 平值隐含波动率,各 ETF 共用一个 k,每年重新拟合。
  • 不设飙升惩罚:事先定好的检验不支持它。
  • 一个实用的读法,而不是检验过的规则: 当隐含波动率处于高位且仍在创新高时,等它停止上涨约两周再说。

局限与注意事项

  • 样本小。 历史大约相当于 135 个有效月份;11 次独立极端行情,其中只有 5 次可以用当天就能知道的线来判断,而且全部在 2024 年及以后;11 次里有 5 次只是一两天的飙升。2015–2019 年只有 50ETF,2023 年起六只 ETF 共同经历每一次事件,所以在一次危机中六个序列只算一个观测。没有任何一组在波动率点上的差异在 95 % 水平上显著。
  • 平值隐含波动率是估计值。 它是 QVIX 加每只 ETF 一个固定差值,差值在一个平静的年份(2025 年 10 月至 2026 年 9 月)测得。在压力时期,QVIX 与平值隐含波动率的差距会随 skew(波动率偏斜)扩大,所以高位组和极端行情的平值溢价是上限。完整报告里的 QVIX 各行讲的是同一个故事。
  • 2024 年之前没有买卖价差数据。 跨式组合用 Black–Scholes 按估计的平值隐含波动率定价,持有到期,不计手续费、保证金或提前平仓。在隐含波动率极端时,真实成交的价差很宽。
  • 窗口相互重叠。 每天一个新样本,每个都往后看 30 天;所有区间都对 3 个月的日期分块重抽样,所有 ETF 一起,从不用标准差 ÷ √n。
  • 阶梯的前两行含事后信息。 它们用的是全部历史的极端线;当时可知的那一行去掉了这一点,只剩 5 次行情。
  • 看到结果之后才加入的: 阶梯里当时可知的那一行、k = 已实现波动率均值 ÷ 隐含波动率均值的形式、10–19 天这一档的突出地位,以及“亏了就加倍”这个问题(它的规则在计算它自己的结果之前写定)。

自己复现

下面的脚本用公开数据重建本页的数字,不需要账号或密钥,只有一个固定输入例外:平值隐含波动率的差值。

数据(免费,通过 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)

唯一的固定输入。 平值隐含波动率 = QVIX + 每只 ETF 一个差值:2025-10-01 至 2026-09-29 期间(本站平值隐含波动率 − QVIX)的中位数。本站的平值隐含波动率来自不公开的期权链数据,所以这六个差值直接写在脚本里:50ETF −1.79、300ETF −2.19、500ETF −0.52、创业板ETF −1.14、科创50ETF −2.02、深100ETF −1.43 点。

当时可知的特征(只用当天及之前的读数):

hist = qvix[day - 365 days : day]                      # 含当天
iv_pct = hist 中(经 2 倍标准差过滤后)<= 当天的比例    # 本站的隐含波动率分位数
last60 = qvix[-60:]                                     # 最近 60 个读数
days_since_peak = max(last60) 的位置,从当天往回数(0 = 当天;相同时取最近的)

溢价,对 t 日卖出:100 * (atm_iv[t] - rv_next_30_days[t]),RV 是 (t, t + 30 个自然日] 内每个交易日收益的收盘到收盘波动率,用 √252 年化。

极端行情: QVIX ≥ 它自身的第 98 百分位(用全部历史;当时可知的那一行用 qvix.expanding(min_periods=250).quantile(0.98));相隔不到 20 个读数的越线算同一次行情;几只 ETF 的峰值相距 20 个交易日以内时算一次独立行情,结果先在它的各只 ETF 间平均。

预测形式,每个日期只用已经结束的窗口拟合:

closed = df["origin"] + pd.Timedelta(days=30) <= t
c = (iv[closed] - rv[closed]).mean()          # 隐含波动率 - c
k = rv[closed].sum() / iv[closed].sum()       # k x 隐含波动率,k = RV 均值 / IV 均值
forecast_today = max(k * iv_today, 0.01)

置信区间: 按卖出日所在的自然月做 moving-block bootstrap(移动分块自助法),每块 3 个月,2,000 次抽样,种子 11;每个统计量都由按月汇总的和重建,同一个月里的所有 ETF 一起移动。

运行:

pip install -r requirements.txt
python iv_timing.py --cache-dir data      # 只下载一次,之后几秒钟
python iv_timing.py --end none            # 包含发布之后的数据

这些 CSV 与波动率预测脚本的相同,所以一个 --cache-dir 两个脚本都能用。

本页与脚本对照。 2026 年 10 月 12 日运行,研究保存的数据和重新从 AKShare 下载的数据都试过,截至 2026 年 9 月 30 日(默认的 --end):

数字本页脚本
有分组的样本 / 日期7,631 / 2,7427,631 / 2,742
峰值:当天 / +5 / +10 / +20+13.1 / +7.1 / +6.3 / +4.0+13.1 / +7.1 / +6.3 / +4.0
第一次越线+9.2 / +8.0 / +6.0 / +4.6+9.2 / +8.0 / +6.0 / +4.6
当天可知的线(当天最差)+2.9 / +3.2 / +4.4 / +3.7(−37.8)+2.9 / +3.2 / +4.4 / +3.7(−37.8)
2015-06-29:当天 / +20;2015-08-26:当天−6 / −26;+22−6.2 / −25.8;+21.7
距峰值 0 天 / 10–19 天−1.3 / +4.3(+1.7 … +6.0)−1.3 / +4.3(+1.7 … +6.0)
全部高位 / 中位:平均,平均 ÷ 标准差+1.8,0.16 / +0.1,0.01+1.8,0.16 / +0.1,0.01
平均 ÷ 标准差的差值+0.15(−0.20 … +0.42)+0.15(−0.20 … +0.42)
k = RV 均值 ÷ IV 均值:全部 / 2020 年前 / 2021 年起0.950 / 0.954 / 0.9500.950 / 0.954 / 0.950
对“隐含波动率 − c”的 DM t;更好的网格数(log)+2.34;21 个中 21 个+2.34;21 个中 21 个
飙升惩罚:训练 / 检验 c,DM t+3.1 / +2.4,−1.59+3.1 / +2.4,−1.59

容差: 每个数字都与显示的最后一位一致。在同样的数据上,可以预期误差在 ±0.1 波动率点以内。数据提供方可能修订旧数据,--end none 会加入发布之后结束的月份;两者都会让每个数字略有变动,全部历史的极端线和行情次数也可能改变。跨式和方差的结果、亏了就加倍的头寸、其他状态变量、带截距或取 log 的预测形式,以及图表,都在完整研究里,不在脚本中。

下载脚本

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

  • iv_timing.py
  • requirements.txt

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