跳到正文

方差互换和波动率互换:公平执行价、复制组合、凸性

方差互换为什么能被期权静态复制、波动率互换为什么不能:对数合约恒等式、Carr-Madan 公式、凸性调整,以及这条差别如何决定两种工具的用法。

第 4 篇 · 共 12 篇 约 11 分钟

方差互换是关于实现方差的远期合约:到期时,多方收到 (Vrealized−Kvar)⋅notional(V_{\text{realized}} - K_{\text{var}}) \cdot \text{notional},其中 KvarK_{\text{var}} 是执行价,VrealizedV_{\text{realized}} 是期间对数收益的年化实现方差。波动率互换看起来只是它的近亲——支付 Vrealized−Kvol\sqrt{V_{\text{realized}}} - K_{\text{vol}},单位还是更直观的百分比。

但这两个工具之间隔着一条本质的线:方差互换的公平执行价可以不依赖任何模型、只用一排欧式期权算出来并静态复制;波动率互换不能。市场上方差互换的成交远多于波动率互换,根子就在这条线上。本文把这条线讲清楚:恒等式从哪来、复制怎么搭、平方根差出的凸性值多少钱、以及”模型无关”这四个字的边界在哪。

先把标的定义清楚

实现方差从对数收益计算:

Vrealized=252n∑i=1n(ln⁡StiSti−1−rˉ)2V_{\text{realized}} = \frac{252}{n}\sum_{i=1}^n \left(\ln \frac{S_{t_i}}{S_{t_{i-1}}} - \bar{r}\right)^2

其中 tit_i 是等间距时间戳(日频就是每日收盘),nn 是收益个数,年化因子 252 对应交易日数。理想化的连续版本是积分点方差:

Vrealized=1T∫0Tσt2 dtV_{\text{realized}} = \frac{1}{T} \int_0^T \sigma_t^2 \, dt

合约会写明用哪个采样;先用连续版本推理论,离散差异后面单独算。

“公平执行价” KvarK_{\text{var}} 是让互换在起始时刻价值为零的水平,也就是风险中性期望:

EQ[Vrealized]=Kvar\mathbb{E}^{\mathbb{Q}}[V_{\text{realized}}] = K_{\text{var}}

到这里为止都是定义。问题是:这个期望凭什么能不指定波动率模型就算出来?

对数合约:整个方法的支点

支点是一个 Itô 恒等式。对任何连续路径的正价格过程,对 ln⁡St\ln S_t 用 Itô 公式再积分,得到:

∫0Tσt2 dt=2[∫0TdStSt−ln⁡STS0]\int_0^T \sigma_t^2 \, dt = 2\left[\int_0^T \frac{dS_t}{S_t} - \ln \frac{S_T}{S_0}\right]

左边是我们想交易的累积方差。右边两项各有身份:∫dSt/St\int dS_t/S_t 是一个持续持有 1/St1/S_t 股股票的动态策略的收益——可以交易;−ln⁡(ST/S0)-\ln(S_T/S_0) 是一个只依赖终值的收益——对数合约。也就是说,累积方差 = 一个 delta 策略 + 一个静态终值收益。方差本身是路径量,但它的”不可对冲部分”整个塌缩到了终值上,这就是一切的来源。

取风险中性期望:EQ[∫dSt/St]=rT\mathbb{E}^{\mathbb{Q}}[\int dS_t/S_t] = rT,而 ln⁡(F0/S0)=rT\ln(F_0/S_0) = rT,两者相消,剩下:

Kvar=EQ[Vrealized]=−2T EQ[ln⁡STF0]K_{\text{var}} = \mathbb{E}^{\mathbb{Q}}[V_{\text{realized}}] = -\frac{2}{T}\,\mathbb{E}^{\mathbb{Q}}\left[\ln\frac{S_T}{F_0}\right]

