第九章 随机波动率模型:Heston模型、SABR模型简介与参数校准

聊到波动率微笑,咱们得面对一个现实——BS模型假设波动率是常数,这在实际市场中根本站不住脚。我刚开始做期权交易那会儿,就吃过这个亏。当时用BS模型算出来的价格,跟市场报价差了老远,怎么调都不对劲。

后来我才明白,波动率本身也是随机的。这就引出了我们今天要聊的两个经典模型:Heston模型和SABR模型。说白了,它们就是给波动率也装上了随机引擎,让它能跟着市场一起跳舞。

9.1 为什么需要随机波动率模型?

先说说BS模型的硬伤。它假设波动率是固定的,但实际市场里,波动率会随着标的价格、时间变化而变化。你想想看,市场恐慌的时候,波动率会飙升;市场平静的时候,波动率又会回落。

我印象很深的一次,2018年2月VIX指数突然暴涨,很多用BS模型做对冲的机构直接爆仓。为什么?因为BS模型根本没考虑波动率本身的风险。

随机波动率模型的核心思想就是:波动率本身也是一个随机过程。它有自己的均值回归特性,有自己的波动率(没错,波动率的波动率)。

核心要点:随机波动率模型能更好地拟合市场波动率微笑形态,尤其适用于长期期权和深度价外期权的定价。

9.2 Heston模型:最经典的随机波动率模型

Heston模型是1993年由Steven Heston提出的。它假设标的资产价格和波动率都服从随机过程,而且两者之间存在相关性。

模型公式长这样:

dS = μS dt + √v S dW₁
dv = κ(θ - v) dt + σ√v dW₂
dW₁ · dW₂ = ρ dt

解释一下这些参数:

  • S:标的资产价格
  • v:方差(波动率的平方)
  • κ:均值回归速度——波动率回到长期均值的快慢
  • θ:长期方差均值——波动率长期会回到的位置
  • σ:波动率的波动率——方差本身的波动程度
  • ρ:价格与波动率的相关系数——这是关键

我个人习惯把ρ叫做"杠杆效应参数"。为什么?因为当ρ为负时,价格下跌会导致波动率上升,这就是典型的杠杆效应。我在做美股期权时,发现标普500期权的ρ通常在-0.7到-0.5之间。

实战技巧:Heston模型有一个解析解,可以用特征函数快速计算期权价格。但要注意,当Feller条件(2κθ > σ²)不满足时,方差可能变成负数,这在数值计算中需要特殊处理。

9.3 SABR模型:更简洁的随机波动率模型

SABR模型是2002年由Hagan等人提出的。它比Heston模型更简洁,特别适合处理利率衍生品和外汇期权。

SABR的公式:

dF = αF^β dW₁
dα = να dW₂
dW₁ · dW₂ = ρ dt

参数含义:

  • F:远期价格
  • α:波动率参数
  • β:弹性参数——决定模型是正态(β=0)、对数正态(β=1)还是中间状态
  • ν:波动率的波动率
  • ρ:相关系数

嗯,这里要注意一点。SABR模型没有均值回归项,所以它更适合短期期权。我曾在做欧元兑美元期权时用过SABR,效果不错,但超过1年期的合约就开始偏离市场了。

避坑指南:我曾经在SABR模型校准中遇到过"参数爆炸"的问题——ν和ρ同时变得很大,模型完全失效。后来发现是数据质量有问题,有些深度价外期权的报价本身就不合理。所以,数据清洗是校准的第一步

9.4 参数校准:从理论到实战

模型再好,参数不对也是白搭。参数校准说白了就是:找到一组参数,让模型价格尽可能接近市场价格

我常用的校准方法有两种:

  1. 最小二乘法:最小化模型价格与市场价格的平方差
  2. 隐含波动率匹配:最小化模型隐含波动率与市场隐含波动率的差异

我个人更推荐第二种。为什么?因为市场价格本身可能有套利空间,直接拟合价格容易过拟合。而隐含波动率更平滑,校准结果也更稳定。

下面是一个简单的Heston模型校准代码框架:

import numpy as np
from scipy.optimize import minimize

def heston_price(params, S, K, T, r, market_prices):
    """Heston模型定价函数"""
    v0, κ, θ, σ, ρ = params
    # 这里用特征函数法计算价格
    # ... 省略具体实现
    return model_prices

def calibration_error(params, S, K, T, r, market_prices):
    """校准误差函数"""
    model_prices = heston_price(params, S, K, T, r, market_prices)
    return np.sum((model_prices - market_prices) ** 2)

# 初始参数猜测
initial_params = [0.04, 2.0, 0.04, 0.3, -0.7]
# 参数边界
bounds = [(0.001, 1.0), (0.1, 10.0), (0.001, 1.0), (0.01, 1.0), (-0.99, 0.99)]

result = minimize(calibration_error, initial_params, 
                  args=(S, K, T, r, market_prices),
                  bounds=bounds, method='L-BFGS-B')

校准小技巧:我建议先用SABR模型快速校准,得到一组初始参数,再用Heston模型做精细校准。这样能大大减少计算时间。另外,每次校准后都要检查参数的经济学意义——比如κ应该在1-5之间,ρ应该在-0.9到-0.3之间。

9.5 两个模型的对比与选择

特性 Heston模型 SABR模型
均值回归
解析解 有(特征函数) 有(近似解)
适用期限 长期更优 短期更优
参数数量 5个 4个
校准难度 中等 较容易
常见应用 股票、股指期权 利率、外汇期权

怎么选?我的经验是:

  • 做股票期权,尤其是长期合约,优先用Heston
  • 做利率衍生品或外汇期权,SABR更顺手
  • 如果数据稀疏(比如只有几个行权价),SABR更稳健
  • 如果要做风险管理,Heston的均值回归特性更有优势

9.6 知识体系总览

下面这张图是我自己整理的随机波动率模型知识框架,帮你快速理清思路:

随机波动率模型知识体系 随机波动率模型 Heston模型 SABR模型 参数:v₀, κ, θ, σ, ρ 特点:均值回归、杠杆效应 适用:股票、股指期权(长期) 参数:α, β, ν, ρ 特点:无均值回归、弹性参数β 适用:利率、外汇期权(短期) 参数校准 方法1:最小二乘法(价格拟合) 方法2:隐含波动率匹配(推荐)

这张图把Heston和SABR的核心参数、特点、适用场景以及校准方法都串起来了。你想想看,有了这个框架,是不是对随机波动率模型的理解更清晰了?

最后说一句:模型只是工具,关键还是理解市场。我见过太多人沉迷于参数校准的数学细节,却忽略了市场微观结构。记住,好的模型是简单且稳健的,而不是复杂且脆弱的。

公众号:蓝海资料掘金营,微信deep3321