曲面套利策略三:凸性套利(Convexity Arbitrage)
各位,咱们继续聊曲面套利。前两章讲了日历套利和斜率套利,今天这个更带劲——凸性套利。说白了,就是利用蝶式价差(Butterfly)去抓曲面的曲率错误。
你可能要问:曲率是什么?嗯,你可以把波动率曲面想象成一块布。斜率是布的倾斜程度,曲率就是布的弯曲程度。如果某块地方本该是平滑弯曲的,结果突然鼓了个包或者凹了个坑,那就是曲率错了。凸性套利就是专门抓这种错误的。
1. 凸性套利的底层逻辑
先说说蝶式价差。一个标准的蝶式价差由三腿组成:
- 买入1份低行权价的期权
- 卖出2份中间行权价的期权
- 买入1份高行权价的期权
三份期权的到期日相同,行权价等间距分布。比如50、55、60。这种结构,说白了就是在赌波动率曲面的曲率是否合理。
我个人习惯把蝶式价差看作一个「曲率探测器」。如果中间行权价的隐含波动率被高估了,那卖出2份中间期权就能赚到钱。反过来,如果中间被低估,那就反向操作。
核心逻辑:蝶式价差的盈亏,本质上反映的是波动率曲面在某个行权价附近的弯曲程度是否合理。如果实际曲率与模型曲率不一致,套利机会就出现了。
2. 凸性套利的实战框架
我在项目中遇到过不少凸性套利的机会,总结下来就三步:
- 计算理论曲率——用随机波动率模型(比如SVI、SSVI)拟合出曲面,算出每个行权价处的理论曲率。
- 对比实际曲率——用市场报价的蝶式价差价格,反推出市场隐含的曲率。
- 寻找偏差——当理论曲率和市场曲率偏差超过某个阈值时,开仓。
你想想看,如果市场曲率比理论曲率大很多,说明中间行权价的期权被高估了。这时候卖出蝶式价差(即卖出中间、买入两边)就能获利。
避坑指南:我曾经吃过一次亏,没注意到期日太近的合约。临近到期的期权,蝶式价差对曲率的反应极其敏感,稍微有点偏差就可能被止损打掉。后来我给自己定了个规矩:只做到期日大于30天的合约。
3. 代码实现:凸性套利信号生成
下面是我常用的一个凸性套利检测函数。它计算蝶式价差的隐含曲率,并与模型曲率对比:
import numpy as np
from scipy.interpolate import CubicSpline
def convexity_arb_signal(option_chain, model_vols, threshold=0.02):
"""
凸性套利信号检测
:param option_chain: DataFrame, 包含行权价、市场IV、期权价格
:param model_vols: dict, 模型给出的理论IV
:param threshold: float, 偏差阈值
:return: list of signals
"""
signals = []
strikes = option_chain['strike'].values
market_ivs = option_chain['implied_vol'].values
model_ivs = np.array([model_vols[k] for k in strikes])
# 用三次样条计算曲率
market_spline = CubicSpline(strikes, market_ivs)
model_spline = CubicSpline(strikes, model_ivs)
# 二阶导数就是曲率
market_curvature = market_spline(strikes, 2)
model_curvature = model_spline(strikes, 2)
# 偏差计算
curvature_diff = market_curvature - model_curvature
for i, diff in enumerate(curvature_diff):
if abs(diff) > threshold:
if diff > 0:
# 市场曲率偏大 → 卖出蝶式
signals.append({
'strike': strikes[i],
'action': 'SELL_BUTTERFLY',
'curvature_diff': diff
})
else:
# 市场曲率偏小 → 买入蝶式
signals.append({
'strike': strikes[i],
'action': 'BUY_BUTTERFLY',
'curvature_diff': diff
})
return signals
这段代码的核心就两个点:一是用样条插值算曲率,二是对比偏差。实际跑起来你会发现,大部分时间偏差都很小,但偶尔会出现0.05甚至0.1以上的偏差——那就是机会。
4. 凸性套利的风险与注意事项
凸性套利看着很美,但有几个坑你得注意:
- 流动性风险:蝶式价差涉及三个行权价,如果中间那个流动性差,滑点能吃掉你所有利润。
- 模型风险:理论曲率依赖于模型。如果模型本身错了,那套利信号就是假的。我一般会用两三个模型交叉验证。
- 时间衰减:蝶式价差的时间价值衰减是非线性的。临近到期时,gamma会急剧变化,持仓要小心。
警告:凸性套利不是无风险套利。它本质上是在赌曲率会回归均值。如果市场结构发生了根本性变化(比如黑天鹅事件),曲率可能长期偏离,导致亏损。
5. 知识体系图:凸性套利全景
下面这张图帮你理清凸性套利的整体脉络:
这张图把凸性套利的流程串起来了。从数据输入到最终执行,每一步都有讲究。我个人觉得最关键的还是第二步——曲率偏差检测。阈值设得太小,假信号太多;设得太大,又容易错过机会。我一般会根据历史回测来动态调整阈值。
6. 一个真实案例
记得去年有一次,我在做50ETF期权时发现,行权价2.8附近的曲率明显偏大。理论曲率是-0.15,市场曲率是-0.08,差了将近一倍。我判断是市场过度定价了尾部风险,于是卖出了2.75/2.8/2.85的蝶式价差。
持仓了大概两周,曲率慢慢回归,最终盈利了约15%。嗯,这种机会不常有,但抓住了就是稳稳的幸福。
小技巧:凸性套利最好配合波动率期限结构一起看。如果短期曲率偏大但长期正常,那回归的概率更高。如果整个期限结构都扭曲了,那就要小心了。
好了,凸性套利就聊到这儿。记住一句话:蝶式价差是曲率的镜子,镜子里照出的扭曲,就是你的利润来源。