halo 的技术博客

返回

“财报明天出,波动肯定大,买个跨式吧。”

这是散户期权账户里最常见的一句自我说服,也是最贵的一句。它把一个需要三重条件同时成立的交易,简化成了一个只需要”会波动”的直觉。

结论先放这:买事件跨式,你赌的不是”会不会动”,是”动得比市场已经收你钱的幅度更多”。 而这两件事之间,隔着一条被隐含波动率、剩余时间价值和买卖价差共同定价出来的盈亏平衡带。本文用 4000 次事件蒙特卡洛把这条带精确算出来:财报前一天买入 3 天期平值跨式,权利金 5.51 元、真实盈亏平衡带 ±5.40%,而实际移动能穿出这条带的只有 27.0% —— 平均回报 -17.0%、胜率 25.9%。所有数字均由下文 Python 真实计算,非占位图。

盈亏平衡带与实际移动分布的对照:红色带内为亏损区,绿色直方图为实际移动的概率密度

一、先把「跨式」这件事说清楚#

跨式组合(straddle)= 同时买入相同行权价、相同到期日的一份看涨和一份看跌。到期损益是一个 V 字:

Payoff=STKPremium\text{Payoff} = |S_T - K| - \text{Premium}

标的往哪边走都行,只要走得够远。这个”够远”就是盈亏平衡点:STK>Premium|S_T - K| > \text{Premium}

看起来很美好——不用判断方向。但注意这个式子的右边:Premium 不是常数,它是市场根据预期波动定出来的价格。 事件越大,权利金越贵,你需要的移动就越远。市场不会免费送你一张”随便怎么动我都赚”的彩票。

本文的基准设定:

  • 标的价 100 元,平值行权价 100 元
  • 事件外的扩散波动率 30%(年化)
  • 市场隐含的事件跳跃幅度 6.0%(标准差口径)
  • 财报前 1 个交易日建仓,财报后还剩 2 个交易日到期

为简化,全文设无风险利率与股息率为 0。这对 3 天期的合约几乎没有影响,但省掉了大量与主题无关的贴现项。

二、事件前的隐含波动率为什么会「爆表」#

期权的时间价值按方差累积。事件跳跃是一次性的方差注入,但报价系统只能用”年化波动率”这一个数字表达它。于是要把跳跃方差摊进剩余的年化时间里:

σpre=σd2+J2T\sigma_{\text{pre}} = \sqrt{\sigma_d^2 + \frac{J^2}{T}}

代入 σd=30%\sigma_d = 30\%J=6%J = 6\%T=3/252T = 3/252

import numpy as np

SIG_D, J_IMPL, TD = 0.30, 0.060, 252
T_total = 3 / TD
sig_pre = np.sqrt(SIG_D**2 + J_IMPL**2 / T_total)
print(f"事件前隐含波动率: {sig_pre*100:.1f}%")   # 62.6%
python

62.6%。 一只平常波动 30% 的股票,财报前的短期期权 IV 会翻一倍以上。

这不是市场疯了,是分母太小。TT 只有 3 天,把 6% 的跳跃摊进去,年化后自然爆表。这也解释了为什么”财报后 IV 暴跌”是必然而非意外——事件一过,J2/TJ^2/T 这一项直接消失,IV 塌回 30% 附近。IV crush 不是风险,是合约条款。

这里有个关键推论:看到 IV 高就说”期权贵”是错的。 62.6% 的 IV 对应的是一次真实存在的 6% 跳跃预期。它贵不贵,取决于实际跳跃会不会超过 6%,而不取决于 62.6% 这个数字本身相对历史 30% 有多高。

三、盈亏平衡带:两条线,别用错#

用 Black-Scholes 给这个跨式定价:

权利金 5.45 元(每 100 元名义)。到期口径的盈亏平衡是 ±5.45%。

但这条线不是你实际面对的那条。事件在到期前 2 天发生,平仓时合约还剩 2 天时间价值。真实的盈亏平衡是解这个方程:

V(S1, Tresid, σd)=PremiumV(S_1,\ T_{\text{resid}},\ \sigma_d) = \text{Premium}