公平方差执行价就是对数合约的(缩放)价格。剩下的问题变成:对数合约怎么定价?这就是欧式期权登场的地方——任何二次可微的终值收益都能被看涨、看跌的连续谱静态复制。对 −ln⁡(ST/F0)-\ln(S_T/F_0) 做泰勒-积分分解(二阶导是 1/K21/K^2):

−ln⁡STF0=−ST−F0F0+∫0F0(K−ST)+K2 dK+∫F0∞(ST−K)+K2 dK-\ln\frac{S_T}{F_0} = -\frac{S_T - F_0}{F_0} + \int_0^{F_0}\frac{(K - S_T)^+}{K^2}\,dK + \int_{F_0}^{\infty}\frac{(S_T - K)^+}{K^2}\,dK

第一项是远期头寸(风险中性期望为零),后两项是按 1/K21/K^2 加权的虚值看跌和看涨组合。逐项取期望、换成市场价格,就得到:

Carr-Madan 公式

Kvar=2erTT[∫0F0P(K)−(F0−K)+K2dK+∫F0∞C(K)−(K−F0)+K2dK]K_{\text{var}} = \frac{2 e^{rT}}{T}\left[\int_0^{F_0} \frac{P(K) - (F_0 - K)^+}{K^2} dK + \int_{F_0}^{\infty} \frac{C(K) - (K - F_0)^+}{K^2} dK\right]

