halo 的技术博客

返回

问题:Black-Scholes 为什么算不准崩盘保险?#

Black-Scholes(BS)是期权定价的地基,但它站在一个理想化的假设上:股价是连续的。在 BS 的世界里,价格像水流一样平滑移动,明天的价格离今天的价格不会太远,收益率严格服从正态分布。

现实不是这样。2020 年 3 月熔断、2015 年 A 股千股跌停、个股财报暴雷一夜 -20%——这些跳变(jump)在 BS 的连续路径里根本画不出来。一个连续扩散过程要走到 -20%,需要经过中间的每一个点;而现实的跳空是瞬间的、跳过中间价位的

后果很具体:BS 会系统性低估虚值期权的价格,尤其是虚值看跌期权(防崩盘的保险)。因为 BS 认为”一个月内跌 30%“的概率几乎为零,于是给这种保险定了个白菜价。但市场知道崩盘会发生,愿意为这种保险付更高的钱——这就是**波动率微笑(volatility smile)**的由来:把不同行权价的市场期权价格反解成 BS 隐含波动率,会得到一条两端翘起的曲线,而不是 BS 理论预言的水平线。

Robert Merton 1976 年给出了一个优雅的补丁——跳跃扩散模型(jump-diffusion model):在原来的连续扩散上,叠加一个泊松跳跃过程。平时价格照常连续波动,但每隔一段时间(服从泊松分布),价格会瞬间跳一下,跳幅服从对数正态分布。

dStSt=(rλk)dt+σdWt+(J1)dNt\frac{dS_t}{S_t} = (r - \lambda k)\,dt + \sigma\,dW_t + (J - 1)\,dN_t

其中 dWtdW_t 是布朗运动(连续扩散),dNtdN_t 是强度为 λ\lambda 的泊松过程(跳跃到达),JJ 是跳幅(lnJN(μJ,σJ2)\ln J \sim \mathcal{N}(\mu_J, \sigma_J^2)),k=E[J1]k = E[J-1] 是补偿项,保证漂移在风险中性下仍等于无风险利率。

纯 GBM vs 跳跃扩散样本路径

图1 把两种模型的样本路径摆在一起。左边是纯几何布朗运动(GBM),价格连续蠕动,最大的单日变动也很温和;右边是跳跃扩散,大部分时间和左边看起来一样,但时不时会有一根断崖式的竖线——那就是跳跃。注意这些跳大多向下(因为我设了 μJ=0.10\mu_J = -0.10,崩盘偏向),这正是股票市场的真实特征:跌起来比涨起来更快更狠

跳跃如何制造肥尾与左偏#

BS 假设收益正态,但真实收益是**尖峰厚尾(leptokurtic)**的:中间比正态更尖(大部分日子波动很小),两端比正态更肥(极端日子远比正态预测的频繁)。跳跃扩散能自然地生成这个特征。

我用固定种子模拟 4 万条路径、每条 252 个交易日,统计日对数收益的分布:

收益分布肥尾

图2 左用对数纵轴画收益直方图——对数轴是看尾部的关键,线性轴会把尾部压成看不见的一条线。纯 GBM(蓝)的尾部干净利落地掉下去,跳跃扩散(红)的尾部则明显厚一截、拖得更远,尤其左侧(崩盘方向)。

图2 右是分位-分位图(QQ 风格):如果两个分布相同,点会落在 45° 对角线上。实际曲线在两端明显偏离对角线并向外弯——跳跃扩散的极端分位数远比 GBM 更极端。

数字最直接:同样的年化波动率下,纯 GBM 的峰度是 0(正态基准),跳跃扩散的峰度飙到 140.93,偏度是 -6.24。 这就是跳跃的贡献:它没有改变”平均波动多大”,但彻底改变了”极端事件多频繁、多偏向一侧”。这也是为什么只看年化波动率(标准差)会严重误判尾部风险——标准差对跳跃几乎无感,峰度和偏度才是崩盘风险的探测器

解析级数解:把跳跃次数拆开来算#

Merton 最漂亮的贡献不只是模型,还有闭式解。他的洞察是:在给定”未来发生了 n 次跳跃”的条件下,跳跃扩散退化成一个参数调整过的 Black-Scholes。于是总价格就是对所有可能的跳跃次数 nn(服从泊松分布)加权求和:

