量化交易中文教材

第 27a 章 超越 BSM:替代模型、随机波动率与局部波动率

第 20 章说明,交易员用波动率曲面弥补几何布朗运动的缺陷:曲面告诉我们普通期权代入 BSM 时应使用的波动率。但对第 26a、26b 章的奇异期权,曲面几乎没有指导意义。曲面显示 1 年期、执行价 $40 的普通期权应使用 27% 的波动率,用 27% 给 1 年期、执行价 $40 的障碍期权定价,可能完全不对:障碍期权的价值取决于标的在障碍附近的行为,而不只是到期时的分布。

要更有把握地给奇异期权定价,需要一个能同时拟合普通期权价格的随机过程。本章介绍这类模型的三条路线和两个工业标准:

  • 保持价格连续,但换一种扩散过程:CEV 模型;
  • 在扩散上叠加跳跃:Merton 跳跃扩散;
  • 全部由跳跃构成:方差–伽马(VG)模型;
  • 让波动率本身随机:随机波动率模型(Hull–White、Heston);
  • 让波动率是价格和时间的确定函数,并精确拟合当天全部欧式期权:隐含波动率函数(局部波动率)模型。

第 27b 章再讲数值方法。全章仍假设标的提供收益率 \(q\)。

学习目标

  1. 说出 CEV、跳跃扩散、方差–伽马三类模型的风险中性过程,以及各自产生什么形状的波动率微笑。
  2. 理解 Merton 公式"Poisson 加权的 BSM 价格"的构造,会用蒙特卡洛模拟跳跃过程(扩散部分漂移须减去 \(\lambda k\))。
  3. 理解方差–伽马模型中"经济时间"的含义,会按三步抽样生成 VG 分布。
  4. 掌握 Hull–White(1987)结论:波动率随机且与价格不相关时,期权价格 = BSM 价格对平均方差分布的积分;由此解释 BSM 对平值高估、对两翼低估。
  5. 理解局部波动率模型与 Dupire 公式,知道它为什么能正确定价单时点支付的产品,却可能错误定价障碍、远期开始等依赖联合分布的产品。

读前导读

这一章在解决什么问题。 CFA 里的 BSM 假设波动率是一个常数,但你在实务中一定见过同一标的、不同执行价的期权报出不同的隐含波动率(波动率微笑/偏斜)。这说明市场认为真实的价格分布不是对数正态:左尾更厚(股市更容易暴跌)、峰更尖。本章介绍几种"修补 BSM"的模型,它们的共同目标是:产生一个更接近现实的价格分布,从而让模型价格能同时对上所有普通期权的报价,然后再用同一个模型给奇异期权定价。

可以用读者熟悉的利率模型类比。CFA 固定收益中,二叉利率树要先"校准"到当天的国债价格(无套利),再用它给含权债券定价;不同的利率模型可以都对上当天的收益率曲线,却给同一只可赎回债券不同的价格,因为它们对利率"未来如何变动"的假设不同。本章的结论完全平行:多个模型可以都对上当天的波动率曲面,却给障碍期权不同的价格,这一差别就是模型风险。

需要先想起来的数学。

  1. 泊松分布。 单位时间平均发生 \(\lambda\) 次的随机事件,在时间 \(T\) 内恰好发生 \(n\) 次的概率为 \(e^{-\lambda T}(\lambda T)^n/n!\)。例:\(\lambda=0.5\)/年,2 年内不跳的概率 \(e^{-1}=0.368\),跳一次的概率也是 \(0.368\)。
  2. 全期望公式(先条件、再平均)。 \(E[X]=E\big[E[X\mid Y]\big]\)。Merton 跳跃公式和 Hull–White 公式都用它:先固定跳跃次数(或平均方差),此时 BSM 成立;再按跳跃次数(或平均方差)的分布加权平均。见 第 00 册第 07 章 概率中的分析工具(条件期望部分)。
  3. 凹凸性与 Jensen 不等式。 函数在一段区间上向下弯(凹)时,"函数的平均"小于"平均处的函数值",向上弯(凸)时相反。这是随机波动率产生微笑的全部原因。见 第 00 册第 02 章 导数与泰勒展开(二阶导数与凹凸)。
  4. 偏导数。 Dupire 公式里 \(\partial c/\partial T\)、\(\partial c/\partial K\)、\(\partial^2c/\partial K^2\) 分别是期权价格对期限的斜率、对执行价的斜率和对执行价的曲率,各自对应一个可交易的期权组合(日历价差、垂直价差、蝶式价差)。见 第 00 册第 05 章 多元微积分与优化。
  5. 均值回归过程。 \(dV=a(V_L-V)dt+\ldots\) 的意思是"\(V\) 离长期水平越远,被拉回的速度越快",与 CFA 中利率模型(Vasicek、CIR)的均值回归项完全相同。

怎么读这一章。 核心必读:27.1 中 CEV 和 Merton 跳跃扩散各自产生什么形状的微笑(公式可以不推)、27.2 的"确定性时变波动率"和 Hull–White 结论、27.3 的"能做什么、不能做什么"。CEV 的非中心卡方公式、VG 的密度和 \(\omega\) 第一次只需知道"有半解析解",不必细读。Dupire 公式抓住"分子 = 日历价差、分母 = 风险中性密度"这一解读即可。


27.1 BSM 的替代模型

BSM 假设价格连续变化,且任意未来时刻价格服从对数正态分布。三类替代思路都属于 Lévy 过程的范畴(粗略地说,具有平稳独立增量的连续时间随机过程),CEV 是一个例外,它是状态依赖的扩散。这些模型都通过最小化模型价与市场价的平方误差之和来校准参数。

常弹性方差模型(CEV)

Cox & Ross(1976)的常弹性方差(constant elasticity of variance,CEV)模型,风险中性过程为

\[dS=(r-q)S\,dt+\sigma S^\alpha\,dz,\]
\(\sigma\) 为波动率参数,\(\alpha>0\)。瞬时波动率(百分比)是 \(\sigma S^{\alpha-1}\),"弹性"指它对价格的弹性为常数 \(\alpha-1\)。

