halo 的技术博客

返回

大多数人看期权只看一个数:隐含波动率(IV)。但一个 IV 只是把整条价格曲线压成一个标量,丢掉了最值钱的信息——市场对到期日标的价格的完整概率分布预期。这个分布里,藏着市场对崩盘的定价。

结论先放这:给定同一到期日、一整排不同行权价的看涨期权价格 C(K),你不需要任何分布假设,就能把市场心中对到期日标的价格的风险中性密度 q(S_T) 直接「解」出来。Breeden-Litzenberger(1978) 证明它就是看涨期权价格对行权价的二阶导乘以贴现因子:

q(S_T = K) = e^{rT} · d²C/dK²
plaintext

这不是估计、不是拟合,是一个精确的数学恒等式。 合成 BS + 波动率微笑的实验里,含微笑反推出的密度偏度 −1.10(明显肥左尾),而 BS 常数波动率假设下反推的密度偏度 +0.34(对数正态、右偏)。更直接的对比:市场预期 P(S_T<80)(跌 20%)=9.17%,是常数 IV 假设的 5.74% 的 1.6 倍;P(S_T<70)(跌 30%)=4.84%,是常数 IV 的 0.58% 的 8.3 倍——波动率微笑不是曲线好看,它是市场把崩盘概率明码标价搬到了左尾。附完整 Python 与六类真实陷阱(高阶)。

风险中性密度:微笑把概率质量搬到左尾

一、为什么一个隐含波动率远远不够#

Black-Scholes 假设标的服从几何布朗运动,波动率是常数。这个假设的直接推论是:同一到期日、所有行权价的期权,反解出来的隐含波动率应该完全一样——画出来是一条水平线。

但 1987 年股灾之后,真实市场的 IV 曲线永远不是水平线。股指期权尤其明显:行权价越低(越是虚值看跌期权),隐含波动率越高。画出来是一条向左上翘的曲线,业界叫「波动率偏斜(skew)」或「波动率微笑(smile)」。

波动率微笑:OTM 看跌期权 IV 系统性更高

这条曲线的经济含义很直白:市场愿意为「保护下跌」的看跌期权付更高的价钱。翻译成分布语言就是——市场认为标的价格的真实分布,左尾比对数正态更肥。一个平值 IV 数字完全捕捉不到这件事,你必须把整条曲线的信息榨出来。

二、Breeden-Litzenberger 恒等式的直觉#

先看看涨期权的定价公式(风险中性测度下):

C(K) = e^{-rT} · E[max(S_T − K, 0)] = e^{-rT} · ∫_K^∞ (S_T − K) q(S_T) dS_T
plaintext

其中 q(S_T) 就是我们想要的风险中性密度。现在对 K 求一阶导(用 Leibniz 积分法则):

dC/dK = e^{-rT} · ∫_K^∞ (−1) q(S_T) dS_T = −e^{-rT} · [1 − Q(K)]
plaintext

这里 Q(K) 是累积分布函数。看涨期权价格对行权价的一阶导,正比于「负的生存概率」。再求一次导:

d²C/dK² = e^{-rT} · q(K)
plaintext

移项就得到 Breeden-Litzenberger 恒等式:

q(K) = e^{rT} · d²C/dK²
plaintext

这是一个精确恒等式,不依赖任何分布假设。 只要你有一整排连续的 C(K),就能把市场的风险中性密度直接解出来。一阶导给你 CDF,二阶导给你 PDF。

期权价格对 K 是单调下降且凸的,凸性正好对应二阶导为正(密度非负):

看涨期权价格对 K 单调下降且凸

三、用 Python 从零反推密度#

先写自包含的 Black-Scholes 看涨定价(不依赖 scipy),并构造一条左偏的波动率微笑:

然后是核心的 Breeden-Litzenberger 反推——用数值二阶差分:

trapz = getattr(np, "trapezoid", np.trapz)   # NumPy 2.x 兼容

def rn_density(Cvals, Kvals, r, T):
    d2 = np.gradient(np.gradient(Cvals, Kvals), Kvals)  # d²C/dK²
    q = np.clip(np.exp(r*T) * d2, 0, None)              # 密度非负
    return q / trapz(q, Kvals)                           # 归一化

q_smile = rn_density(C_smile, K, r, T)
q_flat  = rn_density(C_flat,  K, r, T)
python

就这么几行。np.gradient 连用两次就是二阶导,乘以贴现因子、裁掉数值噪声导致的微小负值、再归一化,一条风险中性密度就出来了。

四、微笑到底把概率搬去了哪里#

把两条密度画在一起,差异一目了然:

  • 常数 IV(BS 假设):反推出来的是标准对数正态密度,右偏(偏度 +0.34),左尾很薄;
  • 含微笑:反推出来的密度偏度 −1.10,左尾被显著拉肥、右尾被压薄,众数向右移。

两条密度的均值几乎相同(100.88 vs 100.89,都约等于远期价格,这是无套利约束的体现),标准差也接近(13.95 vs 14.14)。差别全在形状——微笑不改变期望,它把概率质量从右尾和中心搬到了左尾。

量化这个「搬运」,看不同下跌幅度的到期概率:

市场预期的下跌概率:微笑把尾部风险显性化

事件含微笑密度常数 IV 密度倍数
P(S_T<85)(跌 15%)12.2%11.0%1.1×
P(S_T<80)(跌 20%)9.17%5.74%1.6×
P(S_T<75)(跌 25%)6.73%2.10%3.2×
P(S_T<70)(跌 30%)4.84%0.58%8.3×