T_resid = 2 / TD
grid = np.linspace(0, 0.20, 40001)
val = bs_straddle(100 * (1 + grid), 100, T_resid, SIG_D)
be_true = grid[np.argmin(np.abs(val - cost))]
print(f"真实盈亏平衡: ±{be_true*100:.2f}%")   # ±5.40%
python

±5.40%,比到期口径的 ±5.45% 只窄了 0.05 个百分点

这个结果本身值得停下来看一眼。事件后剩余的平值时间价值有 2.13 元,占权利金的 39%,听上去应该大幅拉近盈亏平衡点才对。但没有——因为盈亏平衡发生在标的移动 5.4% 之后,那时期权已经深度实值/虚值,时间价值在偏离平值时衰减得极快。你能拿回的残余时间价值,恰恰在你需要它的位置上所剩无几。

实务教训:不要用”我还剩几天时间价值”来安慰自己。 时间价值在平值处最厚,而平值正是你亏光权利金的地方。

四、成本从哪来:一半是事件溢价#

把权利金拆开看:

cost_diffusion = float(bs_straddle(100, 100, T_total, SIG_D))   # 只有扩散波动
event_premium  = cost - cost_diffusion
print(f"扩散部分: {cost_diffusion:.2f}  事件溢价: {event_premium:.2f} "
      f"({event_premium/cost*100:.1f}%)")
# 扩散部分: 2.61  事件溢价: 2.84 (52.1%)
python

左:权利金三段拆解;右:提前建仓天数对盈亏平衡带宽与实际回报的影响

52.1% 的权利金是纯事件溢价。 你付的钱里有一多半,买的不是”这三天股票会波动”,而是”这一次财报会引发跳跃”这个具体判断。

这个拆解有直接的策略含义:如果你只是想做多波动率(认为市场整体低估了波动),你在为一个你并不持有观点的事件多付一倍的钱。做多波动率和做多事件跳跃是两笔不同的交易,事件跨式把它们捆绑销售。

五、蒙特卡洛:4000 次财报的真实账单#

现在跑模拟。关键设定:

  • 方差风险溢价:实际跳跃幅度 = 隐含跳跃 × 0.85。这是期权市场最稳健的实证规律之一——隐含波动率系统性高于实际波动率,因为卖方要求承保补偿
  • 厚尾:跳跃用自由度 5 的标准化 t 分布,而非正态。财报反应有肥尾,这是常识
  • 价差:双边合计 2%

注意 jump 那两行的鞅修正exp(logjlogE[elogj])\exp(\text{logj} - \log \mathbb{E}[e^{\text{logj}}])。少了这一步,对数正态/对数 t 的期望不等于 1,标的会凭空获得一个正漂移,跨式的看涨腿会白捡收益。这是这类模拟里最常见也最隐蔽的一个 bug。

结果:

指标数值
平均权利金回报率-17.0%
中位数回报率-37.8%
胜率25.9%
实际移动穿出盈亏平衡带的概率27.0%
5% 分位 / 95% 分位-61.4% / +92.2%
平均盈利 / 平均亏损+58.6% / -43.4%

左:单次事件回报分布,右尾长而中位数深陷负值;右:按盈利降序的累计损益曲线

右图是这个策略的性格素描:最好的 5% 事件贡献了 52.9% 的总盈利。 把它们拿掉,整条曲线转负。

这是一个典型的”彩票型”损益结构:高频小亏、低频大赚。它本身不是缺点——很多优秀策略都长这样。问题在于均值是负的。你承受了彩票的心理折磨,却没拿到彩票的正期望。

六、最反直觉的一条:公平定价下依然亏钱#

这是本文最值得记住的发现。

把方差风险溢价关掉(实际跳跃 = 隐含跳跃,VRP=1.0)、价差设成 0。理论上这应该是一场公平游戏,期望回报应该是 0。实测:

ret_fair, _ = simulate(40000, vrp=1.0, spread=0.0, seed=777)
print(f"厚尾 + 公平定价: {ret_fair.mean()*100:.2f}%")     # -4.80%