白话解释:把方程两边除以 \(S\):\(dS/S=(r-q)dt+\sigma S^{\alpha-1}dz\),百分比波动率是 \(\sigma S^{\alpha-1}\),随价格变化。弹性的意思和经济学的价格弹性一样:价格变动 1%,波动率变动约 \((\alpha-1)\%\)。 数值例:\(\alpha=0.5\),百分比波动率 \(=\sigma/\sqrt S\)。设 \(S=100\) 时为 25%,则 \(\sigma=2.5\);股价跌到 81 时波动率变为 \(2.5/9=27.8\%\),涨到 121 时变为 \(2.5/11=22.7\%\)。价格越低越波动,这就是向下偏斜的来源。 与杠杆效应的联系:股价下跌时,公司的负债/股权比上升,股权的波动率被放大,这与第 24 章 Merton 模型中"\(\sigma_E=N(d_1)\frac{V}{E}\sigma_V\)"是同一个机制。

  • \(\alpha=1\):几何布朗运动。
  • \(\alpha<1\):价格下跌时波动率上升,更可能继续大幅下跌;价格上涨时波动率下降,更难继续上涨。结果是左尾厚、右尾薄,隐含波动率随执行价下降,与股票期权观察到的偏斜一致(图 20.4)。这也是第 20 章"杠杆效应"的一个数学化身。
  • \(\alpha>1\):价格上涨时波动率上升,右尾厚、左尾薄,隐含波动率随执行价上升,有时见于期货期权(如商品期权中的"上涨恐慌")。

CEV 下的欧式期权有基于非中心卡方分布的解析公式。记 \(\chi^2(z;k,v)\) 为自由度 \(k\)、非中心参数 \(v\) 的非中心卡方变量小于 \(z\) 的概率(Technical Note 12;Python 中为 scipy.stats.ncx2.cdf(z, k, v))。当 \(0<\alpha<1\) 时:

\[c=S_0e^{-qT}[1-\chi^2(a;b+2,c)]-Ke^{-rT}\chi^2(c;b,a),\]
\[p=Ke^{-rT}[1-\chi^2(c;b,a)]-S_0e^{-qT}\chi^2(a;b+2,c);\]
当 \(\alpha>1\) 时:
\[c=S_0e^{-qT}[1-\chi^2(c;-b,a)]-Ke^{-rT}\chi^2(a;2-b,c),\]
\[p=Ke^{-rT}[1-\chi^2(a;2-b,c)]-S_0e^{-qT}\chi^2(c;-b,a).\]
其中
\[a=\frac{[Ke^{-(r-q)T}]^{2(1-\alpha)}}{(1-\alpha)^2v},\quad b=\frac1{1-\alpha},\quad c=\frac{S_0^{2(1-\alpha)}}{(1-\alpha)^2v},\quad v=\frac{\sigma^2}{2(r-q)(\alpha-1)}\big[e^{2(r-q)(\alpha-1)T}-1\big].\]
(公式中的 \(c\) 既表示看涨价格又表示一个参数,是原书的记号,读时注意区分;精读笔记抽取丢失的负号已按原书还原,本章代码用蒙特卡洛核对过。)

CEV 适合给股票上的奇异期权定价,因为它用一个参数 \(\alpha\) 就产生了合理的偏斜。代码中取 \(\alpha=0.5\)、在 \(S_0=100\) 处局部波动率 25%,6 个月期隐含波动率从执行价 80 的 26.4% 平滑下降到执行价 120 的 23.9%。但 CEV 的偏斜通常不够陡,单独使用难以拟合短期股指期权。

Merton 跳跃扩散模型

Merton(1976)在几何布朗运动上叠加跳跃。设 \(\lambda\) 为每年平均跳跃次数,\(k\) 为平均跳幅(占价格的百分比)。\(\Delta t\) 内发生跳跃的概率为 \(\lambda\Delta t\),跳跃带来的平均增长率为 \(\lambda k\)。为使总期望收益率仍为 \(r-q\),扩散部分的漂移要扣除 \(\lambda k\):

\[\frac{dS}{S}=(r-q-\lambda k)\,dt+\sigma\,dz+dp,\]
\(dp\) 为产生跳跃的 Poisson 过程,与 \(dz\) 独立。

重要特例:\(\ln(1+\text{跳幅})\) 服从正态分布、标准差为 \(s\)。条件于 \(T\) 内恰好发生 \(n\) 次跳跃,\(\ln S_T\) 仍是正态的,只是方差多了 \(ns^2\)、均值多了 \(n\) 次跳跃的贡献。于是欧式期权价格是 BSM 价格按跳跃次数的 Poisson 加权平均:

