Black-Scholes 最尴尬的瞬间,是期权交易员把同一标的、不同行权价的隐含波动率拉成一条线时——按 BS 假设它该是平的,可真实市场往往弯成微笑,甚至明显左偏。这一篇我们用 SABR 模型把这个”弯”变成可计算、可校准的工程对象。
结论先放这:SABR(Hagan 等, 2002) 用四个参数就能张开整条波动率微笑——α 定 ATM 波动率的高度、β 定曲线的”骨架”(0=正态、1=对数正态)、ρ 把微笑拧成偏斜、ν 定弯曲度。用 Hagan 的近似闭式公式,给定 (F, K, T) 就能直接算出隐含波动率,无需蒙特卡洛;校准时只需把四个参数朝市场 IV 反解即可。合成设定里 β=0.5/ρ=−0.4/ν=0.5 把一条平直 IV 拉成标准左偏微笑,附完整 Python 与六类真实陷阱(高阶)。

一、为什么 Black-Scholes 给不出微笑#
BS 定价公式里波动率是常数。倒过来,给定期权市场价反解出的”隐含波动率(IV)“理应处处相等——可真实期权市场的 IV 是行权价 K 的函数,而且形状稳定:
- 微笑:两端高、中间低(外汇、股指常见)。
- 偏斜(skew):整体向左下倾(股票常见,反映”跌时波动飙升”)。
这种形状 BS 永远解释不了。问题出在假设:真实世界里波动率本身在随机波动,而且和即期价格负相关(跌的时候大家恐慌、波动放大)。要还原微笑,必须把波动率也变成随机变量——这就是随机波动率模型(SV)的动机。
SABR 是其中最被交易台偏爱的一个。它不追求”从第一性原理推导资产动态”,而是直接给出一个漂亮到可以闭式写出 IV的近似,工程上极其好用。
二、SABR 的四个参数:谁控制微笑的哪一部分#
SABR 假设即期远期 F_t 和波动率 σ_t 满足:
dF_t = σ_t · F_t^β · dW_1
dσ_t = ν · σ_t · dW_2
dW_1 · dW_2 = ρ dtplaintext四个参数各有明确的”几何职责”,这也是它好用的原因:
- α(Fwd ATM vol):整体波动率水平,直接决定 ATM(平值)那一点的 IV 高度。
- β(backbone):1=对数正态(几何布朗,BS 极限)、0=正态。它决定曲线的”骨架形态”——β 越小,曲线在低端越平、高端越翘。
- ρ(correlation):即期与波动的相关。ρ<0 把微笑拧成左偏(股票特征),ρ>0 右偏(商品特征),ρ=0 对称。
- ν(vol-of-vol):波动率自身的波动幅度,决定微笑的”弯曲度”——ν 越大弯得越厉害。
import numpy as np
def sabr_iv(F, K, T, alpha, beta, rho, nu):
"""Hagan et al. (2002) SABR 近似隐含波动率(Black 型式)。"""
if abs(F - K) < 1e-9: # ATM 极限:用解析极限避免除零
Fmid = F
if abs(beta - 1.0) < 1e-9:
fk = 1.0
else:
fk = Fmid ** (1.0 - beta)
num = (1 - beta) ** 2 / 24 * (alpha ** 2 / fk ** 2)
num += 0.25 * rho * beta * nu * alpha / fk
num += (2 - 3 * rho ** 2) / 24 * nu ** 2
return alpha / fk * (1 + num * T)
Fmid = 0.5 * (F + K)
if abs(beta - 1.0) < 1e-9:
fk = 1.0
z = nu / alpha * np.log(F / K)
else:
fk = Fmid ** (1 - beta)
z = nu / alpha * (F * K) ** ((1 - beta) / 2.0) * np.log(F / K)
if abs(abs(rho) - 1.0) < 1e-9: # 数值保护,避免 log 内非正
rho = np.sign(rho) * (1 - 1e-6)
xz = np.log((np.sqrt(1 - 2 * rho * z + z ** 2) + z - rho) / (1 - rho))
num = (1 - beta) ** 2 / 24 * (alpha ** 2 / fk ** 2)
num += 0.25 * rho * beta * nu * alpha / fk
num += (2 - 3 * rho ** 2) / 24 * nu ** 2
return alpha / fk * (z / xz) * (1 + num * T)python这就是交易台每天在用的那行公式。注意 ATM 点单独处理:那里 z→0、分母 xz→0,直接除会崩,必须用极限展开。

