第11章:随机波动率模型:Heston模型在曲面中的应用
说实话,做期权交易这么多年,我最头疼的就是波动率微笑的形态变化。BS模型假设波动率是常数,这在实际市场中根本站不住脚。你想想看,虚值看跌期权的隐含波动率往往比平值高出一大截,这种现象BS模型完全解释不了。
后来我接触到Heston模型,才算是找到了一个比较靠谱的工具。它把波动率本身也当作一个随机过程来处理,说白了就是「波动率的波动率」。今天我就把我在实盘中用Heston模型拟合波动率曲面的经验,掰开揉碎了讲给你听。
11.1 Heston模型的核心思想
Heston模型的核心假设其实很简单:资产价格和波动率是相互影响的随机过程。它用两个随机微分方程来描述:
dS = μS dt + √v S dW₁
dv = κ(θ - v) dt + σ√v dW₂
dW₁ · dW₂ = ρ dt
这里v就是瞬时方差率,也就是波动率的平方。我个人习惯把κ叫做「均值回复速度」,θ是长期方差均值,σ是波动率的波动率,ρ是价格和波动率的相关系数。
嗯,这里要注意:ρ这个参数特别关键。ρ为负时,价格下跌波动率上升,这就是我们常说的「杠杆效应」。我在2018年做美股波动率交易时,就吃过这个参数的亏——当时没校准好ρ,导致曲面拟合偏差很大。
关键参数速查表
| 参数 | 含义 | 典型范围 |
|---|---|---|
| κ | 均值回复速度 | 1-5 |
| θ | 长期方差均值 | 0.01-0.05 |
| σ | 波动率的波动率 | 0.1-0.5 |
| ρ | 价格-波动率相关性 | -0.8到-0.3 |
| v₀ | 初始方差 | 0.01-0.04 |
11.2 为什么Heston能拟合曲面?
BS模型只能给出一个平坦的波动率曲线,而Heston模型能产生微笑和偏斜。原因在于:
- ρ控制偏斜方向:ρ为负时,虚值看跌期权波动率更高,形成左偏斜
- σ控制微笑曲率:σ越大,微笑越明显
- κ和θ控制长期水平:决定波动率曲面的整体高度
我曾经用Heston模型拟合过2019年标普500的波动率曲面,效果比BS模型好太多了。特别是期限结构这块,Heston能自然生成波动率期限结构的均值回复特征——短期波动率可能很高,但长期会回归到θ附近。
11.3 曲面拟合的实战流程
在实际交易中,我一般按以下步骤操作:
- 获取市场数据:收集不同行权价和到期日的期权报价
- 计算隐含波动率:用BS模型反推出每个期权的IV
- 设定目标函数:最小化模型价格与市场价格的差异
- 参数校准:用优化算法找到最优的κ、θ、σ、ρ、v₀
- 验证拟合效果:检查残差是否随机分布
这里我踩过一个坑:直接用最小二乘法拟合所有参数,结果经常陷入局部最优。后来我改用两步法——先固定κ和θ,优化σ和ρ,再整体微调。效果好了很多。
我的小技巧:校准Heston模型时,建议使用「加权最小二乘法」。把平值期权的权重设高一些,因为平值期权流动性最好,报价也最可靠。我曾经试过等权重拟合,结果曲面在两端严重扭曲。
11.4 代码实现:Heston模型定价
下面是我常用的Heston模型定价代码。它用特征函数方法计算欧式期权价格:
import numpy as np
from scipy.integrate import quad
def heston_price(S, K, T, r, kappa, theta, sigma, rho, v0, option_type='call'):
"""
Heston模型欧式期权定价
S: 标的价格
K: 行权价
T: 到期时间
r: 无风险利率
kappa: 均值回复速度
theta: 长期方差
sigma: 波动率的波动率
rho: 相关系数
v0: 初始方差
"""
def characteristic_function(u, j):
# 特征函数实现(略去详细推导)
# 实际项目中我用的是封闭解
pass
def integrand(u, j):
return np.real(np.exp(-1j * u * np.log(K)) *
characteristic_function(u - 1j * j, j) / (1j * u))
P1 = 0.5 + 1/np.pi * quad(lambda u: integrand(u, 1), 0, 100)[0]
P2 = 0.5 + 1/np.pi * quad(lambda u: integrand(u, 2), 0, 100)[0]
if option_type == 'call':
return S * P1 - K * np.exp(-r * T) * P2
else:
return K * np.exp(-r * T) * (1 - P2) - S * (1 - P1)
注意:特征函数积分时,积分上限不能设太大。我试过设到1000,结果数值不稳定。一般50-100就够用了。另外,如果遇到「Feller条件」不满足的情况(2κθ > σ²),方差过程可能跑到负值,这时候需要做截断处理。
11.5 曲面动态变化解读
拟合出Heston参数后,我们可以通过参数变化来解读市场情绪:
- v₀上升:短期恐慌情绪加剧,通常伴随市场下跌
- ρ变得更负:市场对下跌更敏感,避险情绪升温
- σ增大:波动率本身的不确定性增加,市场预期未来波动剧烈
- θ上升:长期波动率预期提高,可能意味着结构性变化
我记得2020年3月疫情爆发时,标普500的Heston参数发生了剧烈变化。v₀从0.02飙到0.08,ρ从-0.5变成-0.85,σ也翻了一倍。这些参数变化比单纯看IV曲线更直观地反映了市场恐慌程度。
11.6 知识体系总览
下面这张图是我自己整理的Heston模型在曲面中的应用框架:
11.7 避坑指南
最后分享几个我踩过的坑:
- 参数可识别性问题:有时候κ和θ高度相关,导致优化不收敛。我建议先固定κ,优化其他参数,再放开κ微调。
- 数值稳定性:特征函数积分时,如果参数组合不当,可能出现振荡。用「自适应辛普森积分」比普通梯形积分稳定得多。
- 市场数据质量:深度虚值期权的报价往往有较大买卖价差。我一般会剔除那些隐含波动率异常高的数据点。
说实话,Heston模型也不是万能的。它在处理短期到期期权时,拟合效果有时不如SVI模型。但如果你需要一套动态一致的框架来理解波动率曲面的变化,Heston绝对是最佳选择之一。