第11章:跳跃扩散模型:Merton模型、Kou模型在微笑定价中的应用
聊到波动率微笑,咱们得面对一个现实——Black-Scholes模型假设资产价格连续变化,可真实市场里,价格经常“跳”一下。比如财报发布、央行加息、黑天鹅事件,这些瞬间的跳跃,BS模型根本抓不住。
我个人习惯把跳跃扩散模型看作是BS模型的“补丁”。它承认价格大部分时间在随机游走,但偶尔会来一次“蹦极”。这种思路,说白了就是给期权定价模型装上了一个“突发事件处理模块”。
为什么需要跳跃扩散模型?
你想想看,BS模型隐含波动率曲线为什么是微笑形状?
原因很简单——市场在告诉BS模型:“你的假设不对!”
BS模型假设价格服从几何布朗运动,收益率是正态分布。但真实数据呢?尖峰厚尾,左右不对称。尤其是深度虚值和深度实值期权,BS模型定价偏差很大。
我在项目中遇到过一件事:某次财报前,我尝试用BS模型给跨式期权定价,结果发现隐含波动率曲面出现了明显的“偏斜”。后来换成Merton模型,定价误差直接缩小了30%。
跳跃扩散模型的核心思想就是:把价格变化拆成两部分——
- 连续部分:常规的扩散运动(BS模型那套)
- 跳跃部分:离散的、随机发生的价格突变
这样一来,模型就能捕捉到“厚尾”和“偏斜”现象了。
Merton模型:跳跃服从正态分布
Merton模型是跳跃扩散模型的鼻祖。它假设跳跃的幅度服从正态分布,跳跃次数服从泊松过程。
公式长这样:
dS/S = (μ - λκ)dt + σdW + (J-1)dN
其中:
- λ:跳跃强度(平均每年跳几次)
- κ:平均跳跃幅度
- J:跳跃幅度因子(对数正态分布)
- dN:泊松过程(0或1)
嗯,这里要注意——Merton模型假设跳跃幅度是对称的,正跳和负跳的概率一样。这在实际市场中并不完全成立。
我曾经用Merton模型给标普500指数期权定价,发现它虽然能拟合出微笑曲线,但对深度虚值看跌期权的定价还是偏低。为什么?因为市场下跌时的跳跃幅度往往比上涨时更大,Merton模型没考虑这个不对称性。
Merton模型定价公式(欧式看涨期权):
C(S,t) = Σ_{n=0}^{∞} [e^{-λ'(T-t)} (λ'(T-t))^n / n!] × C_BS(S, K, σ_n, r_n, T-t)
其中:
- λ' = λ(1+κ)
- σ_n² = σ² + nδ²/(T-t)
- r_n = r - λκ + nln(1+κ)/(T-t)
- δ:跳跃幅度的标准差
说白了,Merton模型就是把BS价格按跳跃次数做了加权平均。跳跃次数越多,隐含波动率越高,这就产生了微笑效应。
Kou模型:双指数跳跃分布
Kou模型是Merton模型的升级版。它最大的改进是——跳跃幅度不再对称,而是用双指数分布来描述。
双指数分布长这样:
f_J(y) = p × η₁ × e^{-η₁ y} × I_{y≥0} + (1-p) × η₂ × e^{η₂ y} × I_{y<0}
其中:
- p:向上跳跃的概率
- η₁:向上跳跃的衰减速度
- η₂:向下跳跃的衰减速度
这个设计很巧妙。η₁和η₂不一样,就能产生偏斜。如果η₂ > η₁,说明向下跳跃的幅度更大、更陡,这正好对应了市场恐慌时的“暴跌”特征。
我记得有一次做VIX指数期权定价,Kou模型的表现明显优于Merton模型。因为VIX在恐慌时飙升的幅度远大于平稳时的下跌幅度,这种不对称性,Kou模型抓得很准。
实战小技巧:
参数估计时,我建议用MLE(最大似然估计)配合历史收益率数据。跳跃强度λ通常取值在0.5-2之间,具体看标的资产的波动特性。个股的跳跃频率比指数高,因为公司有财报、并购等事件。
两种模型的对比
| 特征 | Merton模型 | Kou模型 |
|---|---|---|
| 跳跃幅度分布 | 正态分布(对称) | 双指数分布(不对称) |
| 偏斜能力 | 弱(只能产生微笑) | 强(能产生偏斜) |
| 解析解 | 有(无穷级数) | 有(拉普拉斯变换) |
| 计算速度 | 较快 | 中等 |
| 适用场景 | 指数期权、外汇期权 | 个股期权、事件驱动型标的 |
从表格能看出来,Kou模型在拟合偏斜方面更有优势。但Merton模型计算更简单,适合做快速定价。
在微笑定价中的应用
跳跃扩散模型怎么解决微笑问题?
核心逻辑是这样的:
- 短期期权:跳跃事件对短期期权影响更大。因为时间短,连续扩散的贡献小,跳跃的贡献占比高。所以短期期权的隐含波动率曲线更陡峭。
- 长期期权:时间拉长,连续扩散的累积效应会“抹平”跳跃的影响。长期期权的微笑曲线相对平缓。
- 虚值期权:深度虚值期权对跳跃特别敏感。因为只有发生大幅跳跃,虚值期权才能变成实值。所以跳跃扩散模型能更好地定价虚值期权。
我曾经用Kou模型给某科技股的期权做定价,发现它对深度虚值看跌期权的定价误差只有BS模型的1/3。原因就是该股票历史上出现过几次暴跌,Kou模型的双指数分布正好抓住了这个特征。
避坑指南:
我曾经犯过一个错误——直接用历史数据估计跳跃参数,然后用于定价。结果发现模型在样本外表现很差。后来才意识到,跳跃参数需要做“风险中性”调整。历史参数是真实世界的,定价需要的是风险中性世界的参数。两者之间差一个“跳跃风险溢价”。
核心知识体系
下面这张图展示了跳跃扩散模型在微笑定价中的整体逻辑:
从这张图能看出来,跳跃扩散模型的核心价值在于——它给BS模型增加了一个“跳跃维度”。Merton模型适合对称的微笑,Kou模型适合不对称的偏斜。实际应用中,我建议先画一下隐含波动率曲线,看看是微笑还是偏斜,再选模型。
实战中的参数校准
参数校准是跳跃扩散模型最头疼的部分。我分享一个我常用的流程:
- 收集数据:至少3年的日度收益率数据,加上期权市场报价
- 初步估计:用MLE估计跳跃参数(λ, μ_J, σ_J 或 p, η₁, η₂)
- 期权校准:用市场期权价格反推风险中性参数
- 验证:检查模型定价误差是否在可接受范围内
嗯,这里有个坑——跳跃参数和扩散参数之间存在“识别问题”。什么意思?就是同样的价格路径,可能由不同的参数组合生成。我建议固定扩散波动率(比如用历史波动率),只校准跳跃参数,这样更稳定。
代码示例:Merton模型欧式看涨期权定价(Python)
import numpy as np
from scipy.stats import norm
def merton_call(S, K, T, r, sigma, lam, mu_j, sigma_j, n_max=50):
"""
Merton跳跃扩散模型欧式看涨期权定价
S: 标的价格
K: 行权价
T: 到期时间
r: 无风险利率
sigma: 扩散波动率
lam: 跳跃强度
mu_j: 跳跃幅度均值
sigma_j: 跳跃幅度标准差
"""
# 风险中性调整
kappa = np.exp(mu_j + 0.5 * sigma_j**2) - 1
lam_prime = lam * (1 + kappa)
price = 0
for n in range(n_max):
# 调整后的参数
sigma_n = np.sqrt(sigma**2 + n * sigma_j**2 / T)
r_n = r - lam * kappa + n * np.log(1 + kappa) / T
# BS价格
d1 = (np.log(S/K) + (r_n + 0.5 * sigma_n**2) * T) / (sigma_n * np.sqrt(T))
d2 = d1 - sigma_n * np.sqrt(T)
bs_price = S * norm.cdf(d1) - K * np.exp(-r_n * T) * norm.cdf(d2)
# 泊松权重
poisson_prob = np.exp(-lam_prime * T) * (lam_prime * T)**n / np.math.factorial(n)
price += poisson_prob * bs_price
return price
这段代码我用了很多次。注意n_max取50就够用了,因为泊松权重衰减很快。如果T很短(比如几天),n_max取10都行。
总结一下
跳跃扩散模型是解决波动率微笑问题的利器。Merton模型简单实用,适合对称微笑;Kou模型更灵活,能处理偏斜。实际交易中,我建议先用Kou模型做主力,因为它对市场情绪的刻画更细腻。
最后提醒一句——模型再好,也要结合市场经验。参数校准不是一劳永逸的,市场结构变了,参数也得跟着调。我每周都会重新校准一次参数,确保模型跟得上市场节奏。
公众号:蓝海资料掘金营,微信deep3321