第 26b 章 奇异期权(下):方差互换、VIX 与静态期权复制
第 26a 章的奇异期权都是"收益依赖于标的价格"的产品。本章讨论两个更进一步的主题。第一个是直接以波动率为标的的合约:波动率互换和方差互换。它们让投资者只暴露于波动率而不暴露于价格方向,其定价公式同时也是 VIX 指数的计算方法,是期权市场与量化交易接触最多的地方。第二个是静态期权复制:用一篮子普通期权一次性搭出一个奇异期权的对冲,不需要频繁再平衡。
两部分有一个共同的思想:一个复杂的收益可以由一串普通期权静态拼出来。 方差互换用连续分布的执行价拼出对数合约,静态复制用不同到期日的期权拼出障碍边界。理解这一点,比记住公式更重要。
学习目标
- 写出波动率互换与方差互换的收益,理解为什么方差互换比波动率互换更容易定价。
- 从伊藤引理和 Carr–Madan 静态复制公式推导方差互换的复制公式 (26.6),理解它为什么与模型无关。
- 用离散执行价近似 (26.8) 计算公平方差和互换价值,复现例 26.4、26.5;理解波动率互换的凸性调整。
- 理解 VIX 的计算公式 (26.10) 与方差互换的关系,以及方差风险溢价的含义。
- 掌握静态期权复制的原理(边界上价值相等则内部相等),会为向上敲出看涨构造复制组合。
读前导读
这一章在解决什么问题。 你熟悉 VIX 被称为"恐慌指数",也知道它与期权隐含波动率有关,但很可能没见过它到底是怎么算出来的。本章回答:如果想直接押注"未来三个月市场会有多波动",而不关心涨跌方向,用什么合约、如何定价。答案是方差互换,它的公平价格可以由一整排虚值看涨、看跌期权的价格加权求和得到,VIX 就是这个求和公式。
这件事和你学过的固定收益知识可以类比:用一串零息债券可以复制任何确定的现金流;本章说的是,用一串不同执行价的期权可以复制任何"只依赖到期价格"的收益(Carr–Madan 公式),而"已实现方差"恰好能转化成这样一个收益加一个简单的交易策略。第二部分"静态复制"则像资产负债管理里的现金流匹配:与其每天调整 Delta 对冲,不如一次性买一组期权,使它在关键边界上和要对冲的产品价值一致。
需要先想起来的数学。
- 泰勒展开。 \(f(x)\approx f(a)+f'(a)(x-a)+\frac12f''(a)(x-a)^2\)。久期与凸性就是债券价格对收益率的一、二阶泰勒展开。本章用它近似 \(\ln\)、\(\sqrt{\ }\) 和 \(\sigma^2\)。例:\(\sqrt{1+x}\approx1+x/2-x^2/8\),\(x=0.1\) 时近似值 1.04875,真值 1.04881。见 第 00 册第 02 章 导数与泰勒展开。
- 伊藤引理(只需记住一个结论)。 若 \(dS/S=\mu dt+\sigma dz\),则 \(d\ln S=(\mu-\sigma^2/2)dt+\sigma dz\)。多出来的 \(-\sigma^2/2\) 来自 \(\ln\) 的二阶导数(凹性)和"\(dz^2=dt\)"。它也解释了"算术平均收益 > 几何平均收益,差约 \(\sigma^2/2\)",这在 CFA 的收益率计算中出现过。
- 定积分与黎曼和。 \(\int_a^bg(K)dK\) 可以用 \(\sum g(K_i)\Delta K_i\) 近似,式 (26.8) 正是这样做的。见 第 00 册第 03 章 积分。
- Jensen 不等式。 对凹函数 \(g\)(如 \(\sqrt{\ }\)、\(\ln\)),\(E[g(X)]\le g(E[X])\)。所以"期望波动率"小于"期望方差开根号"。例:\(X\) 以各 50% 的概率取 0.01 和 0.09,\(E[\sqrt X]=0.2\),\(\sqrt{E[X]}=\sqrt{0.05}=0.224\)。见 第 00 册第 07 章 概率中的分析工具(常用不等式)。
怎么读这一章。 核心必读:26.16 的合约定义、"为什么方差能被期权复制"的三步推导(本章最值得花时间的部分)、例 26.4、VIX 指数和方差风险溢价。凸性调整(式 26.9)理解结论即可。26.17 静态期权复制先抓住"边界上相等则内部相等"这一原理,再跟着例子算一遍头寸;数值细节第一次可以略过。
26.16 波动率互换与方差互换
合约定义
波动率互换(volatility swap)交换资产在 \(0\) 到 \(T\) 期间的已实现波动率与一个事先约定的固定波动率 \(\sigma_K\)。已实现波动率按第 15.4 节的方法计算,但假设日均收益为 0。有 \(n\) 个日观测 \(S_1,\dots,S_n\) 时:
方差互换(variance swap)交换已实现方差率 \(\bar V=\bar\sigma^2\) 与约定的方差率 \(V_K\),对支付固定方的收益为
推导拆解:\(\bar V-V_K\approx2\sigma_K(\bar\sigma-\sigma_K)\) 是把 \(g(\sigma)=\sigma^2\) 在 \(\sigma_K\) 处做一阶泰勒展开:\(g'(\sigma)=2\sigma\),所以 \(\bar\sigma^2-\sigma_K^2\approx2\sigma_K(\bar\sigma-\sigma_K)\)。精确地,\(\bar\sigma^2-\sigma_K^2=2\sigma_K(\bar\sigma-\sigma_K)+(\bar\sigma-\sigma_K)^2\),多出来的平方项永远为正,这就是方差互换多头的"凸性",与债券凸性的含义相同。 数值例:\(\sigma_K=20\%\),\(L_{vol}=10\) 万美元/波动率点,则 \(L_{var}=L_{vol}/(2\times20)=2{,}500\) 美元/方差点(方差点以 \(\sigma^2\times10^4\) 计,如 20% 对应 400)。若实现波动率为 30%,波动率互换赚 \(10\times10\) 万 \(=100\) 万美元;方差互换赚 \(2{,}500\times(900-400)=125\) 万美元。若实现波动率为 21%,两者分别赚 10 万和 10.25 万,几乎相同。
期权对价格和波动率都有暴露,而且暴露随时间和价格变化(第 19a、19b 章的 delta、vega)。用期权表达"波动率会上升"的观点,还要持续做 delta 对冲。波动率互换和方差互换则只暴露于波动率,是更"纯"的波动率工具。
为什么方差能被期权复制
方差互换比波动率互换更容易定价,因为 \(0\) 到 \(T\) 的方差率可以由一组看涨和看跌期权复制。下面给出推导思路(Technical Note 22;Demeterfi, Derman, Kamal & Zou 1999),这是本章最值得花时间的部分。
第一步:方差 = 动态部分 − 对数合约。 设风险中性世界中 \(dS/S=(r-q)\,dt+\sigma_t\,dz\),\(\sigma_t\) 可以是任意随机过程(随机波动率也行)。由伊藤引理
推导拆解:第一步的几处细节。
- 伊藤引理给出 \(d\ln S\) 时多出 \(-\sigma_t^2/2\):普通链式法则只给 \(d\ln S=dS/S\),但 \(S\) 的变动里有 \(\sigma dz\) 这一项,其平方 \(\sigma^2dz^2=\sigma^2dt\) 与 \(dt\) 同阶,不能忽略;\(\ln\) 的二阶导数是 \(-1/S^2\),乘以 \(\frac12(dS)^2=\frac12\sigma^2S^2dt\),得到 \(-\frac12\sigma^2dt\)。
- 两式相减,\(dz\) 项和 \((r-q)dt\) 项都抵消,只剩 \(\frac12\sigma_t^2dt\)。也就是说,"每天按比例收益记账"与"按对数收益记账"的差,恰好累积成已实现方差的一半。
- 积分时,\(\int_0^Td\ln S_t=\ln S_T-\ln S_0\),两边乘 \(2/T\) 即得 \(\bar V\) 的表达式。
- \(\hat E\int dS/S=(r-q)T\):\(dS/S\) 的漂移是 \((r-q)dt\),\(dz\) 项期望为零,积分后为 \((r-q)T\)。 金融含义:做多方差 = 做空 \(2/T\) 份对数合约 + 动态持有 \(2/T\) 元的标的。后者是一个简单的"保持固定金额敞口"的再平衡策略。
第二步:用期权复制对数合约。 对任意二次可微的 \(f\) 和任意固定点 \(S^*\),有恒等式(Carr–Madan 分解):
白话解释:Carr–Madan 公式其实是带"精确余项"的一阶泰勒展开。前两项 \(f(S^*)+f'(S^*)(S_T-S^*)\) 是在 \(S^*\) 处的切线,用现金和远期就能复制;余下的弯曲部分用期权补。为什么期权能补曲率:执行价为 \(K\) 的看涨收益 \((S_T-K)^+\) 是一个在 \(K\) 处折一下的"折线",许多折线叠加就能拼出任意光滑曲线,每个折点处需要转多少角度,就由该处的二阶导数 \(f''(K)\) 决定。 小检验:取 \(f(S)=S^2\),\(f''=2\),公式说 \(S_T^2\) = 常数 + 远期 + 2 份每个执行价的看跌/看涨(按 \(dK\) 积分)。直觉上二次函数处处同样弯,所以所有执行价的权重相同;而 \(\ln\) 在低价处更弯(\(1/K^2\) 更大),所以低执行价的看跌权重更大。 取期望一步用的是"期权价格 = \(e^{-rT}\times\) 风险中性期望收益",所以期望收益 \(=e^{rT}\times\) 价格;"积分与期望可交换"是因为期望是线性的(加权求和的期望 = 期望的加权求和)。
第三步:合并。 代入第一步,并用 \(F_0=S_0e^{(r-q)T}\) 化简(\(2(r-q)+\frac2T\ln S_0=\frac2T\ln F_0\)):
这个结果的意义。 推导中没有对 \(\sigma_t\) 的动态作任何假设,只用了"价格连续"(无跳跃)。所以 (26.6) 是模型无关的:只要有一整条期权价格曲线,就能读出市场给 \(0\) 到 \(T\) 已实现方差的风险中性期望。权重 \(1/K^2\) 意味着执行价越低的期权权重越大,股票期权的左偏斜因此会把公平方差抬到平值隐含方差之上。
离散执行价的实现
实际只有有限个执行价 \(K_1<\dots<K_n\) 的报价。取 \(S^*\) 为低于 \(F_0\) 的第一个执行价,积分用求和近似:
例 26.4 3 个月期合约:收取某指数的已实现方差,支付方差率 0.045,本金 1 亿美元。\(r=4\%\),股息率 1%,指数现值 1020。执行价 800, 850, …, 1200 的 3 个月期隐含波动率依次为 29%, 28%, 27%, 26%, 25%, 24%, 23%, 22%, 21%(典型的股指偏斜)。
此时 \(n=9\),\(F_0=1020e^{0.03\times0.25}=1027.68\),\(S^*=1000\)。用 BSM 和各自的隐含波动率算出 \(Q(K_i)\) 依次为 2.22、5.22、11.05、21.27、51.21、38.94、20.69、9.44、3.57,\(\Delta K_i=50\),
公平方差 0.0621 对应波动率 24.9%,高于平值附近的隐含波动率(执行价 1000 和 1050 分别为 25% 和 24%,远期 1027.68 附近约 24.4%)。这正是偏斜效应:低执行价期权的高隐含波动率经由 \(1/K^2\) 权重抬高了公平方差。
波动率互换与凸性调整
给波动率互换定价需要 \(\hat E(\bar\sigma)\),而 \(\bar\sigma=\sqrt{\bar V}\) 是 \(\bar V\) 的凹函数,由 Jensen 不等式 \(\hat E\sqrt{\bar V}<\sqrt{\hat E\bar V}\)。把
推导拆解:设 \(m=\hat E(\bar V)\),\(x=(\bar V-m)/m\),则 \(\bar\sigma=\sqrt m\sqrt{1+x}\approx\sqrt m(1+x/2-x^2/8)\)。 取期望:\(\hat E[x]=0\)(\(x\) 是相对 \(m\) 的偏差,平均为零),\(\hat E[x^2]=\text{var}(\bar V)/m^2\)。代入得式 (26.9)。 \(-x^2/8\) 这一项来自 \(\sqrt{\ }\) 的二阶导数为负(凹函数),这就是 Jensen 不等式的定量版本:方差越不确定,期望波动率比 \(\sqrt{\text{期望方差}}\) 低得越多。这和债券凸性调整的形式完全一样:用二阶导数 × 方差 / 2 修正一阶估计。
所以波动率互换需要额外估计"平均方差率的方差",这无法仅从当前期权价格读出,要借助随机波动率模型或经验估计。收取已实现波动率、支付 \(\sigma_K\) 的价值为 \(L_{vol}[\hat E(\bar\sigma)-\sigma_K]e^{-rT}\)。
例 26.5 沿用例 26.4,收取已实现波动率、支付 23%,本金 1 亿美元。\(\hat E(\bar V)=0.0621\),假设 3 个月平均方差率的标准差为 0.01,则 \(\text{var}(\bar V)=0.0001\),
VIX 指数
把 (26.6) 中的 \(\ln(F_0/S^*)\) 用二阶展开 \(\big(\frac{F_0}{S^*}-1\big)-\frac12\big(\frac{F_0}{S^*}-1\big)^2\) 近似,风险中性期望累计方差为
所以 VIX 的平方就是 30 天方差互换的公平执行价(忽略离散化与跳跃误差)。这句话把三件事连在一起:VIX 是期权价格的加权组合;它是风险中性世界中对未来 30 天已实现方差的期望;它可以通过交易一篮子虚值期权来复制。
方差风险溢价
在风险中性世界中 \(\hat E(\bar V)\) 是公平执行价,但现实世界中已实现方差的期望 \(E^P(\bar V)\) 一般更低。两者之差
金融直觉:VRP 与第 24 章"利差隐含违约概率远高于历史违约概率"是同一个现象:风险中性期望里包含了投资者为躲避坏情景愿意支付的溢价。方差在股市下跌时飙升,所以做多方差是一份很好的"崩盘保险",买方愿意多付钱;卖方赚到的 VRP 是承担尾部风险的报酬,而不是免费的午餐。 在 CAPM 语言下:做空方差的收益与市场收益高度正相关且负偏,"beta"在危机中会突然变得很大,用 Sharpe 比率评价这种策略会高估它的吸引力,评估时需要看最大回撤和偏度。
26.17 静态期权复制
动机
第 19a、19b 章的 delta、gamma 对冲方法对某些奇异期权很好用,对另一些则几乎行不通。
平均价格期权较容易对冲。 平均期覆盖整个存续期时,随着时间推移,越来越多的价格已被观测,收益的不确定性不断下降,最后几天 delta 趋于 0。
障碍期权较难对冲。 以外汇向下敲出看涨为例:汇率只比障碍高 0.0005 时,若触及障碍,期权一文不值;若没有触及,期权可能很值钱。delta 在障碍处不连续,常规的动态对冲在障碍附近需要巨大且剧烈变化的头寸(原书 Business Snapshot 26.1)。
Derman, Ergener & Kani(1995)提出静态期权复制(static options replication):找一个由活跃交易期权组成的组合,使它在某个边界上的价值与奇异期权相同,做空这个组合即构成对冲,此后无需再平衡。
原理
依赖同一标的的衍生品都满足同一个 BSM 偏微分方程。PDE 的解由边界条件唯一确定,所以:两个组合若在某个边界上的价值处处相等,则在边界所围区域内部的所有点上价值也相等。 我们只需在边界上匹配。
白话解释:为什么"边界上相等,内部就相等"?任何衍生品在内部某点的价值,都是"从这一点出发,标的价格一路走下去,第一次碰到边界时所得价值"的风险中性期望再贴现。如果两个组合在边界的每一点价值都一样,那么无论价格走哪条路先碰到边界,两者得到的都一样,期望也就一样。 金融类比:负债免疫或现金流匹配。只要资产与负债在每个"结算时点"上金额一致,中间市场怎么波动都不必调整。这里的"结算时点"换成了"敲出边界上的每一点和到期边界"。 例子里"在边界上逐点归零"的计算,本质是解一个三角形线性方程组:每加一个期权只影响一个新的边界点,所以可以从最晚的点倒着一个一个解出头寸。
例:9 个月向上敲出看涨
无股息股票,\(S_0=50\),\(K=50\),障碍 \(H=60\),\(r=10\%\),\(\sigma=30\%\),期限 9 个月。记 \(f(S,t)\) 为期权价值。在 \((S,t)\) 平面上选取边界(原书图 26.1):
- 到期边界 \(t=0.75\):\(f(S,0.75)=\max(S-50,0)\),\(S<60\);
- 障碍边界 \(S=60\):\(f(60,t)=0\),\(0\le t\le0.75\)。
第一条边界由 1 份 9 个月、执行价 50 的欧式看涨(期权 A)匹配。
第二条边界无法处处匹配,只能在有限个点上匹配。把期限分为 \(N\) 步,每步 \(\Delta t\)。用执行价 60、在 \(N\Delta t\)(9 个月)到期的看涨匹配点 \(\{60,(N-1)\Delta t\}\);用执行价 60、在 \((N-1)\Delta t\) 到期的看涨匹配点 \(\{60,(N-2)\Delta t\}\);依此类推。之所以选执行价 60,是因为它们在 \(S\le60\) 的到期边界上价值为 0,不会破坏第一条边界的匹配。按这种顺序选择,每个新加入的期权在已匹配的边界点上取值为 0(这样可以逐个求解,并非必需;也可以选 \(K\) 个期权解 \(K\) 个线性方程)。
取 \(\Delta t=0.25\),除 A 外还需执行价 60、9/6/3 个月到期的欧式看涨 B、C、D。
- 在点 \(\{60,0.5\}\):B(剩余 3 个月)价值 4.33,A(剩余 3 个月、执行价 50)价值 11.54。要使组合价值为 0,B 的头寸为 \(-11.54/4.33=-2.66\)。
- 在点 \(\{60,0.25\}\):A 与 B 合计价值 \(-4.21\),C(剩余 3 个月)价值 4.33,C 的头寸为 \(4.21/4.33=0.97\)。
- 同理在点 \(\{60,0\}\) 求得 D 的头寸为 0.28。
| 期权 | 执行价 | 到期(年) | 头寸 | 初始价值 |
|---|---|---|---|---|
| A | 50 | 0.75 | +1.00 | +6.99 |
| B | 60 | 0.75 | −2.66 | −8.21 |
| C | 60 | 0.50 | +0.97 | +1.78 |
| D | 60 | 0.25 | +0.28 | +0.17 |
组合初始价值 0.73,而解析公式给出的向上敲出看涨价值为 0.31。差异来自第二条边界只在 3 个点上匹配,点与点之间组合价值并不为 0。匹配 18 个点(每半个月一个到期日)时组合价值降为 0.38,匹配 100 个点时降为 0.32,收敛到解析值。
用法与优点
对冲时卖空复制组合;一旦标的触及边界的任何部分(价格到 60,或到期),就把组合平仓。与 delta 对冲相比:
- 不需要频繁再平衡,交易成本低,也不受障碍附近 delta 跳变的困扰;
- 适用范围广,任何能写出边界条件的产品都可以尝试;
- 边界和所用期权的选择很灵活,可以优先使用流动性最好的期权。
它的局限是:在 BSM 模型下匹配,真实世界的波动率曲面变化会使"边界上价值为 0"不再精确成立;平仓时需要按当时市价卖出一串仍有时间价值的期权,那时的隐含波动率决定了对冲误差。
量化实战
本章内容在量化交易中的用途
- 波动率指数与因子。式 (26.6)/(26.8)/(26.10) 是计算任何"VIX 型"指数的方法:对 A 股 50ETF、300ETF 期权或商品期权,按同样方法可以自己编制隐含方差指数。它是择时、风险预算、波动率目标策略的常用输入。
- 方差风险溢价策略。隐含方差(VIX²)减去随后实现的方差就是 VRP。做空 VRP(卖方差互换、卖 delta 对冲的跨式、做空 VIX 期货)是最经典的"风险溢价收割"策略,其回测必须特别处理尾部事件和保证金。
- 隐含与预测的区分。凸性调整 (26.9) 和 VRP 都在提醒:隐含波动率不是对未来已实现波动率的无偏预测。用隐含波动率做波动率预测的特征时,要么估计并扣除溢价,要么把两者都作为特征让模型学习。
- 低换手对冲。静态复制的思想(在边界上匹配、用流动性好的工具静态持有)可以推广到结构化产品对冲、尾部风险对冲组合设计。
Python 示例:方差互换复制、Heston 世界中的检验与静态复制
代码分三段:(1) 复现例 26.4、26.5,并用 VIX 公式 (26.10) 计算;(2) 在一个 Heston 随机波动率世界中模拟 40 万条路径,用模拟出的期权价格按 (26.6) 计算公平方差,与路径上真实的平均方差比较,验证复制公式的模型无关性;(3) 复现表 26.1 的静态复制,并展示匹配点增加时的收敛。
import numpy as np
from scipy.stats import norm
N = norm.cdf
def bsm(S, K, T, r, q, sig, kind="call"):
S, K = np.asarray(S, float), np.asarray(K, float)
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 fair_variance(F0, Ks, calls, puts, r, T):
"""式 (26.6)(26.8):由一串执行价的期权价格计算 E(V̄)"""
Ks = np.asarray(Ks, float)
Sstar = Ks[Ks <= F0].max() # 低于 F0 的第一个执行价
Q = np.where(Ks < Sstar, puts, np.where(Ks > Sstar, calls, 0.5*(calls + puts)))
dK = np.empty_like(Ks)
dK[1:-1] = 0.5*(Ks[2:] - Ks[:-2]); dK[0] = Ks[1] - Ks[0]; dK[-1] = Ks[-1] - Ks[-2]
integral = np.sum(dK/Ks**2*np.exp(r*T)*Q)
EV = 2/T*np.log(F0/Sstar) - 2/T*(F0/Sstar - 1) + 2/T*integral
return EV, Sstar, Q, integral
# ---------- 1) 例 26.4 / 26.5 ----------
S0, r, q, T = 1020, 0.04, 0.01, 0.25
Ks = np.arange(800, 1201, 50)
ivs = np.array([29, 28, 27, 26, 25, 24, 23, 22, 21])/100
calls = np.array([bsm(S0, k, T, r, q, s) for k, s in zip(Ks, ivs)])
puts = np.array([bsm(S0, k, T, r, q, s, "put") for k, s in zip(Ks, ivs)])
F0 = S0*np.exp((r - q)*T)
EV, Sstar, Q, integral = fair_variance(F0, Ks, calls, puts, r, T)
print("F0 = %.2f, S* = %.0f" % (F0, Sstar))
print("Q(K_i) =", np.round(Q, 2))
print("积分近似 = %.6f, E(V) = %.4f, 公平波动率 = %.2f%%" % (integral, EV, 100*np.sqrt(EV)))
print("方差互换价值 = %.2f 百万美元" % (100*(EV - 0.045)*np.exp(-r*T)))
Esig = np.sqrt(EV)*(1 - 0.125*0.01**2/EV**2)
print("E(σ) = %.4f, 波动率互换价值 = %.2f 百万美元" % (Esig, 100*(Esig - 0.23)*np.exp(-r*T)))
VT = -(F0/Sstar - 1)**2 + 2*integral # 式 (26.10):VIX 型近似
print("VIX 型近似: E(V)T = %.6f -> 年化波动率 %.2f%%" % (VT, 100*np.sqrt(VT/T)))
# ---------- 2) 复制公式与模型无关:Heston 世界里的检验 ----------
def heston_paths(S0, v0, kappa, theta, xi, rho, r, q, T, n, m, seed=0):
rng = np.random.default_rng(seed)
dt = T/m
lnS = np.full(n, np.log(S0)); v = np.full(n, v0); intv = np.zeros(n)
for _ in range(m):
z1 = rng.standard_normal(n)
z2 = rho*z1 + np.sqrt(1 - rho**2)*rng.standard_normal(n)
vp = np.maximum(v, 0.0) # full truncation
intv += vp*dt
lnS += (r - q - 0.5*vp)*dt + np.sqrt(vp*dt)*z1
v += kappa*(theta - vp)*dt + xi*np.sqrt(vp*dt)*z2
return np.exp(lnS), intv/T
r, q, T = 0.03, 0.0, 0.5
ST, Vbar = heston_paths(100, 0.04, 2.0, 0.05, 0.6, -0.7, r, q, T, n=400_000, m=200)
F0 = 100*np.exp((r - q)*T)
ST *= F0/ST.mean() # 矩匹配,消除抽样误差带来的远期偏差
Ks = np.arange(40, 200.1, 2.5)
callsH = np.array([np.exp(-r*T)*np.maximum(ST - k, 0).mean() for k in Ks])
putsH = np.array([np.exp(-r*T)*np.maximum(k - ST, 0).mean() for k in Ks])
EVrep, *_ = fair_variance(F0, Ks, callsH, putsH, r, T)
def iv(price, K):
from scipy.optimize import brentq
return brentq(lambda s: bsm(100, K, T, r, q, s) - price, 1e-4, 3)
print("Heston: K=80/100/120 的隐含波动率 = %s" %
["%.1f%%" % (100*iv(callsH[i], Ks[i])) for i in (np.searchsorted(Ks, 80), np.searchsorted(Ks, 100), np.searchsorted(Ks, 120))])
print("Heston: 期权复制得到的公平方差 = %.5f, 路径上已实现方差均值 = %.5f, 平值隐含方差 = %.5f"
% (EVrep, Vbar.mean(), iv(callsH[np.searchsorted(Ks, 100)], 100)**2))
# ---------- 3) 静态期权复制:9 个月向上敲出看涨 ----------
S0, K, H, T, r, sig = 50.0, 50.0, 60.0, 0.75, 0.10, 0.30
def uo_call_exact():
lam = (r + 0.5*sig**2)/sig**2; sT = sig*np.sqrt(T)
y = np.log(H**2/(S0*K))/sT + lam*sT; x1 = np.log(S0/H)/sT + lam*sT; y1 = np.log(H/S0)/sT + lam*sT
cui = (S0*N(x1) - K*np.exp(-r*T)*N(x1 - sT) - S0*(H/S0)**(2*lam)*(N(-y) - N(-y1))
+ K*np.exp(-r*T)*(H/S0)**(2*lam - 2)*(N(-y + sT) - N(-y1 + sT)))
return bsm(S0, K, T, r, 0, sig) - cui
def static_replication(n_steps):
dt = T/n_steps
mats = dt*np.arange(n_steps, 0, -1) # 执行价 60 的期权到期日:T, T-dt, ..., dt
w = np.zeros(n_steps)
for j, Tj in enumerate(mats):
t = Tj - dt # 第 j 个期权负责匹配边界点 (H, t)
val = bsm(H, K, T - t, r, 0, sig) # 期权 A 在该点的价值
for i in range(j):
val += w[i]*bsm(H, H, mats[i] - t, r, 0, sig)
w[j] = -val/bsm(H, H, Tj - t, r, 0, sig)
price = bsm(S0, K, T, r, 0, sig) + sum(w[i]*bsm(S0, H, mats[i], r, 0, sig) for i in range(n_steps))
return w, price
w, p3 = static_replication(3)
print("静态复制(3 个边界点)头寸 B,C,D =", np.round(w, 2), " 组合价值 = %.2f" % p3)
for n in (18, 100):
print("静态复制(%d 个边界点)组合价值 = %.2f" % (n, static_replication(n)[1]))
print("解析解 = %.2f" % uo_call_exact())
输出:
F0 = 1027.68, S* = 1000
Q(K_i) = [ 2.22 5.22 11.05 21.27 51.21 38.94 20.69 9.44 3.57]
积分近似 = 0.008139, E(V) = 0.0621, 公平波动率 = 24.92%
方差互换价值 = 1.69 百万美元
E(σ) = 0.2484, 波动率互换价值 = 1.82 百万美元
VIX 型近似: E(V)T = 0.015511 -> 年化波动率 24.91%
Heston: K=80/100/120 的隐含波动率 = ['26.4%', '19.3%', '14.7%']
Heston: 期权复制得到的公平方差 = 0.04367, 路径上已实现方差均值 = 0.04364, 平值隐含方差 = 0.03743
静态复制(3 个边界点)头寸 B,C,D = [-2.66 0.97 0.28] 组合价值 = 0.73
静态复制(18 个边界点)组合价值 = 0.38
静态复制(100 个边界点)组合价值 = 0.32
解析解 = 0.31
读输出时注意:
- 例 26.4 的 9 个 \(Q(K_i)\)、积分 0.008139、\(\hat E(\bar V)=0.0621\)、价值 1.69 百万美元,例 26.5 的 0.2484 和 1.82 百万美元,均与原书一致。
- Heston 世界有明显的股票型偏斜(\(K=80\) 时隐含波动率 26.4%,\(K=120\) 时 14.7%)。在这样的世界里,用期权价格按 (26.6) 复制出的公平方差 0.04367 与路径上已实现方差的均值 0.04364 几乎相同,验证了复制公式不依赖模型;而平值隐含方差只有 0.0374,比公平方差低 14%。用平值隐含波动率的平方作为方差互换执行价,在有微笑或偏斜的市场里会系统性低估。 练习 5 会看到,即使没有偏斜(\(\rho=0\)),波动率的随机性本身也会造成这一差距。
- 静态复制组合价值 0.73 → 0.38 → 0.32,逐步逼近解析值 0.31,头寸 −2.66、0.97、0.28 与表 26.1 一致。
实战提示:真实市场计算 VIX 型指数时,执行价范围有限、两端截断,会低估尾部贡献;同时 (26.6) 假设价格无跳跃,有跳跃时复制的是"跳跃调整后的方差",与按日收益平方计算的已实现方差有系统差别。做 VRP 研究时这两项误差都要估计。
本章小结
波动率互换和方差互换让投资者只暴露于波动率。方差互换可以用一串虚值期权静态复制:伊藤引理把已实现方差写成"每时刻持有 1 元标的的动态策略"减去"对数合约",对数合约再由 Carr–Madan 分解写成执行价权重为 \(1/K^2\) 的期权组合,得到模型无关的公式 (26.6)。离散执行价下用 (26.8) 近似,VIX 就是 (26.10) 在 30 天期限上的实现,VIX 的平方约等于 30 天方差互换的公平执行价。波动率互换还需要凸性调整 (26.9),依赖方差的方差,不能仅由期权价格决定。静态期权复制利用 PDE 解的唯一性:在边界上匹配奇异期权的价值,内部便自动匹配;向上敲出看涨的例子中,匹配点越多,复制组合价值越接近解析值。
| 概念/公式 | 内容 |
|---|---|
| 波动率互换收益 | \(L_{vol}(\bar\sigma-\sigma_K)\) |
| 方差互换收益 | \(L_{var}(\bar V-V_K)\),\(L_{var}=L_{vol}/(2\sigma_K)\) |
| 方差的分解 | \(\bar V=\frac2T\big[\int_0^T dS/S-\ln(S_T/S_0)\big]\) |
| Carr–Madan 分解 | \(f(S_T)=f(S^*)+f'(S^*)(S_T-S^*)+\int_0^{S^*}f''(K)(K-S_T)^+dK+\int_{S^*}^\infty f''(K)(S_T-K)^+dK\) |
| 公平方差 (26.6) | \(\frac2T\ln\frac{F_0}{S^*}-\frac2T(\frac{F_0}{S^*}-1)+\frac2T\int\frac{e^{rT}Q(K)}{K^2}dK\) |
| 离散近似 (26.8) | \(\sum\frac{\Delta K_i}{K_i^2}e^{rT}Q(K_i)\),只用虚值期权 |
| 凸性调整 (26.9) | \(\hat E(\bar\sigma)\approx\sqrt{\hat E\bar V}\big[1-\frac{\text{var}(\bar V)}{8\hat E(\bar V)^2}\big]\) |
| VIX (26.10) | \(\hat E(\bar V)T=-(\frac{F_0}{S^*}-1)^2+2\sum\frac{\Delta K_i}{K_i^2}e^{rT}Q(K_i)\) |
| 方差风险溢价 | \(\hat E(\bar V)-E^P(\bar V)\),股指上长期为正 |
| 静态复制原理 | 边界上价值相等 ⇒ 区域内部价值相等 |
练习
基础
-
方差互换的名义本金 \(L_{var}=L_{vol}/(2\sigma_K)\) 是怎么来的?若 \(\sigma_K=20\%\)、\(L_{vol}=10\) 万美元/波动率点,已实现波动率为 30%,比较两种互换的盈亏。 提示:\(\bar V-V_K\approx2\sigma_K(\bar\sigma-\sigma_K)\)。注意波动率点为 1%,\(L_{vol}\) 换算为每 1.0 波动率 1000 万美元,\(L_{var}=2500\) 万;波动率互换盈利 \(1000\times0.10=100\) 万,方差互换盈利 \(2500\times(0.09-0.04)=125\) 万,凸性使方差互换赚得更多。
-
为什么 (26.8) 只用虚值期权?如果用实值期权代替,在理论上是否等价? 提示:由看涨看跌平价,同执行价的实值看涨 = 虚值看跌 + 远期,远期部分在推导中被 \(f'(S^*)(S_T-S^*)\) 吸收,理论上等价;实务中虚值期权流动性好、买卖价差小。
-
例 26.4 中若所有执行价的隐含波动率都是 25%,\(\hat E(\bar V)\) 约为多少?与原例比较说明偏斜的影响。 提示:平坦 25% 时代码给出 0.06250,离散化误差极小(BSM 世界里公平方差就是 \(\sigma^2\))。原例为 0.0621,对应 24.92%:它低于 25% 是因为远期价格附近的隐含波动率只有约 24.4%,又高于 24.4% 是因为低执行价期权的高隐含波动率经由 \(1/K^2\) 权重抬高了结果。用代码改
ivs即可验证。
进阶
-
从 \(\frac{dS}{S}-d\ln S=\frac12\sigma_t^2dt\) 出发,写出复制方差互换的完整交易策略:期初买哪些期权、各多少,期间如何交易标的,到期如何结算。 提示:期初买入 \(\frac{2}{TK^2}\Delta K\) 份各执行价的虚值期权(构成 \(-\frac2T\ln S_T\) 的复制),期间每时刻持有 \(\frac{2}{T}\cdot\frac{1}{S_t}\) 股标的价值等于 \(2/T\) 元(以无风险利率融资),两者合并的到期价值为 \(\bar V\) 加一个确定性常数。
-
用本章 Heston 代码,把相关系数从 −0.7 改为 0 和 +0.5,观察公平方差与平值隐含方差的差距如何变化,并解释。 提示:实际运行会发现,\(\rho=0\) 和 \(\rho=+0.5\) 时公平方差仍约为 0.0437,平值隐含方差约为 0.0377 和 0.0368,差距并未消失。原因是波动率的波动(\(\xi=0.6\))本身使微笑两翼上翘,平值隐含波动率低于平均波动率;\(\rho\) 只决定微笑向哪边倾斜。公平方差只取决于平均方差的期望,与 \(\rho\) 几乎无关。
-
在本章 Heston 世界中估计 \(\text{var}(\bar V)\),按 (26.9) 计算波动率互换的公平执行价,并与路径上 \(\sqrt{\bar V}\) 的均值比较。 提示:
Vbar.var()给出方差;二阶近似在波动率的波动很大时会有明显误差,需要更高阶修正或直接用蒙特卡洛。 -
对例 26.4 的 3 个月方差互换,计算其对每个执行价期权的 vega 暴露,说明为什么方差互换的 vega 与标的价格无关("纯波动率暴露")。 提示:权重 \(1/K^2\) 恰好使组合的"美元 gamma" \(\frac12\Gamma S^2\) 对所有 \(S\) 都是常数(对数合约的 \(S^2f''(S)=-1\)),因而 vega 不随 \(S\) 变化(原书习题 26.24、26.34 涉及方差互换计算)。
-
用 26b 代码中的
static_replication,改为用期权 A 加上若干个执行价 60、到期日相同(9 个月)但执行价不同的期权,能否完成匹配?比较效果。 提示:可以选 \(K\) 个期权、在 \(K\) 个边界点上解线性方程组;不同执行价的组合匹配质量和稳健性不同(原书习题 26.28、26.29)。
原书推荐习题:26.24、26.34(方差互换估值,不同的波动率微笑与期限,建议编程实现 VIX 计算);26.28、26.29(静态期权复制);26.31(比较普通期权与平均价格期权的 delta 对冲效果,印证 Business Snapshot 26.1);26.32(复合期权的 delta–gamma 对冲)。
原书对照
| 本章小节 | 原书章节 | PDF 页码 |
|---|---|---|
| 26.16 波动率互换与方差互换 | 26.16 Volatility and Variance Swaps(例 26.4、26.5,VIX) | p.636–639 |
| 方差互换复制的推导 | Technical Note 22(原书网站) | — |
| 26.17 静态期权复制 | 26.17 Static Options Replication(表 26.1、图 26.1) | p.639–641 |
| 奇异期权对冲难易 | Business Snapshot 26.1 | p.639–641 |
| 小结与习题 | Summary, Practice Questions 26.24、26.28–26.34 | p.641–646 |
方差风险溢价、Heston 世界的检验为本教材补充,不在原书中。延伸阅读:Demeterfi, Derman, Kamal & Zou (1999) 方差互换;Carr & Lee (2007) 波动率衍生品;Derman, Ergener & Kani (1995) 静态复制;CBOE VIX 白皮书。