CMerton=n=0eλT(λT)nn!  CBS(S,K,rn,σn,T)C_{\text{Merton}} = \sum_{n=0}^{\infty} \frac{e^{-\lambda' T}(\lambda' T)^n}{n!}\; C_{\text{BS}}(S, K, r_n, \sigma_n, T)

其中每一项的等效波动率 σn=σ2+nσJ2/T\sigma_n = \sqrt{\sigma^2 + n\sigma_J^2/T}(跳得越多,等效波动越大),等效利率 rnr_n 也随 nn 调整,λ=λ(1+k)\lambda' = \lambda(1+k)

ATM 看涨期权:Merton 定价 11.74,BS 定价 9.41——跳跃让期权贵了 2.32 块,约 25%。 这 2.32 块就是市场为”崩盘可能性”额外收的保险费。BS 看不见跳跃,于是把这笔钱漏算了。

波动率微笑:模型的试金石#

一个跳跃扩散模型是否抓住了真实市场,最直接的检验是:用它算出的期权价格,反解成 BS 隐含波动率,能不能画出一条微笑曲线?

波动率微笑

图3 给出答案。灰色虚线是 BS 的世界——无论行权价多少,隐含波动率都等于扩散波动率 20%,是一条平线。而 Merton 价格反解出的隐含波动率(红色)是一条两端翘起的微笑:虚值看跌区(左侧,K/S < 1)的隐含波动率 28%,明显高于 ATM 的 26%,右侧虚值看涨区也翘起来。

蓝色曲线把跳跃波动 σJ\sigma_J 调大 1.8 倍——微笑更深、更陡。这印证了机制:跳跃的幅度和频率越大,市场对极端行权价的定价越贵,微笑就越翘。

这条微笑不是硬凑出来的,而是跳跃扩散内生产生的。这就是 Merton 模型的历史地位:它是第一个能从第一性原理解释波动率微笑的模型,也是后续所有随机波动率模型(Heston、SABR 等)的思想源头。

对抗式检验:我怀疑过的四件事#

一个能同时解释肥尾、左偏、微笑的模型,很容易让人产生”太完美了”的警惕。我对它做了四项对抗式检验,全部通过。

对抗式检验

图4a:蒙特卡洛与解析解互验。 解析级数解和蒙特卡洛模拟是两条完全独立的计算路径,如果其中一个有 bug,两者不会重合。我用不同路径数跑蒙特卡洛定价 ATM 看涨,随着路径数增加,价格连同 95% 置信区间稳稳收敛到解析解 11.74(20 万路径时 11.71,落在误差带内)。两条独立路径重合,是”代码没写错”最强的证据。

图4b:关掉跳跃,Merton 必须退化为 BS。 这是模型的一致性红线。我把跳跃强度 λ\lambda 从 3 逐步降到 0,Merton 价格平滑下降,λ=0\lambda = 0 时精确落在 BS 基准 9.41 上。如果 λ=0\lambda=0 时 Merton 不等于 BS,说明补偿项或级数写错了。它精确退化,说明模型在极限情形下自洽。

图4c:跳跃越密,左尾保险越贵。 我扫描 λ\lambda 从 0 到 3,看 ATM(K=100)和虚值看跌区(K=85)的隐含波动率如何变化。两者都随 λ\lambda 上升,但虚值看跌区涨得更快、更高——跳跃越频繁,防崩盘保险越贵,微笑越翘。这与经济直觉完全一致:崩盘越可能,左尾保险越值钱。

图4d:泊松级数几项即收敛。 无穷级数在代码里必须截断,截多少项才够?我画出价格随截断项数的变化:λT\lambda T 不大时(这里 λT=1\lambda T = 1),级数几项就收敛,前 5 项和前 25 项的差已小到看不见。这说明 60 项的截断远远够用,数值上是安全的。

三段式总结#