\[\sum_{n=0}^\infty\frac{e^{-\lambda'T}(\lambda'T)^n}{n!}f_n,\qquad \lambda'=\lambda(1+k),\]
\(f_n\) 是股息率 \(q\)、方差率 \(\sigma^2+ns^2/T\)、无风险利率 \(r-\lambda k+n\gamma/T\) 的 BSM 价格,\(\gamma=\ln(1+k)\)。公式中把 \(\lambda\) 换成 \(\lambda'\)、利率加 \(n\gamma/T\),是一个测度变换的技巧(相当于以股票为计价单位重新计数跳跃)。

推导拆解:两个要点。

  1. 为什么扩散漂移要扣 \(\lambda k\):每一小段 \(\Delta t\) 里,以概率 \(\lambda\Delta t\) 发生一次平均幅度为 \(k\) 的跳跃,跳跃部分贡献的期望收益为 \(\lambda\Delta t\times k\)。风险中性世界中总期望收益必须是 \((r-q)\Delta t\),所以扩散部分只能贡献 \((r-q-\lambda k)\Delta t\)。例:\(\lambda=0.5\)、\(k=-10\%\)(平均每两年一次 10% 的闪崩),则 \(\lambda k=-5\%\),扩散部分漂移要比 \(r-q\) 高 5 个百分点,作为对跳跃损失的补偿。
  2. 为什么价格是 Poisson 加权的 BSM:用全期望公式,期权价值 \(=\sum_n P(\text{恰好 }n\text{ 次跳跃})\times E[\text{贴现收益}\mid n\text{ 次跳跃}]\)。给定 \(n\) 次跳跃,每次跳跃的对数幅度是正态的,\(n\) 个正态之和加上扩散部分仍是正态,所以条件价格就是一个参数调整过的 BSM 价格。多出来的 \(ns^2\) 被摊到年化方差里,故方差率为 \(\sigma^2+ns^2/T\)。 正文把 \(\lambda\) 换成 \(\lambda'\)、利率加 \(n\gamma/T\),是为了让每个 \(f_n\) 都能直接套用标准 BSM 公式,第一次读可以接受这个结论,不必推导。

跳跃扩散的左右尾都比 BSM 厚。当平均跳幅为负时(股市"闪崩"),左尾尤其厚,产生向下偏斜;当跳幅对称时,产生 U 形微笑,适合外汇期权。跳跃对短期期权影响大,对长期期权影响小(跳跃在长期中被扩散"平均掉"),这与市场上短期微笑更陡的事实一致。

蒙特卡洛实现跳跃。 Poisson 过程下 \(\Delta t\) 内恰有 \(m\) 次跳跃的概率为 \(e^{-\lambda\Delta t}(\lambda\Delta t)^m/m!\)。原书表 27.1 列出 \(\lambda=0.5\) 时 2 年内跳跃次数的分布:\(m=0,1,2,3,4,5,6,7\) 的概率分别为 0.3679、0.3679、0.1839、0.0613、0.0153、0.0031、0.0005、0.0001,累计概率 0.3679、0.7358、0.9197、0.9810、0.9963、0.9994、0.9999、1.0000。模拟时抽一个 \([0,1)\) 均匀数查表决定跳跃次数(0 到 0.3679 无跳,0.3679 到 0.7358 跳一次,依此类推),再为每次跳跃抽跳幅。扩散部分按第 21b 章方法抽样,漂移必须是 \(r-q-\lambda k\),否则总期望收益不等于无风险利率,价格会有偏。

方差–伽马模型

Madan, Carr & Chang(1998)的方差–伽马(variance-gamma,VG)模型是流行的纯跳跃模型。它引入一个伽马过程:均值速率 1、方差速率 \(v\) 的纯跳跃过程,小跳频繁、大跳偶尔。记 \(g\) 为该过程在时间 \(T\) 内的增量,其密度为

\[\frac{g^{T/v-1}e^{-g/v}}{v^{T/v}\Gamma(T/v)}\]
(即形状参数 \(T/v\)、尺度参数 \(v\) 的伽马分布,均值 \(T\)、方差 \(vT\))。风险中性下,条件于 \(g\),\(\ln S_T\) 服从正态分布,条件均值为 \(\ln S_0+(r-q)T+\omega+\theta g\),条件标准差为 \(\sigma\sqrt g\),其中
\[\omega=\frac Tv\ln\Big(1-\theta v-\frac{\sigma^2v}{2}\Big)\]
是保证 \(\hat E(S_T)=S_0e^{(r-q)T}\) 的修正项。三个参数:\(v\) 为伽马过程的方差率(控制峰度),\(\sigma\) 为波动率,\(\theta\) 为偏度参数(\(\theta=0\) 对称,\(\theta<0\) 负偏如股票,\(\theta>0\) 正偏)。注意:从现实世界变到风险中性世界时,VG 的这些参数都可能改变,这与纯扩散模型中"测度变换只改漂移、不改波动率"不同。

白话解释:VG 的构造可以分两层读。外层:先随机决定"这段时间里实际流逝了多少经济时间" \(g\),它平均等于日历时间 \(T\),但有时多、有时少(伽马分布保证 \(g>0\))。内层:给定 \(g\),对数收益就是一个普通的正态分布,方差与 \(g\) 成正比。 把许多方差不同的正态分布混合在一起,得到的分布峰更尖、尾更厚,这与 CFA 里"厚尾、超额峰度"的描述一致。\(v\) 越大,\(g\) 越分散,混合越剧烈,峰度越高。\(\theta\) 让均值随 \(g\) 移动:\(\theta<0\) 时信息多的时期往往下跌,于是左尾更厚。 \(\Gamma(\cdot)\) 是伽马函数,可以看作阶乘的推广(\(\Gamma(n)=(n-1)!\)),这里只起归一化作用。\(\omega\) 只是一个常数修正,使 \(\hat E(S_T)=S_0e^{(r-q)T}\) 成立,作用与 Merton 模型中扣除 \(\lambda k\) 相同。

三步抽样(原书用 Excel 实现,10,000 个样本):

  1. 抽 \(g\):GAMMAINV(RAND(), T/v, v);
  2. 抽 \(z\sim N(\theta g,\sigma^2g)\):\(z=\theta g+\sigma\sqrt g\,\varepsilon\);
  3. \(S_T=S_0\exp[(r-q)T+\omega+z]\)。

原书图 27.1 对比了 \(S_0=100\)、\(T=0.5\)、\(v=0.5\)、\(\theta=0.1\)、\(\sigma=0.2\)、\(r=q=0\) 的 VG 分布与 20% 波动率的对数正态分布,VG 尾部更厚。

直观解释。 \(g\) 刻画时间 \(T\) 内信息到达的多少:\(g\) 大,信息多,第 2 步的正态样本均值和方差都大;\(g\) 小,信息少,价格变动小。\(T\) 是日历时间,\(g\) 称为经济时间(economic time)。这一视角与金融时间序列中"按成交量或成交笔数度量时间"的思路一脉相承(第 06、07 册)。Madan 等给出欧式期权的半解析公式。VG 倾向于产生 U 形、不一定对称的微笑,短期限非常明显、长期限逐渐消失,可拟合股票或外汇的普通期权价格。


27.2 随机波动率模型

BSM 假设波动率恒定,但第 23 章表明波动率随时间变化。VG 通过 \(g\) 间接反映这一点;另一条路是直接给波动率指定一个随机过程。

确定性时变波动率

先看最简单的情形:

\[dS=(r-q)S\,dt+\sigma(t)S\,dz.\tag{27.1}\]
此时 \(\ln S_T\) 仍为正态,方差为 \(\int_0^T\sigma(t)^2dt\)。只要在 BSM 公式中把方差率取为存续期内的平均方差率,公式仍然正确(习题 27.6)。例:1 年期期权,前 6 个月波动率 20%,后 6 个月 30%,平均方差率 \(0.5\times0.2^2+0.5\times0.3^2=0.065\),BSM 中应使用 \(\sqrt{0.065}=25.5\%\)。注意不是 25%:平均的是方差,不是波动率。这正是隐含波动率期限结构"可以由远期方差拼接"的原理。

随机波动率

现在让方差率 \(V\) 本身随机:

\[\frac{dS}{S}=(r-q)\,dt+\sqrt V\,dz_S,\tag{27.2}\]
\[dV=a(V_L-V)\,dt+\xi V^\alpha\,dz_V,\tag{27.3}\]
\(a,V_L,\xi,\alpha\) 为常数:\(V\) 以速率 \(a\) 均值回归到长期水平 \(V_L\),\(\xi\) 是"波动率的波动率"。\(\alpha=0.5\) 时就是著名的 Heston(1993)模型。

Hull–White(1987)结果。 若波动率随机但与资产价格不相关,欧式期权价格等于 BSM 价格对存续期内平均方差率 \(\bar V\) 的风险中性分布的积分:

\[\int_0^\infty c(\bar V)g(\bar V)\,d\bar V,\]
\(g\) 为 \(\bar V\) 的密度。这个结论与方差率的具体过程无关。推导思路是条件期望:条件于整条方差路径,\(\ln S_T\) 是方差为 \(\bar VT\) 的正态变量,于是条件期权价格就是 \(c(\bar V)\);再对 \(\bar V\) 取期望即可。

由此可以推出一个重要的定性结论:BSM 用平均波动率时,会高估平值或近平值期权,低估深度实值和深度虚值期权。 原因是 BSM 价格作为方差的函数,在平值附近是凹的(价格约与 \(\sqrt{\bar V}\) 成正比),在两翼是凸的,由 Jensen 不等式即得。这正是外汇期权的 U 形微笑(第 20.2 节)。本章代码的模拟验证了这一点:平均波动率 20% 时,平值期权的随机波动率价格(6.264)低于 BSM 价格(6.307),而执行价 70 和 130 的期权高于 BSM 价格,反解出的隐含波动率形成微笑。

推导拆解:用一个两情景的例子看 Jensen 不等式怎么造出微笑。设平均波动率以各 50% 的概率为 10% 或 30%(平均方差 \(=0.5\times0.01+0.5\times0.09=0.05\))。 平值期权:价格约与波动率成正比(平值 BSM 价格 \(\approx0.4S\sigma\sqrt T\)),所以随机波动率下的价格 ∝ \(0.5\times10\%+0.5\times30\%=20\%\);而 BSM 用平均方差对应的 \(\sqrt{0.05}=22.4\%\) 定价,更高。平值期权被 BSM 高估,反推的隐含波动率低于 22.4%。 深度虚值期权:价格在低波动率时几乎为零、高波动率时迅速变大,是波动率的凸函数。两个情景平均,高波动率情景贡献的价值远超低波动率情景的损失,所以随机波动率价格高于 BSM 价格,隐含波动率高于 22.4%。 两翼高、中间低,这就是微笑。注意这个论证只用到"波动率不确定",没有用到"波动率与价格相关",所以得到的是对称的微笑;偏斜需要负相关。

相关的情形。 波动率与价格相关时问题更复杂,可用蒙特卡洛。\(\alpha=0.5\) 时,Hull & White(1988)给出级数展开,Heston(1993)给出了半解析解(基于特征函数的傅里叶积分),这使 Heston 成为业界最常用的随机波动率模型。波动率与价格负相关时,隐含波动率呈现股票期权那样的向下偏斜,原因与 CEV 相同:价格下跌伴随波动率上升。

GARCH 与随机波动率。 第 23 章的 EWMA 和 GARCH(1,1) 也是刻画随机波动率的方式。Duan(1995, 1996)证明可以以 GARCH(1,1) 为基础建立内部一致的期权定价模型(GARCH 与连续时间随机波动率模型的关系见习题 23.14)。

影响有多大? 随机波动率模型拟合普通期权价格后,可用于给奇异期权定价(Hull & Suo 2002)。对 1 年以内的期权,随机波动率对价格的绝对影响较小(但对深度虚值期权的百分比影响可能很大),且随期限增加而增大。随机波动率对 delta 对冲的效果影响通常很大,这就是交易员即使使用 BSM 也要计算 vega、监控波动率暴露的原因(第 19b 章)。


27.3 隐含波动率函数模型(局部波动率)

上面的模型都只能近似拟合某一天的普通期权价格。金融机构有时需要精确拟合,原因很实际:若内部模型不能精确重现市场上普通期权的价格,交易员可能把时间花在"套利"本行的内部模型上,而不是市场上。

1994 年 Derman & Kani、Dupire、Rubinstein 分别提出隐含波动率函数模型(implied volatility function,IVF),又称隐含树模型(implied tree)或局部波动率模型(local volatility model)。无论波动率曲面形状如何,它都能精确拟合当天的全部欧式期权价格。

模型与 Dupire 公式

风险中性过程为

\[dS=[r(t)-q(t)]S\,dt+\sigma(S,t)S\,dz,\]
\(r(t)\) 为到期日为 \(t\) 的合约的瞬时远期利率,\(q(t)\) 为时变股息率,\(\sigma(S,t)\) 是价格和时间的确定函数,选择它使所有欧式期权的模型价等于市场价。Dupire 以及 Andersen & Brotherton-Ratcliffe 证明,\(\sigma(S,t)\) 可以由市场看涨价格曲面 \(c_{mkt}(K,T)\) 解析算出:
\[[\sigma(K,T)]^2=2\,\frac{\partial c_{mkt}/\partial T+q(T)c_{mkt}+K[r(T)-q(T)]\,\partial c_{mkt}/\partial K}{K^2\,\partial^2c_{mkt}/\partial K^2}.\tag{27.4}\]
分母中的 \(\partial^2c/\partial K^2\) 就是第 20 章附录中的风险中性密度(乘以 \(e^{-rT}\)),所以 Dupire 公式可以理解为:局部方差 = 期权价格对期限的变化率 ÷ 该处的风险中性密度(经过利率和股息修正)。

金融直觉:Dupire 公式中的三个偏导数都对应可交易的期权组合,可以用差分近似:

  • \(\partial c/\partial T\approx[c(K,T+\Delta T)-c(K,T)]/\Delta T\):日历价差(买远月、卖近月)的价格。多给 \(\Delta T\) 时间,期权价值增加多少,反映了这段时间里在 \(K\) 附近"预期会发生多少波动"。
  • \(\partial c/\partial K\approx[c(K+\Delta K)-c(K)]/\Delta K\):垂直价差,约等于 \(-e^{-rT}\times\) 实值概率。
  • \(\partial^2c/\partial K^2\approx[c(K+\Delta K)-2c(K)+c(K-\Delta K)]/\Delta K^2\):蝶式价差除以 \(\Delta K^2\),约等于价格落在 \(K\) 附近的(贴现)概率密度。 在 \(r=q=0\) 时公式简化为 \(\sigma^2(K,T)=\frac{2\,\partial c/\partial T}{K^2\,\partial^2c/\partial K^2}\):用"多等一段时间能多值多少钱"除以"价格恰好在 \(K\) 附近的可能性",就得到市场认为价格处在 \(K\)、时间处在 \(T\) 时的瞬时方差。分母是二阶差分,对报价噪声最敏感,这正是实务中必须先平滑曲面的原因。

若市场有足够多的看涨价格,就可以由 (27.4) 估计 \(\sigma(S,t)\)。实务中价格是离散且有噪声的,直接差分会放大噪声,通常需要先平滑隐含波动率曲面(并保证无套利)。Dupire 考虑 \(r=q=0\) 的情形,Andersen & Brotherton-Ratcliffe 考虑一般情形,并用隐式有限差分实现;Derman–Kani 与 Rubinstein 的隐含树方法则直接构造一棵与市场期权价格一致的资产价格树。

本章代码做了一个干净的验证:用 CEV 模型的解析价格作为"市场价格曲面",代入 (27.4) 做有限差分,恢复出的局部波动率与 CEV 的真实局部波动率 \(\sigma S^{\alpha-1}\) 在 4 位小数上一致。

局部波动率模型能做什么、不能做什么

实务中 IVF 模型每天用普通期权价格重新校准,用来保证奇异期权与普通期权定价一致。

它能做对的事。 普通期权的价格(所有执行价、所有期限)决定了未来每一个时刻资产价格的风险中性边缘分布(第 20 章 Breeden–Litzenberger)。IVF 精确拟合了全部普通期权,因此它给出的每个时刻的边缘分布都是正确的。所以只在单一时点支付的产品(如全或无期权、资产或无期权,以及任何欧式收益)用 IVF 定价是正确的。

它可能做错的事。 边缘分布正确不等于两个或多个时刻的联合分布正确。复合期权、障碍期权、远期开始期权、棘轮期权的价值依赖于联合分布,IVF 可能给错。Hull & Suo 做过一个检验:假设真实世界由随机波动率模型生成,用 IVF 给奇异期权定价,结果对复合期权效果尚可,对障碍期权有时误差严重。一个常被引用的直观原因是:局部波动率模型隐含的"未来微笑"会随时间变得很平,而真实市场的微笑在未来依然陡峭,所以依赖未来微笑的产品(远期开始期权、棘轮)在 IVF 下定价偏差系统性存在。

白话解释:边缘分布和联合分布的差别,可以用一个简单例子说明。假设每天收盘时只看"股价在 90 以下、90–110、110 以上"的概率,两个模型可以在每一天都给出完全相同的三个概率,但一个模型中股价会在一天内从 110 以上跌到 90 以下再涨回来,另一个模型中价格走得很平稳。欧式期权只看到期那天的概率,分辨不出两者;向下敲出期权关心"途中是否跌破过 90",两个模型的答案就不同了。 金融类比:CFA 中的组合方差需要相关系数,只知道每只股票各自的分布不够;这里"各时点的边缘分布"对应"每只股票各自的分布","跨时点的联合分布"对应"相关结构"。普通期权只告诉我们前者。

这正是本章开头那个问题的答案:普通期权价格只能约束边缘分布,奇异期权的价格还取决于模型对"动态"的假设。 不同模型可以完全拟合同一张波动率曲面,却给同一个障碍期权不同的价格,这一差别就是模型风险。


量化实战

本章内容在量化交易中的用途

  1. 期权定价与做市系统。Heston、局部波动率、跳跃扩散、VG 是期权做市与奇异期权定价系统的标准模型组件。实务中常见的组合是:普通期权用参数化曲面(如 SVI)插值,奇异期权用局部波动率或局部–随机波动率混合模型定价,以 Heston 等模型做模型风险对照。
  2. 判断产品对模型的敏感度。"边缘分布 vs 联合分布"是判断一个产品是否对模型选择敏感的最好标准:欧式收益对模型不敏感;障碍、远期开始、棘轮、雪球类产品对"未来微笑的动态"敏感,必须用多个模型交叉定价并计提模型储备。
  3. 尾部风险与因子研究。跳跃和随机波动率解释了收益厚尾与波动率聚集。期权隐含的偏度、峰度(可用 VG 的 \(\theta\)、Merton 的 \(k\) 和 \(\lambda\) 拟合得到)是常用的期权隐含因子;隐含分布与现实分布的差异是偏度溢价、方差风险溢价研究的出发点。
  4. 对冲。随机波动率对 delta 对冲效果的影响很大。在有偏斜的市场中,"最小方差 delta"(考虑价格与波动率负相关)通常比 BSM delta 小,这一修正对期权做市的对冲成本有可见影响。

Python 示例:四种模型的微笑与 Dupire 公式检验

代码依次完成:(1) CEV 非中心卡方公式与蒙特卡洛核对,并反解隐含波动率;(2) Merton 跳跃扩散的 Poisson 加权公式与蒙特卡洛核对(跳幅均值 −8%);(3) 按原书三步法抽样 VG 分布,检验远期、计算微笑;(4) 模拟与价格独立的随机方差,验证 Hull–White 结论;(5) 用 CEV 价格曲面做 Dupire 有限差分,恢复局部波动率。

import numpy as np
from math import factorial
from scipy.stats import norm, ncx2
from scipy.optimize import brentq

N = norm.cdf

def bsm(S, K, T, r, q, sig, kind="call"):
    d1 = (np.log(S/K) + (r - q + 0.5*sig**2)*T)/(sig*np.sqrt(T))
    d2 = d1 - sig*np.sqrt(T)
    if kind == "call":
        return S*np.exp(-q*T)*N(d1) - K*np.exp(-r*T)*N(d2)
    return K*np.exp(-r*T)*N(-d2) - S*np.exp(-q*T)*N(-d1)

def iv(price, S, K, T, r, q):
    return brentq(lambda s: bsm(S, K, T, r, q, s) - price, 1e-4, 3.0)

S0, r, q, T = 100.0, 0.05, 0.02, 0.5
Ks = np.array([80, 90, 100, 110, 120], float)

# ---------- 1) CEV:非中心卡方公式 vs 蒙特卡洛,以及偏斜 ----------
def cev_call(S, K, T, r, q, sig, alpha):
    v = sig**2/(2*(r - q)*(alpha - 1))*(np.exp(2*(r - q)*(alpha - 1)*T) - 1)
    a = (K*np.exp(-(r - q)*T))**(2*(1 - alpha))/((1 - alpha)**2*v)
    b = 1/(1 - alpha)
    c = S**(2*(1 - alpha))/((1 - alpha)**2*v)
    if alpha < 1:
        return S*np.exp(-q*T)*(1 - ncx2.cdf(a, b + 2, c)) - K*np.exp(-r*T)*ncx2.cdf(c, b, a)
    return S*np.exp(-q*T)*(1 - ncx2.cdf(c, -b, a)) - K*np.exp(-r*T)*ncx2.cdf(a, 2 - b, c)

alpha = 0.5
sig_cev = 0.25*S0**(1 - alpha)          # 使 S0 处的局部波动率为 25%
rng = np.random.default_rng(0)
n, m = 200_000, 250
dt = T/m
S = np.full(n, S0)
for _ in range(m):
    S = np.maximum(S + (r - q)*S*dt + sig_cev*S**alpha*np.sqrt(dt)*rng.standard_normal(n), 0.0)
print("CEV(alpha=0.5)  K    公式     MC      隐含波动率")
for K in Ks:
    f = cev_call(S0, K, T, r, q, sig_cev, alpha)
    mc = np.exp(-r*T)*np.maximum(S - K, 0).mean()
    print("              %4.0f  %7.3f  %7.3f   %5.2f%%" % (K, f, mc, 100*iv(f, S0, K, T, r, q)))

# ---------- 2) Merton 跳跃扩散:Poisson 加权的 BSM ----------
def merton_call(S, K, T, r, q, sig, lam, k, s):
    gam = np.log(1 + k)
    lam2 = lam*(1 + k)
    total = 0.0
    for n_ in range(60):
        w = np.exp(-lam2*T)*(lam2*T)**n_/factorial(n_)
        sig_n = np.sqrt(sig**2 + n_*s**2/T)
        r_n = r - lam*k + n_*gam/T
        total += w*bsm(S, K, T, r_n, q, sig_n)
    return total

lam, kj, sj, sig_d = 1.0, -0.08, 0.10, 0.18
# 蒙特卡洛:ln(1+跳幅) ~ N(ln(1+k) - s^2/2, s^2),使 E[跳幅]=k
rng = np.random.default_rng(1)
nJ = rng.poisson(lam*T, 1_000_000)
jump = nJ*(np.log(1 + kj) - 0.5*sj**2) + np.sqrt(nJ)*sj*rng.standard_normal(1_000_000)
ST = S0*np.exp((r - q - lam*kj - 0.5*sig_d**2)*T + sig_d*np.sqrt(T)*rng.standard_normal(1_000_000) + jump)
print("Merton           K    公式     MC      隐含波动率")
for K in Ks:
    f = merton_call(S0, K, T, r, q, sig_d, lam, kj, sj)
    mc = np.exp(-r*T)*np.maximum(ST - K, 0).mean()
    print("              %4.0f  %7.3f  %7.3f   %5.2f%%" % (K, f, mc, 100*iv(f, S0, K, T, r, q)))

# ---------- 3) 方差-伽马:按原书 Excel 三步抽样 ----------
v_, theta, sig_vg = 0.5, -0.15, 0.20
omega = T/v_*np.log(1 - theta*v_ - sig_vg**2*v_/2)
rng = np.random.default_rng(2)
g = rng.gamma(shape=T/v_, scale=v_, size=1_000_000)          # 第 1 步:经济时间 g
z = theta*g + sig_vg*np.sqrt(g)*rng.standard_normal(g.size)  # 第 2 步:条件正态
ST = S0*np.exp((r - q)*T + omega + z)                         # 第 3 步
print("VG 远期检验: E[S_T]=%.3f, 理论 %.3f" % (ST.mean(), S0*np.exp((r - q)*T)))
print("VG 隐含波动率:", ["K=%d: %.2f%%" % (K, 100*iv(np.exp(-r*T)*np.maximum(ST - K, 0).mean(), S0, K, T, r, q))
                      for K in Ks])

# ---------- 4) Hull-White(1987):不相关随机波动率 = BSM 对平均方差积分 ----------
rng = np.random.default_rng(3)
n, m = 200_000, 100
dt = T/m
V = np.full(n, 0.04); intV = np.zeros(n)
for _ in range(m):                    # dV = a(VL - V)dt + xi*V dz_V,与股价独立
    intV += V*dt
    V = np.maximum(V + 3.0*(0.04 - V)*dt + 1.0*V*np.sqrt(dt)*rng.standard_normal(n), 1e-8)
Vbar = intV/T
print("Hull-White: 平均方差均值 %.4f (即 %.2f%% 波动率)" % (Vbar.mean(), 100*np.sqrt(Vbar.mean())))
for K in (70, 100, 130):
    hw = bsm(S0, K, T, r, q, np.sqrt(Vbar)).mean()
    flat = bsm(S0, K, T, r, q, np.sqrt(Vbar.mean()))
    print("  K=%3d  随机波动率价 %.4f  BSM(平均波动率) %.4f  隐含波动率 %.2f%%" % (K, hw, flat, 100*iv(hw, S0, K, T, r, q)))

# ---------- 5) Dupire:从 CEV 价格曲面恢复局部波动率 sigma*S^(alpha-1) ----------
dK, dT = 0.5, 0.01
for K in (85, 100, 115):
    for Tm in (0.5,):
        C = lambda k, t: cev_call(S0, k, t, r, q, sig_cev, alpha)
        cT = (C(K, Tm + dT) - C(K, Tm - dT))/(2*dT)
        cK = (C(K + dK, Tm) - C(K - dK, Tm))/(2*dK)
        cKK = (C(K + dK, Tm) - 2*C(K, Tm) + C(K - dK, Tm))/dK**2
        loc = np.sqrt(2*(cT + q*C(K, Tm) + K*(r - q)*cK)/(K**2*cKK))
        print("Dupire 局部波动率 K=%d: %.4f, 理论 sigma*K^(alpha-1) = %.4f" % (K, loc, sig_cev*K**(alpha - 1)))

输出:

CEV(alpha=0.5)  K    公式     MC      隐含波动率
                80   21.767   21.800   26.43%
                90   13.794   13.837   25.67%
               100    7.685    7.727   25.01%
               110    3.708    3.731   24.42%
               120    1.538    1.547   23.89%
Merton           K    公式     MC      隐含波动率
                80   21.545   21.571   24.25%
                90   13.209   13.231   22.81%
               100    6.793    6.806   21.76%
               110    2.853    2.862   21.07%
               120    0.982    0.986   20.65%
VG 远期检验: E[S_T]=101.503, 理论 101.511
VG 隐含波动率: ['K=80: 26.74%', 'K=90: 23.39%', 'K=100: 20.03%', 'K=110: 17.66%', 'K=120: 18.19%']
Hull-White: 平均方差均值 0.0400 (即 20.00% 波动率)
  K= 70  随机波动率价 30.7561  BSM(平均波动率) 30.7488  隐含波动率 20.86%
  K=100  随机波动率价 6.2644  BSM(平均波动率) 6.3068  隐含波动率 19.84%
  K=130  随机波动率价 0.2771  BSM(平均波动率) 0.2561  隐含波动率 20.30%
Dupire 局部波动率 K=85: 0.2712, 理论 sigma*K^(alpha-1) = 0.2712
Dupire 局部波动率 K=100: 0.2500, 理论 sigma*K^(alpha-1) = 0.2500
Dupire 局部波动率 K=115: 0.2331, 理论 sigma*K^(alpha-1) = 0.2331

读输出时注意:

  • CEV(\(\alpha=0.5\)):公式与蒙特卡洛相差约 0.03,主要来自 Euler 离散的偏差(250 步)。隐含波动率从 26.4% 平滑下降到 23.9%,偏斜温和。
  • Merton(每年平均 1 次跳跃,平均跳幅 −8%):公式与 100 万次模拟一致到小数点后两位;偏斜比 CEV 陡(24.3% → 20.7%),而且在右侧趋于平坦,这是负跳跃主要加厚左尾的结果。
  • VG(\(\theta=-0.15\)):模拟的 \(E[S_T]\) 与远期一致,说明 \(\omega\) 修正项正确。微笑左侧陡、右侧在 \(K=120\) 又回升,呈不对称的 U 形("微笑 + 偏斜")。
  • Hull–White:平均方差均值精确为 0.04。平值期权的随机波动率价格 6.264 低于 BSM 价格 6.307,两翼高于 BSM,隐含波动率 20.86%、19.84%、20.30% 形成微笑,与理论一致。
  • Dupire:从 CEV 价格曲面恢复的局部波动率与理论值 \(\sigma K^{\alpha-1}\) 完全一致。真实市场数据没有这么干净,必须先平滑。

实战提示:校准这些模型时,目标函数用隐含波动率误差(按 vega 加权的价格误差)比直接用价格误差稳健,否则深度实值期权的价格误差会主导拟合。跳跃模型的参数(\(\lambda,k,s\))之间高度相关,常常可识别性很差,最好固定其中一个或加正则化。


本章小结

为了拟合波动率微笑,发展出了多种模型。CEV 模型让波动率随价格变化,\(\alpha<1\) 时产生股票型偏斜,欧式期权有非中心卡方解析式;Merton 跳跃扩散在扩散上加 Poisson 跳跃,价格是 BSM 价格的 Poisson 加权和,左右尾都更厚,适合货币期权,跳幅为负时产生偏斜;方差–伽马是纯跳跃模型,以伽马过程为"经济时间",用 \(v,\sigma,\theta\) 三个参数刻画峰度、波动和偏度。随机波动率模型中,若波动率与价格不相关,期权价格是 BSM 价格对平均方差分布的积分,BSM 高估平值、低估两翼;负相关产生股票型偏斜,Heston 模型有半解析解。局部波动率模型由 Dupire 公式从期权价格曲面直接得出 \(\sigma(S,t)\),能精确拟合全部欧式期权,因此单时点支付的产品定价正确;但它不保证多时点联合分布正确,障碍期权等可能误差很大,这是模型风险的核心来源。

模型 风险中性过程/关键公式 产生的微笑
确定性时变波动率 BSM 中用平均方差 \(\frac1T\int\sigma^2(t)dt\) 无微笑,只有期限结构
CEV \(dS=(r-q)Sdt+\sigma S^\alpha dz\),非中心卡方解 \(\alpha<1\) 向下偏斜;\(\alpha>1\) 向上
Merton 跳跃扩散 \(\frac{dS}{S}=(r-q-\lambda k)dt+\sigma dz+dp\);\(\sum\frac{e^{-\lambda'T}(\lambda'T)^n}{n!}f_n\) 两侧厚尾;负跳幅则偏斜;短期更陡
方差–伽马 \(\ln S_T\mid g\sim N(\ln S_0+(r-q)T+\omega+\theta g,\ \sigma^2g)\) U 形,可不对称;短期明显
Hull–White 随机波动率 不相关时 \(c=\int c_{BS}(\bar V)g(\bar V)d\bar V\) 对称微笑;负相关则偏斜
局部波动率(Dupire) \(\sigma^2(K,T)=2\frac{c_T+qc+K(r-q)c_K}{K^2c_{KK}}\) 精确拟合任意曲面

练习

基础

  1. 某期权 1 年期,前 3 个月波动率 15%,中间 6 个月 25%,最后 3 个月 20%。BSM 中应使用什么波动率? 提示:\(\sqrt{0.25\times0.15^2+0.5\times0.25^2+0.25\times0.2^2}=21.7\%\)(原书习题 27.4 类型)。

  2. 验证 CEV 模型的期权价格满足看涨看跌平价(原书习题 27.1)。 提示:用 \(\chi^2(z;k,v)\) 的性质 \(1-\chi^2(c;b,a)\) 与 \(\chi^2(a;b+2,c)\) 的组合,把 \(c-p\) 化简为 \(S_0e^{-qT}-Ke^{-rT}\);也可以直接用本章代码的数值验证。

  3. 在 Merton 模型中,若每次跳跃都使价格跌到 0(\(k=-1\)),说明期权价格等于把无风险利率换成 \(r+\lambda\) 的 BSM 价格(原书习题 27.5)。 提示:\(\lambda'=0\),只有 \(n=0\) 一项,\(f_0\) 中利率为 \(r-\lambda k=r+\lambda\)。直观上,价格要额外补偿违约概率。

  4. 为什么局部波动率模型对全或无期权定价正确,对障碍期权却未必? 提示:前者只依赖 \(S_T\) 的边缘分布;后者依赖整条路径(原书习题 27.8、27.9)。

  5. 方差–伽马模型中,若 \(v\to0\),模型退化成什么? 提示:伽马过程的方差趋于 0,\(g\to T\),\(\ln S_T\) 正态,\(\omega\to-(\theta+\sigma^2/2)T\),当 \(\theta=0\) 时退化为 BSM(原书习题 27.11)。

进阶

  1. 证明时变 \(r(t)\) 和 \(\sigma(t)\) 下 \(\ln S_T\sim\phi[\ln S_0+(\bar r-\bar V/2)T,\ \bar VT]\),其中 \(\bar r,\bar V\) 分别为平均利率和平均方差(原书习题 27.6)。 提示:对 \(d\ln S=(r(t)-\sigma(t)^2/2)dt+\sigma(t)dz\) 积分,\(\int\sigma dz\) 是均值 0、方差 \(\int\sigma^2dt\) 的正态变量。

  2. 用本章代码的 merton_call、cev_call 和 VG 模拟,校准三个模型使平值价格都与 20% 波动率的 BSM 价格相同,比较三者的波动率微笑(原书习题 27.22)。 提示:固定其他参数,用 brentq 调整 \(\sigma\) 使平值价格匹配。CEV 产生最平缓的偏斜,跳跃模型在短期最陡。

  3. 在本章 Hull–White 模拟中加入价格与方差的相关(\(\rho=-0.6\)),观察隐含波动率形状的变化。此时 Hull–White 积分公式还成立吗? 提示:不成立,因为条件于方差路径时 \(\ln S_T\) 的均值也被改变;需要直接模拟价格。结果会出现向下偏斜。

  4. 用 Dupire 公式的代码,对一个加入了噪声(价格加 \(\pm0.01\) 均匀噪声)的 CEV 价格曲面估计局部波动率,观察误差,并尝试先在隐含波动率空间做二次多项式平滑再求导。 提示:二阶差分对噪声极敏感:\(\Delta K=0.5\) 时噪声在 \(c_{KK}\) 中的量级可达 \(4\times0.01/0.25=0.16\),而 \(c_{KK}\) 本身(约等于风险中性密度)只有 0.02 左右,分母可能为负或接近 0;平滑后才可用。

  5. 解释为什么"BSM 对平值期权高估、对深度虚值期权低估"会导致在随机波动率世界中卖出平值跨式、买入虚值宽跨式的策略在 BSM 定价下"看起来"有利可图。这真的是套利吗? 提示:不是。差异来自 BSM 的错误假设;按正确模型这些期权的价格是公平的,策略只是承担了波动率的波动风险。

原书推荐习题:27.6(时变参数下的分布);27.16(Hull–White 随机波动率定价的离散版);27.22(同一平值价格下不同模型的微笑对比,建议编程复现);27.2(Merton 跳跃扩散定价);27.20(用微笑给牛市价差定价,说明奇异期权"正确波动率"可能违反直觉);27.7(写出随机波动率模型的模拟方程)。


原书对照

本章小节 原书章节 PDF 页码
章首导言 Chapter 27 introduction p.647
27.1 替代模型 27.1 Alternatives to Black–Scholes–Merton(CEV、Merton 跳跃扩散、VG,表 27.1,图 27.1) p.648–653
27.2 随机波动率 27.2 Stochastic Volatility Models p.653–655
27.3 局部波动率 27.3 The IVF Model p.655–656
小结与习题 Summary, Practice Questions 27.1–27.23 p.673–677

数值方法(可转债、路径依赖树、障碍期权数值方法、两相关资产的树、蒙特卡洛与美式期权)见第 27b 章。延伸阅读:Cox & Ross (1976);Merton (1976);Madan, Carr & Chang (1998);Heston (1993);Hull & White (1987);Dupire (1994);Derman & Kani (1994);Andersen & Brotherton-Ratcliffe (1997);Duan (1995);Hull & Suo (2002);Rebonato (2004)。