规律很清楚:跌幅越大,微笑与常数 IV 的分歧越夸张。 温和下跌(15%)两者差不多,但到了极端崩盘(30%),BS 常数波动率认为几乎不可能(0.58%),而市场真实定价是它的 8 倍多(4.84%)。这就是为什么用单一 ATM 波动率做尾部风险管理会系统性地低估崩盘——你用的是错的分布。

五、这东西能拿来做什么#

风险中性密度不是学术摆设,它有几个非常实在的用途:

  1. 尾部风险监控:从当下期权链实时反推 q(S_T),追踪 P(S_T < 0.9·S0) 这类崩盘概率的时间序列。它比 VIX 更细——VIX 只是密度的二阶矩汇总,密度是完整形状。
  2. 事件定价拆解:财报、FOMC、大选前后,反推密度常出现双峰(bimodal),直接读出市场对「利好/利空」两种情景的概率与幅度。
  3. 相对价值:把风险中性密度和你自己的真实测度(P 测度)预期对比,差异就是风险溢价——如果市场把左尾定得比你认为的更肥,卖尾部保险可能有超额收益(反之则买)。
  4. 组合压力测试:直接用市场隐含的 q(S_T) 作为情景分布,比用历史模拟或正态假设更贴近市场当下的真实预期。

六、六类真实陷阱(高阶)#

陷阱一:离散行权价 + 报价噪声会让二阶导炸成锯齿。 真实期权链的行权价是离散的(间隔 5 或 10 点),且买卖价差、非同步报价会污染 C(K)。直接对含噪的离散 C(K) 做二阶差分,出来的密度是剧烈震荡甚至负值。实务里必须先在 IV 空间做平滑(对 IV 曲线拟合样条或 SVI 参数模型),再用平滑后的 IV 重算 C(K),最后才求二阶导。本文用解析微笑函数所以干净,真实数据没这运气。

陷阱二:负密度不是 bug,是套利违约的信号。 如果反推出来某处 q(K)<0,说明你的 C(K) 曲线违反了「蝶式无套利」约束(C(K−h)−2C(K)+C(K+h)≥0)。这时不能简单裁成 0,而应回头检查数据或用带无套利约束的拟合(如 SVI 的 no-butterfly-arbitrage 参数域)。裁 0 只是掩盖问题。

陷阱三:尾部靠外推,外推假设决定尾部概率。 交易所只挂有限行权价范围(比如 70~130),但密度的极端尾部(S_T<60 或 >150)落在挂牌范围之外。这部分只能靠外推,而外推假设(对 IV 做线性/常数/GPD 延拓)会直接决定你算出来的极端崩盘概率。报告尾部概率时必须说明外推方法,否则数字不可比。

陷阱四:这是风险中性密度,不是真实概率。 q(S_T) 是 Q 测度下的密度,它已经包含了风险溢价——市场厌恶下跌,所以给左尾定的价(隐含概率)高于真实世界(P 测度)会发生的概率。直接把 q 当「市场认为崩盘的真实概率」是错的,它是「市场愿意为对冲崩盘付的价格所隐含的概率」。要转成 P 测度需要一个定价核(pricing kernel)假设。

陷阱五:远期价格约束是校验密度的免费检查项。 无套利要求 ∫ S_T·q(S_T)dS_T = S0·e^{rT}(密度的均值等于远期价格)。本文两条密度均值都是 ~100.88 ≈ 100·e^{0.02·0.5}=100.99(微小偏差来自数值离散与截断)。每次反推完都用这个恒等式自检,均值对不上说明数据或数值有问题。

陷阱六:股息与美式期权会破坏干净的恒等式。 Breeden-Litzenberger 推导用的是欧式期权 + 无股息(或连续股息)。个股期权多是美式,且有离散股息,早行权溢价和股息缺口会让 C(K) 不再是纯欧式价格,二阶导反推的密度会带偏。指数期权(多为欧式、股息连续)是这套方法最干净的应用场景,个股要先做美式→欧式的近似修正。

七、诚实结论#

Breeden-Litzenberger 是「把期权价格的全部信息榨成一条分布」的标杆方法:看涨期权价格对行权价的二阶导乘以贴现因子,就是市场心中的风险中性密度,一个精确恒等式,不需要任何分布假设。合成实验里,波动率微笑反推的密度偏度 −1.10、P(S_T<70)=4.84%(常数 IV 的 8.3 倍),把市场对崩盘的定价显性地摊在左尾——这是任何单一隐含波动率数字都表达不出来的信息。

落到实盘,先过 IV 空间平滑、蝶式无套利约束、尾部外推方法、Q 测度≠P 测度、远期价格自检、股息与美式修正 这六关。最有用的姿势:把从期权链反推的 P(S_T < 0.9·S0) 做成时间序列日更监控——它比 VIX 更早、更细地告诉你「市场正在为多大的崩盘付钱」。

注:全文数据为自洽合成(Black-Scholes 定价 + 指定左偏波动率微笑函数,确定性网格)。所有密度、偏度、尾部概率均由文中 Python 逻辑真实计算。真实复现请用实际期权链,并对 IV 平滑、无套利约束、尾部外推与股息修正逐一做稳健性检验。

Breeden-Litzenberger 隐含风险中性密度:从期权价格反推市场预期的崩盘
https://blog.halo26812.eu.org/blog/breeden-litzenberger-implied-density
Author halo
Published at 2026年7月15日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