其中 F0=S0erTF_0 = S_0 e^{rT},C(K)C(K)、P(K)P(K) 是行使价 KK 的看涨、看跌价格,减去内在价值意味着只有时间价值(即虚值部分)进入积分(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

数值上的麻烦全在两端:被积函数的 1/K21/K^2 权重在低行使价方向放大看跌价格,而两翼恰恰是报价最稀、价差最宽的地方。稳健实现要么截断积分区间,要么用参数拟合(SVI)外推翼部。实务上常见的做法是在 0.5F00.5 F_0 到 2.0F02.0 F_0 之间用报价、区间外靠外推——这意味着你的方差执行价对翼部外推方式有真实的敏感度,这是它虽然”模型无关”却仍有实现差异的原因之一。

凸性:波动率互换差在哪

波动率互换支付 Vrealized\sqrt{V_{\text{realized}}}。平方根是凹函数,Jensen 不等式立刻给出 E[V]≤E[V]\mathbb{E}[\sqrt{V}] \leq \sqrt{\mathbb{E}[V]},也就是 Kvol≤KvarK_{\text{vol}} \leq \sqrt{K_{\text{var}}}——波动率互换执行价低于方差执行价的平方根,方差的波动越大差得越多。对 ⋅\sqrt{\cdot} 在 KvarK_{\text{var}} 处展开到二阶:

Kvol≈Kvar−Var(Vrealized)8 Kvar3/2K_{\text{vol}} \approx \sqrt{K_{\text{var}}} - \frac{\text{Var}(V_{\text{realized}})}{8\,K_{\text{var}}^{3/2}}

修正项正比于实现方差自身的方差——也就是 vol-of-vol。而且有一个不需要展开的精确关系,直接由方差的定义得到:

Kvar−Kvol2=Var ⁣(Vrealized)K_{\text{var}} - K_{\text{vol}}^2 = \text{Var}\!\left(\sqrt{V_{\text{realized}}}\right)

(风险中性测度下的方差。)左边永远非负:方差执行价总是”贵过”波动率执行价的平方,贵出的正是实现波动率的不确定性。

量级感受:对 1 年期 SPX,ATM 隐含 vol 在 16% 上下时,波动率互换执行价大约在 17-18%,方差执行价开方后大约 18-19%——偏斜把两者都抬到 ATM vol 之上,凸性再在两者之间劈开 1-2 个 vol 点。由此有一条实务纪律:如果你的模型给出的 KvolK_{\text{vol}} 跟市场对不上,那是 vol-of-vol 校准的问题;别去动 KvarK_{\text{var}} 来”凑”KvolK_{\text{vol}}——它们对模型的依赖程度完全不同,一个几乎不依赖,一个全靠模型。

离散监测

真实合约按离散收益结算——日收盘或周收盘,不是连续路径。离散公平执行价直接按定义:

Kvardiscrete=EQ[1T∑i=1n(ln⁡StiSti−1)2]K_{\text{var}}^{\text{discrete}} = \mathbb{E}^{\mathbb{Q}}\left[\frac{1}{T}\sum_{i=1}^n \left(\ln\frac{S_{t_i}}{S_{t_{i-1}}}\right)^2\right]

它和连续版本的差:

Kvardiscrete−Kvarcontinuous=O(1/n)K_{\text{var}}^{\text{discrete}} - K_{\text{var}}^{\text{continuous}} = O(1/n)

修正项由离散收益的高阶矩驱动,显式表达依赖模型——Broadie 和 Jain(2008)对各主流模型逐一算过。对日度采样(n≈252n \approx 252),这个差通常很小,符号取决于漂移、跳跃和偏斜的相对大小。实务里它很少是方差账簿的主要误差源;更大的麻烦是数据本身:不同供应商的日收盘价对不上,定盘价会被交易对手争议。合约条款里”用谁的收盘价”比离散化修正值钱得多。

两种收益,两种用法

把两个收益并排放着看:

Notional⋅(Vrealized−Kvol)\text{Notional} \cdot (\sqrt{V_{\text{realized}}} - K_{\text{vol}}) Notional⋅(Vrealized−Kvar)\text{Notional} \cdot (V_{\text{realized}} - K_{\text{var}})

方差互换的收益在波动率里是凸的:波动率翻倍,收益翻四倍。做多方差在尾部事件里被凸性加速,这正是买家要的;反过来,卖方差的人在波动率爆炸时亏得比线性快,这正是卖家要收凸性溢价的原因。波动率互换的收益在 vol 里是线性的,没有这层加速,对只想表达”实现 vol 高于/低于隐含”的方向观点更干净。

复制性质的差别决定了对冲方式。方差互换:买入 1/K21/K^2 加权的期权组合,再按 2/St2/S_t 做 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 复制严格成立需要:(0,∞)(0, \infty) 上连续的期权行使价、期权价格无套利、路径连续、以及持有到期。每条不满足都留下一个缺口——离散行使价靠 SVI 类外推补,精度够用;随机利率让折现因子不再确定,给 KvarK_{\text{var}} 添一个含利率波动率的凸性项;跳跃直接破坏 Itô 恒等式;买卖价差侵蚀”静态持有到期”的理论利润。这些缺口合起来,就是现实方差互换执行价相对理论公平值总有偏离的原因,实务中的调整量通常在几十个基点的量级。

算例:SPX 1 年方差互换

用一组观察到的期权价格走一遍 Carr-Madan。假设 S0=4500S_0 = 4500,r=0.05r = 0.05,红利收益率 1.8%,1 年远期 F=4500⋅e(0.05−0.018)⋅1=4642F = 4500 \cdot e^{(0.05 - 0.018) \cdot 1} = 4642,ATM vol 大约 18%,带现实偏斜。T=1T = 1 附近的样本报价:

行使价类型中间价1/K21/K^2 权重下的贡献
3500看跌175大(低行使价权重高)
4000看跌95显著
4500跨式770主要质量在 ATM 附近
5000看涨35中等
5500看涨9小

代入公式积分,结果大约 Kvar≈0.038K_{\text{var}} \approx 0.038,即 19.5% 的年化波动率——高于 18% 的 ATM vol,高出来的部分就是偏斜和 vol-of-vol 沿翼部积出来的溢价。

拿一个新校准的 Heston 模型对照。Heston 下积分方差的期望有闭式:

EQ[1T∫0Tvtdt]=θ+(v0−θ)1−e−κTκT\mathbb{E}^{\mathbb{Q}}\left[\frac{1}{T}\int_0^T v_t dt\right] = \theta + (v_0 - \theta)\frac{1 - e^{-\kappa T}}{\kappa T}

取 θ=0.04\theta = 0.04,κ=2\kappa = 2,v0=0.04v_0 = 0.04,得 Kvar=0.04K_{\text{var}} = 0.04,即 20% vol,和 Carr-Madan 的结果相去不远。注意一个细节:v0=θv_0 = \theta 时期望恰好等于 θ\theta,均值回归速度 κ\kappa 完全不进入——只有当前方差偏离长期水平时,κ\kappa 才通过衰减权重决定期限结构的形状。两种算法给出相近的答案,但地位不同:Carr-Madan 的结果是市场实际交易的”模型无关”执行价,Heston 的结果是一个模型的意见。

名义、对冲与 P&L

方差互换按”每方差点”计名义,但交易员习惯用 vega 语言谈风险。在执行价附近,两种名义的换算是:

vega notional=2Kvol×variance notional\text{vega notional} = 2 K_{\text{vol}} \times \text{variance notional}

(对 ⋅\sqrt{\cdot} 求导即得,KvolK_{\text{vol}} 以 vol 点计。)举个数:vega notional 每 vol 点 100,000100{,}000、执行价 19 的头寸,对应 variance notional ≈100,000/(2×19)≈2,600\approx 100{,}000/(2 \times 19) \approx 2{,}600 每方差点。波动率从 19 涨到 20,方差从 361 到 400,P&L ≈39×2,600≈101,000\approx 39 \times 2{,}600 \approx 101{,}000——和 vega 名义基本对上。涨 5 个 vol 点到 24,方差变 576,P&L ≈215×2,600≈559,000\approx 215 \times 2{,}600 \approx 559{,}000,比线性外推的 500,000500{,}000 多出一截——那一截就是凸性,多头白拿、空头白付。

持有期内的 P&L 分四块记:已实现腿的累积(过去的收益平方逐日入账,到期时它就是全部);按市值计价(剩余期限的公平执行价 Kvar(t,T)K_{\text{var}}(t, T) 随曲面每天动);复制组合的对冲损益;以及没有传统意义上的 carry——不付 premium,但 vega 敞口一直在。二阶敏感度也值得看一眼:

d2Vdσ2=d2dσ2[Kvar(σ)−K]⋅notional\frac{d^2 V}{d\sigma^2} = \frac{d^2}{d\sigma^2}\left[K_{\text{var}}(\sigma) - K\right] \cdot \text{notional}

即 Carr-Madan 执行价对 vol 的二阶响应。微笑平的时候它接近零;微笑陡、且微笑形状随 vol 水平联动时它不为零,波动率账簿应当追踪。

拿它交易什么

方差互换最干净的用途是实现 vs 隐含:执行价锁定在期权市场决定的 Carr-Madan 公平值,你认为实现波动率会超过它,就买;反之就卖。经验上,隐含方差长期平均高于实现方差——SPX 上这个方差风险溢价长期看在 2-3 个 vol 点的量级(随样本期变化)。溢价存在的理由不难懂:客户端结构性地买保护,承接这些卖单的做市商要求补偿,再加上方差空头在尾部亏得非线性地快,这个补偿理应为正。卖波动率收这份溢价是一门真实的生意,也是一门在坏日子里亏得最快的生意。

第二类用途是期限结构交易。波动率期限结构平静时向上倾斜、压力时倒挂;倒挂时做多长期方差互换收曲线正常化的 roll-down,陡峭时反着做。这类交易实现上干净,风险也直白:曲线可以比你的耐心更久地保持形状,而空头腿上实现波动率随时可能超过隐含。

和 VIX 期货的关系值得单独说清。VIX 期货到期支付 VIXfinal−K\text{VIX}_{\text{final}} - K,VIX 是 30 天常数到期的隐含波动率指数,所以:

EQ[VIXfinal]≈Kvol\mathbb{E}^{\mathbb{Q}}[\text{VIX}_{\text{final}}] \approx K_{\text{vol}}

差一层凸性。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)关于离散监测调整。