三、逐个旋钮看:谁把微笑拧成什么样#
把 K 从 70 扫到 130(F=100),固定其它参数、只动一个,就能看清每个旋钮的”几何职责”。
- ρ 决定偏斜方向(图1):ρ=−0.6 时左端 IV 明显抬高(标准股票偏斜);ρ=0 是对称微笑;ρ=0.6 右偏。这只参数单独就解释了”为什么股票 IV 左偏、外汇 IV 更对称”。
- β 决定骨架(图2):β=1(对数正态)曲线中段最平;β=0(正态)整体更”钝”。选 β 是结构性决策,不是纯数据拟合。
- ν 决定弯曲度(图3):ν 从 0.2 拉到 0.9,微笑两端被高高抬起,但 ATM 高度(由 α 定)基本不动。这就是”ν 只管弯、α 只管高”的分工。
Ks = np.linspace(70, 130, 61)
for rho in (-0.6, 0.0, 0.6):
iv = [sabr_iv(100, k, 1.0, 0.20, 0.5, rho, 0.5) for k in Ks]
# plot ... # 三条曲线分别展示左偏/对称/右偏python
四、从一条微笑到一整张曲面#
单条微笑只是 T=1 的切片。真实需求是给任意 (moneyness, T) 出 IV——SABR 天然支持,因为 α、β、ρ、ν 理论上与期限无关,同一组参数就能生成整张 IV 曲面。

热力图显示:短期微笑更陡(期限越短,ν 的弯曲效应相对越突出),长期趋于平缓——这正是股票期权市场的真实形态。注意一个诚实点:SABR 的”期限不变参数”假设是近似。真实市场里 ρ、ν 常随期限变化(短端 jumps 更多),严格做该用期限相关的 SABR 或分期限校准。
五、校准:把市场 IV 反解成四个参数#
给定一组市场 IV(K_i, IV_i),用最小二乘反解参数:
from scipy.optimize import minimize
def calibrate(mkt_K, mkt_iv, F, T, x0=(0.20, 0.5, -0.4, 0.5)):
"""x0 = (alpha, beta, rho, nu);最小化 SABR IV 与 市场 IV 的误差。"""
def obj(x):
a, b, r, n = x
pred = [sabr_iv(F, k, T, a, b, r, n) for k in mkt_K]
return np.sum((np.array(pred) - mkt_iv) ** 2)
bnds = [(1e-3, 2.0), (1e-3, 1.0), (-0.999, 0.999), (1e-3, 5.0)]
res = minimize(obj, x0, bounds=bnds, method="L-BFGS-B")
return res.xpython好的初值很重要:α 取 ATM IV,ρ 取 −0.4(股票默认),ν 取 0.4。初值差会掉进局部极小——后面陷阱会细说。
六、六类真实陷阱(这才是重点)#
-
Hagan 近似在翅膀处失真:上面的闭式是渐近近似,在极虚/极实值、长期限、β≠1 且远离平值时误差显著,甚至给出负 IV(就废了)。实盘对翅膀敏感的(exotic、风险逆转)必须用蒙特卡洛或有限差分替代闭式。别把近似当精确。
-
α 与 ρ 高度纠缠:校准时 α(调高度)和 ρ(调偏斜)互相抵消——把 α 调高一点、ρ 调负一点,微笑几乎不变。结果不唯一,小误差的市场 IV 会导致参数大幅摆动。务必锁初值、加边界,必要时先验固定 β。
-
β 是结构选择不是拟合结果:β 取 0 还是 1 决定模型的”世界观”(正态 vs 对数正态)。纯数据拟合常在 0 和 1 之间反复横跳。实践中常先验固定 β(股指用 1、商品用 0 或 0.5),只校准其余三个,稳定性大幅提升。
-
负远期/负利率边界:当 F 接近 0 或利率为负,公式里的对数项、
(F·K)^((1−β)/2)会炸。需要数值保护(代码里已 clamp ρ),且这类极端场景本就不适合标准 SABR——该换 shift/SABR 或 free-boundary 模型。 -
SABR 不建模跳跃:它假设波动连续随机演化,可真实市场在财报、事件日有瞬时 vol 跳变,短期微笑会因此失真(短期更陡)。要抓跳变得用 SVJ(带跳随机波动率),SABR 天然缺这块。
-
它是插值/外推工具,不是预测:SABR 把市场已有的 IV 曲面用 4 参数”压缩”并平滑,方便报价与对冲。它不预测未来波动率——拿校准好的 SABR 去”猜明天 IV”是范畴错误。把它当曲面平滑器,别当 forecaster。
七、总结#
SABR 的价值在于用四个有清晰几何含义的参数,把 Black-Scholes 解释不了的波动率微笑变成可闭式计算、可一键校准的工程对象。α 管高度、β 管骨架、ρ 管偏斜、ν 管弯曲——四个旋钮各自独立负责微笑的一块,这正是它百用不厌的原因。
但务必记住:Hagan 闭式是近似,翅膀与长端会失真;α/ρ 纠缠导致校准不唯一;它不建模跳跃、也不预测未来。把它当作”波动率曲面的平滑与插值引擎”,在它擅长的区间(平值附近、中短期限)放心用,在它失灵的区间(极虚值、长端、事件跳变)换更重的武器。完整代码(闭式 IV、三旋钮敏感性、IV 曲面、校准)已给出,可直接替换成真实期权数据落地。