方差互换和波动率互换:公平执行价、复制组合、凸性
方差互换为什么能被期权静态复制、波动率互换为什么不能:对数合约恒等式、Carr-Madan 公式、凸性调整,以及这条差别如何决定两种工具的用法。
方差互换是关于实现方差的远期合约:到期时,多方收到 ,其中 是执行价, 是期间对数收益的年化实现方差。波动率互换看起来只是它的近亲——支付 ,单位还是更直观的百分比。
但这两个工具之间隔着一条本质的线:方差互换的公平执行价可以不依赖任何模型、只用一排欧式期权算出来并静态复制;波动率互换不能。市场上方差互换的成交远多于波动率互换,根子就在这条线上。本文把这条线讲清楚:恒等式从哪来、复制怎么搭、平方根差出的凸性值多少钱、以及”模型无关”这四个字的边界在哪。
先把标的定义清楚
实现方差从对数收益计算:
其中 是等间距时间戳(日频就是每日收盘), 是收益个数,年化因子 252 对应交易日数。理想化的连续版本是积分点方差:
合约会写明用哪个采样;先用连续版本推理论,离散差异后面单独算。
“公平执行价” 是让互换在起始时刻价值为零的水平,也就是风险中性期望:
到这里为止都是定义。问题是:这个期望凭什么能不指定波动率模型就算出来?
对数合约:整个方法的支点
支点是一个 Itô 恒等式。对任何连续路径的正价格过程,对 用 Itô 公式再积分,得到:
左边是我们想交易的累积方差。右边两项各有身份: 是一个持续持有 股股票的动态策略的收益——可以交易; 是一个只依赖终值的收益——对数合约。也就是说,累积方差 = 一个 delta 策略 + 一个静态终值收益。方差本身是路径量,但它的”不可对冲部分”整个塌缩到了终值上,这就是一切的来源。
取风险中性期望:,而 ,两者相消,剩下:
公平方差执行价就是对数合约的(缩放)价格。剩下的问题变成:对数合约怎么定价?这就是欧式期权登场的地方——任何二次可微的终值收益都能被看涨、看跌的连续谱静态复制。对 做泰勒-积分分解(二阶导是 ):
第一项是远期头寸(风险中性期望为零),后两项是按 加权的虚值看跌和看涨组合。逐项取期望、换成市场价格,就得到:
Carr-Madan 公式
其中 ,、 是行使价 的看涨、看跌价格,减去内在价值意味着只有时间价值(即虚值部分)进入积分(Carr & Madan, 1998;对数合约的原始想法见 Neuberger, 1994)。
这个公式模型无关:它不依赖波动率模型,只依赖期权价格。只要期权价格无套利,公式就给出唯一的无套利方差执行价——一旦观察到连续的期权价格集,方差互换执行价就定了,不需要任何分布假设。同样的构造适用于一切能写成期权组合积分的风险中性期望。
注意推导里唯一动用的动力学假设是路径连续。Itô 恒等式对任何连续半鞅成立,不管波动率是常数、局部的还是随机的。有跳跃时恒等式失效——这是”模型无关”的第一条边界,记住它,后面还会用到。
数值实现
实践里积分变成上市行使价上的离散求和:
import numpy as np
def variance_strike(strikes, otm_mids, F0, T, r):
"""公平方差执行价:对 OTM 期权中间价按 1/K^2 加权做梯形积分。
strikes : 升序行使价(F0 以下取看跌、以上取看涨)。
otm_mids : 对应的虚值期权中间价。
"""
strikes = np.asarray(strikes, dtype=float)
otm_mids = np.asarray(otm_mids, dtype=float)
integral = np.trapz(otm_mids / strikes**2, strikes)
return 2.0 * np.exp(r * T) / T * integral
数值上的麻烦全在两端:被积函数的 权重在低行使价方向放大看跌价格,而两翼恰恰是报价最稀、价差最宽的地方。稳健实现要么截断积分区间,要么用参数拟合(SVI)外推翼部。实务上常见的做法是在 到 之间用报价、区间外靠外推——这意味着你的方差执行价对翼部外推方式有真实的敏感度,这是它虽然”模型无关”却仍有实现差异的原因之一。
凸性:波动率互换差在哪
波动率互换支付 。平方根是凹函数,Jensen 不等式立刻给出 ,也就是 ——波动率互换执行价低于方差执行价的平方根,方差的波动越大差得越多。对 在 处展开到二阶:
修正项正比于实现方差自身的方差——也就是 vol-of-vol。而且有一个不需要展开的精确关系,直接由方差的定义得到:
(风险中性测度下的方差。)左边永远非负:方差执行价总是”贵过”波动率执行价的平方,贵出的正是实现波动率的不确定性。
量级感受:对 1 年期 SPX,ATM 隐含 vol 在 16% 上下时,波动率互换执行价大约在 17-18%,方差执行价开方后大约 18-19%——偏斜把两者都抬到 ATM vol 之上,凸性再在两者之间劈开 1-2 个 vol 点。由此有一条实务纪律:如果你的模型给出的 跟市场对不上,那是 vol-of-vol 校准的问题;别去动 来”凑”——它们对模型的依赖程度完全不同,一个几乎不依赖,一个全靠模型。
离散监测
真实合约按离散收益结算——日收盘或周收盘,不是连续路径。离散公平执行价直接按定义:
它和连续版本的差:
修正项由离散收益的高阶矩驱动,显式表达依赖模型——Broadie 和 Jain(2008)对各主流模型逐一算过。对日度采样(),这个差通常很小,符号取决于漂移、跳跃和偏斜的相对大小。实务里它很少是方差账簿的主要误差源;更大的麻烦是数据本身:不同供应商的日收盘价对不上,定盘价会被交易对手争议。合约条款里”用谁的收盘价”比离散化修正值钱得多。
两种收益,两种用法
把两个收益并排放着看:
方差互换的收益在波动率里是凸的:波动率翻倍,收益翻四倍。做多方差在尾部事件里被凸性加速,这正是买家要的;反过来,卖方差的人在波动率爆炸时亏得比线性快,这正是卖家要收凸性溢价的原因。波动率互换的收益在 vol 里是线性的,没有这层加速,对只想表达”实现 vol 高于/低于隐含”的方向观点更干净。
复制性质的差别决定了对冲方式。方差互换:买入 加权的期权组合,再按 做 delta 对冲,理论上一劳永逸。波动率互换没有静态复制——它需要动态对冲或者一个模型,实践中按复制组合的 vega、gamma 随微笑演变动态调整。定价流程大致是:
def vol_swap_strike(strikes, otm_mids, F0, T, r):
K_var = variance_strike(strikes, otm_mids, F0, T, r)
K_var_adj = K_var + discrete_monitoring_adjustment(...) # 模型相关;日度采样下很小
K_vol = np.sqrt(K_var_adj) - convexity_adjustment(...) # ~ Var(V) / (8 K_var^{3/2})
return K_vol
两个调整项都是模型相关的;Heston 和 SABR 下都有闭式近似。注意结构:方差执行价那一步是模型无关的,之后每往波动率互换走一步,就多一分对模型的依赖。
“模型无关”的完整边界
把前面散落的限制条件收拢。Carr-Madan 复制严格成立需要: 上连续的期权行使价、期权价格无套利、路径连续、以及持有到期。每条不满足都留下一个缺口——离散行使价靠 SVI 类外推补,精度够用;随机利率让折现因子不再确定,给 添一个含利率波动率的凸性项;跳跃直接破坏 Itô 恒等式;买卖价差侵蚀”静态持有到期”的理论利润。这些缺口合起来,就是现实方差互换执行价相对理论公平值总有偏离的原因,实务中的调整量通常在几十个基点的量级。
算例:SPX 1 年方差互换
用一组观察到的期权价格走一遍 Carr-Madan。假设 ,,红利收益率 1.8%,1 年远期 ,ATM vol 大约 18%,带现实偏斜。 附近的样本报价:
| 行使价 | 类型 | 中间价 | 权重下的贡献 |
|---|---|---|---|
| 3500 | 看跌 | 175 | 大(低行使价权重高) |
| 4000 | 看跌 | 95 | 显著 |
| 4500 | 跨式 | 770 | 主要质量在 ATM 附近 |
| 5000 | 看涨 | 35 | 中等 |
| 5500 | 看涨 | 9 | 小 |
代入公式积分,结果大约 ,即 19.5% 的年化波动率——高于 18% 的 ATM vol,高出来的部分就是偏斜和 vol-of-vol 沿翼部积出来的溢价。
拿一个新校准的 Heston 模型对照。Heston 下积分方差的期望有闭式:
取 ,,,得 ,即 20% vol,和 Carr-Madan 的结果相去不远。注意一个细节: 时期望恰好等于 ,均值回归速度 完全不进入——只有当前方差偏离长期水平时, 才通过衰减权重决定期限结构的形状。两种算法给出相近的答案,但地位不同:Carr-Madan 的结果是市场实际交易的”模型无关”执行价,Heston 的结果是一个模型的意见。
名义、对冲与 P&L
方差互换按”每方差点”计名义,但交易员习惯用 vega 语言谈风险。在执行价附近,两种名义的换算是:
(对 求导即得, 以 vol 点计。)举个数:vega notional 每 vol 点 、执行价 19 的头寸,对应 variance notional 每方差点。波动率从 19 涨到 20,方差从 361 到 400,P&L ——和 vega 名义基本对上。涨 5 个 vol 点到 24,方差变 576,P&L ,比线性外推的 多出一截——那一截就是凸性,多头白拿、空头白付。
持有期内的 P&L 分四块记:已实现腿的累积(过去的收益平方逐日入账,到期时它就是全部);按市值计价(剩余期限的公平执行价 随曲面每天动);复制组合的对冲损益;以及没有传统意义上的 carry——不付 premium,但 vega 敞口一直在。二阶敏感度也值得看一眼:
即 Carr-Madan 执行价对 vol 的二阶响应。微笑平的时候它接近零;微笑陡、且微笑形状随 vol 水平联动时它不为零,波动率账簿应当追踪。
拿它交易什么
方差互换最干净的用途是实现 vs 隐含:执行价锁定在期权市场决定的 Carr-Madan 公平值,你认为实现波动率会超过它,就买;反之就卖。经验上,隐含方差长期平均高于实现方差——SPX 上这个方差风险溢价长期看在 2-3 个 vol 点的量级(随样本期变化)。溢价存在的理由不难懂:客户端结构性地买保护,承接这些卖单的做市商要求补偿,再加上方差空头在尾部亏得非线性地快,这个补偿理应为正。卖波动率收这份溢价是一门真实的生意,也是一门在坏日子里亏得最快的生意。
第二类用途是期限结构交易。波动率期限结构平静时向上倾斜、压力时倒挂;倒挂时做多长期方差互换收曲线正常化的 roll-down,陡峭时反着做。这类交易实现上干净,风险也直白:曲线可以比你的耐心更久地保持形状,而空头腿上实现波动率随时可能超过隐含。
和 VIX 期货的关系值得单独说清。VIX 期货到期支付 ,VIX 是 30 天常数到期的隐含波动率指数,所以:
差一层凸性。VIX 期货押的是将来的隐含波动率,方差互换押的是实现方差——相关但不是一回事,两者之间的基差本身就是一个可交易的量。渠道也不同:VIX 期货和 ETF 在交易所,流动性好,是零售的入口;指数方差互换基本都在 OTC,因为到期、名义、监测频率、定盘约定都要定制,这类灵活性交易所给不了。
跨市场的账簿还有一层:SPX、FTSE、日经的方差曲面在压力期一起动,逐个对冲会低估联合风险。标准做法是对曲面历史做 2-3 因子的 PCA,把账簿对”全球波动率”、“偏斜”这类因子的敞口配平,而不是逐合约处理。
收尾
这篇文章的主线可以压缩成一句:能静态复制的量,市场自己定价;不能静态复制的量,模型定价。方差互换属于前者——Carr-Madan 公式把它的公平执行价钉死在期权价格上;波动率互换属于后者——差出的那个凸性调整,是模型的意见,也是模型风险所在。理论部分是干净的;实务的功夫在数据上——用哪些期权价、怎么处理价差、离散监测怎么写进合约。下一篇转向路径依赖期权:亚式、障碍、回望,那里连”终值收益”这个前提都要放弃。
阅读清单。 Hull, Options, Futures, and Other Derivatives, 第 10 版(2018)。Wilmott, Paul Wilmott on Quantitative Finance, 第 2 版(2007)。Carr & Madan, “Towards a Theory of Volatility Trading” (1998)。Neuberger, “Volatility Trading” (1994)关于原始对数合约想法。Broadie & Jain, “Pricing and Hedging Volatility Derivatives” (2008)关于离散监测调整。