ret_norm, _ = simulate(40000, vrp=1.0, spread=0.0, fat_tail=False, seed=424242)
print(f"正态 + 公平定价: {ret_norm.mean()*100:.2f}%")     # +0.50%
python

正态跳跃下是 +0.5%(在 4 万次模拟的噪声范围内等于 0,这校验了定价引擎无偏)。厚尾跳跃下是 -4.8%。

差的这 5.3 个百分点从哪来?答案在跨式的损益函数:它赔付的是 x|x|绝对值,不是方差

而在方差被固定为相同的前提下,厚尾分布的平均绝对偏离更小

z_n = np.random.default_rng(31).standard_normal(400000)
nu = 5.0
z_t = np.random.default_rng(32).standard_t(nu, 400000) / np.sqrt(nu/(nu-2.0))
print(f"E|z| 正态 = {np.abs(z_n).mean():.4f}")      # 0.7990
print(f"E|z| t(5) = {np.abs(z_t).mean():.4f}")      # 0.7364  (低 7.8%)
python

厚尾意味着”极端值更极端”,但在总方差不变的约束下,代价是**“大多数情况下更接近中心”**。跨式在中心区域是全额亏损的。所以厚尾把概率质量从”小赚区”同时挪向了”大赚区”和”全亏区”,而后者的损失有下界(-100%)、前者的收益没有上界却概率极低——净效果是负的。

这条结论的实务价值:Black-Scholes 用方差定价,跨式买家消费的却是绝对偏离。凡是真实分布比对数正态更厚尾的标的,跨式买家就在结构性地吃亏——即使隐含波动率一点溢价都没有。 财报反应恰恰是典型的厚尾场景。

这也是对”波动率风险溢价是卖方唯一优势”这一流行说法的重要补充:卖方还有第二个优势,来自定价模型与损益函数之间的口径错配。

七、门槛在哪:VRP × 价差二维扫描#

把两个参数一起扫,看策略在什么条件下才能不亏:

实际/隐含跳跃比 × 期权买卖价差的平均回报热力图

盈亏平衡所需的”实际跳跃 / 隐含跳跃”比值:

买卖价差盈亏平衡所需比值
0%1.065
2%1.097
4%1.093
6%1.171
10%1.193

即使在零价差的理想环境下,你也需要实际跳跃比市场隐含的高 6.5% 才能打平(这 6.5% 就是上一节厚尾成本的价格表达)。加上现实中 2% 的价差,门槛升到 1.097;流动性差的合约 6% 价差,门槛 1.171

而实证告诉我们的事实恰恰相反:长期看这个比值稳定在 1 以下(本文基准取 0.85)。 这意味着买入事件跨式在长期是一个负期望策略,除非你能筛出市场系统性低估跳跃的那一小类事件。

这个门槛表就是那张”没人给你结的账单”。它把一句模糊的”财报波动大”翻译成了一个可证伪的量化条件:你必须相信这次的实际跳跃会超过隐含跳跃的 1.10 倍。 你有这个把握吗?如果没有,这笔交易的理由就不成立。

八、建仓时点:早买不划算,晚买更不划算#

扫描提前建仓天数:

提前天数盈亏平衡带宽平均回报胜率
1 天5.45%-15.7%26.3%
3 天5.85%-14.3%28.1%
8 天6.76%-11.8%32.3%
20 天8.54%-6.0%37.6%

反直觉的地方:越早建仓,平均回报反而越好(-6.0% vs -15.7%)。

原因不是早买更便宜——恰恰相反,20 天前建仓权利金 8.62 元,远高于 T-1 的 5.51 元。原因是事件溢价被稀释了J2/TJ^2/T 这一项随 TT 增大而变小,20 天期合约里事件溢价占比大幅下降,你更多地在买”普通的扩散波动”(这部分定价相对公平),而不是”高价的事件跳跃”。

这不构成”应该提前 20 天买”的建议,有三个理由:

  1. 绝对回报仍然是负的,只是没那么负
  2. 资金占用时间长 20 倍,按时间加权算更差
  3. 20 天里 IV 本身会漂移,本文的模拟没有建模这个路径风险

正确的读法是:这条曲线在诊断”事件溢价的贵”,而不是在推荐时点。 它进一步印证了第四节的结论——你付的溢价主要来自事件本身。