A. 实现细节#

  • 模型设定:风险中性下的 Merton 跳跃扩散,S0=100S_0=100r=3%r=3\%、扩散波动 σ=20%\sigma=20\%、跳跃强度 λ=1\lambda=1 次/年、跳幅对数正态 μJ=10%\mu_J=-10\%(崩盘偏向)、σJ=15%\sigma_J=15\%T=1T=1 年。固定种子 20260801
  • 两条独立定价路径:(1) Merton 1976 解析级数解,按泊松权重对参数调整后的 BS 价格加权求和,截断 60 项;(2) 蒙特卡洛路径模拟,每步扩散项 + 泊松跳(一步内可多跳,跳幅方差随跳数线性放大),252 步离散。两者互验。
  • 隐含波动率反解:对每个行权价的模型价格用二分法反解 BS 隐含波动率,误差容限 1e-6,得到波动率微笑曲线。
  • 分布统计:4 万条路径的日对数收益汇总,计算峰度、偏度,与纯 GBM 对照。

B. 已知偏差#

  • 跳跃参数是外生给定的:本文直接设定 λ,μJ,σJ\lambda, \mu_J, \sigma_J,没有从市场期权价格校准。真实应用中这些参数要从波动率曲面反推,校准本身是个不适定问题——扩散波动、跳跃频率、跳幅三者对期权价格的影响会互相纠缠,不同参数组合可能拟合出相近的曲面。
  • 常数跳跃强度的局限:Merton 假设 λ\lambda 恒定,但真实市场的跳跃是簇发的(危机期间跳跃扎堆,平静期几乎没有)。这需要 Hawkes 自激过程或状态切换来建模,本文的常数强度会低估危机期的尾部风险。
  • 跳跃独立于扩散的假设:模型假设跳跃过程与扩散过程独立,但现实中跳跃常伴随波动率飙升(跳完之后波动加大)。这需要 Bates 模型(Heston 随机波动 + 跳跃)才能刻画,Merton 的常数扩散波动是简化。
  • 风险中性 vs 真实测度:本文全程在风险中性测度下定价,跳跃风险的市场价格(jump risk premium)被吸收进补偿项。真实世界的跳跃频率和跳幅与风险中性下的可能差很多,这也是虚值看跌期权长期偏贵(保险溢价)的来源。

C. 结果解读#

  • 跳跃是尾部风险的正确语言:图2 的峰度从 0 到 140 说明,在同样的波动率下,有没有跳跃是两个完全不同的风险世界。只用标准差/年化波动来衡量风险(如经典 VaR、夏普率)会系统性漏掉跳跃风险。任何涉及尾部的应用——组合保险、期权做市、极端风险对冲——都必须用跳跃扩散或更复杂的模型,用 BS/GBM 会低估崩盘概率一个数量级。
  • 微笑是模型对不对的判决书:图3 说明,一个期权定价模型好不好,不看它能不能拟合 ATM 期权(那太容易了),而看它能不能内生地产生波动率微笑。BS 产生平线(错),Merton 产生微笑(对)。这是量化里一个通用的判据:模型必须在结构上产生市场观察到的定型化事实(stylized facts),而不是靠参数硬凑。
  • 那 2.32 块钱的经济学含义:Merton 比 BS 贵的 2.32 块(ATM 看涨),本质是市场为”价格会跳”这件事收的费。做期权卖方(收取权利金)如果用 BS 定价,会系统性低估自己卖出的保险的真实成本,在崩盘来临时被跳跃扫仓。2018 年 2 月的 XIV(做空波动率 ETN)一夜归零,就是长期卖出尾部保险、用连续模型低估跳跃风险的经典教训。
  • Merton 是承前启后的枢纽:它上接 BS(λ=0\lambda=0 时退化),下启所有带跳跃/随机波动的现代模型(Bates、Kou 双指数跳跃、Hawkes 跳跃)。理解 Merton,是理解”为什么真实期权市场长这样”的第一把钥匙。
  • 适用边界:Merton 适合定价受跳跃主导的资产——个股(财报跳空)、加密货币(24 小时无熔断的剧烈跳变)、事件驱动标的。它对纯指数、大盘、低波动品种可能过度参数化(跳跃不明显时 BS 已够用)。用之前先看资产的收益峰度:峰度显著大于 3,才值得上跳跃模型。
Merton 跳跃扩散模型:给期权定价补上『崩盘』这一课
https://blog.halo26812.eu.org/blog/merton-jump-diffusion-model
Author halo
Published at 2026年8月1日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