第二十四讲:波动率曲面在信用衍生品中的应用——CDS隐含波动率
聊到波动率曲面,大家第一反应肯定是股票期权、股指期权这些权益类产品。但说实话,我在做信用衍生品定价那几年,发现波动率曲面在信用市场里的玩法,其实更有意思。
今天我们就来聊聊CDS隐含波动率。嗯,这玩意儿说白了,就是把波动率曲面的思想,移植到了信用违约互换(CDS)上。
为什么CDS需要波动率曲面?
先问个问题:CDS的定价,传统上用的是信用利差,对吧?但信用利差本身是静态的。你想想看,一个公司的信用状况会变,市场情绪会变,宏观经济也会变。静态的利差模型,根本抓不住这些动态变化。
我个人习惯把CDS隐含波动率理解成「信用市场的恐慌指数」。就像VIX反映股市的恐惧程度一样,CDS隐含波动率反映的是市场对信用风险未来不确定性的定价。
举个例子。2015年的时候,我参与过一个高收益债组合的对冲项目。当时某能源公司的CDS利差突然从200bp飙到800bp。如果用传统模型,你只能看到利差变大了,但你看不到市场到底在担心什么——是担心违约概率上升?还是担心回收率下降?还是纯粹的情绪恐慌?
CDS隐含波动率,就能帮你拆解这个问题。
CDS隐含波动率的定义
先上公式。CDS的定价模型,最常用的是Jarrow-Turnbull模型或者更复杂的强度模型。简单来说,CDS的保费(Spread)可以写成:
Spread = (1 - Recovery) × Hazard Rate
其中Hazard Rate就是违约强度。但问题是,这个Hazard Rate不是常数,它会随时间变化,而且市场对它的预期也会波动。
CDS隐含波动率,就是把这个Hazard Rate当成一个随机过程,然后从CDS期权的市场价格中反推出来的波动率参数。
具体来说,CDS期权(比如payer swaption)的价格,依赖于未来Hazard Rate的分布。如果我们假设Hazard Rate服从对数正态过程:
dλ(t) = μ λ(t) dt + σ λ(t) dW(t)
那么σ就是CDS隐含波动率。不同的期限和不同的执行价,会形成一张波动率曲面。
核心要点:CDS隐含波动率反映的是市场对「未来信用风险波动性」的预期,而不是对「当前信用风险水平」的预期。
CDS波动率曲面的结构
和权益类波动率曲面类似,CDS波动率曲面也有两个维度:
- 期限维度(Tenor):比如1年、3年、5年、10年
- 执行价维度(Strike):以CDS利差的百分比表示,比如80%、100%、120% of ATM
我见过最典型的CDS波动率曲面,通常呈现「微笑」形态。但和权益类不同的是,CDS的微笑往往更偏向于「高执行价一侧更陡峭」。为什么?
因为信用风险有「跳跃」特性。一旦违约发生,利差可以瞬间从200bp跳到2000bp。这种尾部风险,使得高执行价的CDS期权更贵,波动率更高。
下面这张图是我用实际市场数据画的一个CDS波动率曲面结构:
你看,每条曲线都是「两头翘」的形态。但右侧(高执行价)翘得更高,这就是信用风险特有的「跳跃风险溢价」。
如何计算CDS隐含波动率?
计算方法和权益类期权类似,但有个关键区别:CDS期权的标的物不是价格,而是利差。
具体步骤是这样的:
- 获取市场数据:CDS期权的报价,包括payer swaption和receiver swaption
- 选择定价模型:我常用的是Black模型(对,就是那个Black-Scholes的变体),但把标的物换成CDS利差
- 反推波动率:用牛顿法或者二分法,找到使模型价格等于市场价格的波动率
代码实现其实不复杂。我贴一段当年写的Python代码片段:
import numpy as np
from scipy.stats import norm
from scipy.optimize import brentq
def cds_swaption_price(F, K, T, sigma, r, rec=0.4, payer=True):
"""
CDS swaption定价(Black模型简化版)
F: 远期CDS利差
K: 执行利差
T: 到期时间
sigma: 隐含波动率
r: 无风险利率
rec: 回收率
"""
d1 = (np.log(F/K) + 0.5 * sigma**2 * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
if payer:
price = np.exp(-r*T) * (F * norm.cdf(d1) - K * norm.cdf(d2))
else:
price = np.exp(-r*T) * (K * norm.cdf(-d2) - F * norm.cdf(-d1))
return price * (1 - rec) # 调整回收率
def implied_cds_vol(market_price, F, K, T, r, rec=0.4):
"""
反推CDS隐含波动率
"""
def objective(sigma):
return cds_swaption_price(F, K, T, sigma, r, rec) - market_price
try:
vol = brentq(objective, 0.01, 2.0)
return vol
except ValueError:
return np.nan
实战小技巧:我在做这个计算时,发现brentq的上下界很关键。如果市场出现极端情况(比如2008年金融危机),波动率可能超过200%。建议把上界设到3.0甚至更高。
CDS波动率曲面的市场情绪解读
好了,现在我们有了一张CDS波动率曲面。怎么用它来解读市场情绪?
我个人总结了三个关键信号:
| 曲面特征 | 市场情绪 | 交易含义 |
|---|---|---|
| 整体波动率上升 | 信用市场恐慌加剧 | 考虑买入CDS保护(payer swaption) |
| 微笑右侧陡峭 | 市场担忧尾部违约风险 | 卖出高执行价波动率(做空恐慌) |
| 短期波动率高于长期 | 近期不确定性高,远期预期稳定 | 做多短期波动率,做空长期波动率 |
| 微笑变平坦 | 市场对信用风险预期趋于一致 | 波动率套利机会减少 |
我曾经在2020年3月,就是疫情刚爆发那会儿,观察到某大型银行的CDS波动率曲面出现了极端的右侧陡峭化。当时很多人还在观望,但我根据这个信号,果断买入了payer swaption。结果两周后,该银行的CDS利差翻了三倍。
注意:CDS隐含波动率不是万能的。它假设Hazard Rate服从对数正态分布,但实际信用风险有跳跃和聚集效应。在极端市场环境下,这个假设会失效。我吃过这个亏,所以提醒大家:永远要结合基本面分析。
实际应用场景
CDS波动率曲面在实际交易中,主要有三个用途:
- 相对价值交易:比较同一公司不同期限的波动率,寻找套利机会
- 跨资产对冲:用CDS波动率对冲股票期权中的信用风险成分
- 信用风险预警:波动率曲面的形态变化,往往领先于信用评级调整
我记得有一次,一个客户问我:为什么某公司的CDS波动率曲面突然变得很陡,但它的信用评级还是投资级?我告诉他:市场在用脚投票。评级是滞后的,波动率曲面是实时的。果然,三个月后,这家公司被降级了。
嗯,这就是CDS隐含波动率的魅力——它把市场对信用风险的「恐惧」和「贪婪」量化成了一组可交易的数字。
最后说一句:如果你刚开始接触CDS波动率曲面,建议先从流动性最好的5年期CDS开始。等熟悉了形态和规律,再扩展到其他期限。别一上来就搞10年期的,那个流动性差,报价噪音大,容易把你带偏。
公众号:蓝海资料掘金营,微信deep3321