九、Delta 对冲救不了它#

有经验的交易者会说:“裸跨式当然烂,要做 delta 对冲的 gamma scalping。”

用配对模拟检验(同一批跳跃、同一批事件后扩散路径,只改对冲行为):

naked, hedged, _ = paired_hedge(4000, vrp=0.85, spread=0.02, n_steps=6)
python
裸多头事件后 delta 对冲
平均回报-17.0%-16.8%
回报标准差71.4%58.2%
胜率25.9%26.1%

配对模拟下裸多头与 delta 对冲的回报分布对比

波动降了 18.5%,均值纹丝不动。

原因很直接:跳跃风险按定义不可对冲。 Delta 对冲的前提是标的连续移动、你可以持续调仓。而事件跳跃是一次性的、不连续的,你在跳跃发生的瞬间无法调整任何东西。对冲只能处理事件之后那 2 天的扩散部分——而那部分本来就是公平定价的,对冲它既不创造也不消灭期望收益,只是把方差削掉一块。

这是一条重要的边界:delta 对冲是风险管理工具,不是收益转换器。 它不能把负期望变成正期望。如果一个策略的问题出在期望上,对冲只会让你更平滑地亏钱。

十、三盆冷水#

第一盆:合成跳跃分布无法代表真实财报。 本文用对称的 t(5) 生成跳跃,但真实的财报反应有明显的偏斜——不同行业、不同市值、不同的分析师覆盖度,反应形态差别巨大。更麻烦的是,真实跳跃幅度与隐含跳跃之间存在条件依赖(市场在高不确定期定价也更保守),而本文把 VRP 设成了一个常数。要做真实的事件跨式研究,必须用实际的财报窗口数据估计这个条件分布。

第二盆:IV 塌陷幅度被设成外生。 我假设事件后 IV 精确回到扩散水平 30%。现实中塌陷幅度是随机的,而且与事件结果相关——大幅意外后 IV 往往不会立刻回到常态,会有一段抬升的尾巴。这个残余 IV 对多头有利,本文的模型完全没有捕捉,因此本文的估计对多头略偏保守。这是一个诚实的方向性偏差,我倾向于把它明说而不是调参掩盖。

第三盆:A 股无法直接实施。 国内目前没有个股期权,只有 ETF 期权和股指期权。本文的框架可以迁移到”指数级事件”(如重要经济数据发布前的 50ETF 跨式),但个股财报跨式在 A 股无法直接落地。港股与美股有个股期权,框架适用,但需要重新校准 JJ 和 VRP —— 这两个参数是市场特异的,直接套用本文的 6% 和 0.85 是错的。

十一、结论#

买事件跨式,你需要三件事同时成立:

  1. 标的移动超过盈亏平衡带(本例 ±5.40%,实测概率仅 27.0%)
  2. 实际跳跃超过隐含跳跃的 1.10 倍(长期实证是 0.85)
  3. 你能承受 74% 的时间在亏钱、靠 5% 的事件养活整个组合

第 1 条是数学,第 2 条是市场结构,第 3 条是心理。三条里第 2 条最难——因为它要求你在一个卖方长期占优的市场里,系统性地识别出定价过低的事件。

这不是说事件跨式永远不能做。 它是说:做这笔交易的正当理由只有一个——你对这一次的跳跃幅度有超过市场共识的具体判断(比如你知道某个即将披露的分部数据分歧极大)。“财报要出了,波动肯定大”不是这样的判断,它只是把市场早已定价的东西重复了一遍。

而如果你的观点是”市场低估了波动”,更干净的表达方式是做多方差本身(方差互换、VIX 相关工具),而不是买一个把事件溢价和扩散波动捆绑销售、还额外向你收取厚尾错配成本的跨式组合。

波动率交易里,看对方向和赚到钱之间,隔着一张详细的账单。这篇文章就是那张账单。

跨式期权盈亏平衡带:事件驱动波动率多头的成本核算
https://blog.halo26812.eu.org/blog/straddle-breakeven-event-vol
Author halo
Published at 2026年7月31日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