11. 蝶式套利识别:如何识别同一到期日不同行权价之间的套利机会

蝶式套利,说白了就是利用期权价格在行权价上的「凹凸不平」来赚钱。

我刚开始做期权量化那会儿,觉得这玩意儿挺玄乎。后来自己动手算了几次,发现其实逻辑特别简单——就是看三个行权价之间的价格关系是否合理。

什么是蝶式套利?

蝶式套利,本质上是一个做多波动率或者做空波动率的组合策略。但今天我们聊的不是策略构建,而是如何识别套利机会

核心逻辑就一句话:
同一到期日,三个连续行权价的期权价格,必须满足某种线性关系。

如果不满足,就存在套利空间。

蝶式价差的基本公式

假设有三个行权价:K1 < K2 < K3,且等间距(比如K1=100, K2=105, K3=110)。

对于看涨期权,蝶式价差的价格为:

蝶式价差 = C(K1) - 2 * C(K2) + C(K3)

对于看跌期权,公式类似:

蝶式价差 = P(K1) - 2 * P(K2) + P(K3)

关键点来了:

  • 如果蝶式价差 < 0,说明中间行权价的期权被高估了(或者两边被低估了)
  • 如果蝶式价差 > 某个上限(理论上应该为0),说明中间行权价的期权被低估了

嗯,这里要注意:理论上,蝶式价差不应该为负。因为你可以通过买入蝶式组合来锁定无风险收益。

实际识别步骤

我个人习惯按以下三步走:

  1. 筛选连续行权价:找到同一到期日、行权价等间距的三个合约
  2. 计算蝶式价差:用上面公式算一下数值
  3. 判断套利方向:如果为负,做多蝶式(买入两边、卖出中间);如果为正且过大,做空蝶式

实战经验:

我在项目中遇到过一种情况:某只股票在财报前,中间行权价的期权被大量买入,导致蝶式价差变成-0.8。当时我算了一下,如果做多蝶式,每手能锁住0.8元的无风险收益。虽然单笔不大,但资金利用率极高。

代码示例:自动识别蝶式套利机会

下面是我常用的Python脚本片段,用来扫描全市场:

import pandas as pd
import numpy as np

def find_butterfly_arbitrage(option_chain, expiry):
    """
    识别同一到期日的蝶式套利机会
    option_chain: DataFrame,包含 strike, call_price, put_price
    expiry: 到期日
    """
    # 筛选指定到期日
    chain = option_chain[option_chain['expiry'] == expiry].copy()
    chain = chain.sort_values('strike')
    
    opportunities = []
    
    # 遍历连续三个行权价
    for i in range(len(chain) - 2):
        k1 = chain.iloc[i]
        k2 = chain.iloc[i+1]
        k3 = chain.iloc[i+2]
        
        # 检查是否等间距
        if (k2['strike'] - k1['strike']) != (k3['strike'] - k2['strike']):
            continue
        
        # 计算看涨蝶式价差
        call_butterfly = k1['call_price'] - 2*k2['call_price'] + k3['call_price']
        
        # 判断套利机会
        if call_butterfly < -0.01:  # 考虑交易成本
            opportunities.append({
                'strikes': f"{k1['strike']}/{k2['strike']}/{k3['strike']}",
                'type': 'call',
                'value': call_butterfly,
                'action': 'BUY butterfly (long wings, short body)'
            })
    
    return pd.DataFrame(opportunities)

避坑指南

我曾经踩过的坑:

  • 忽略买卖价差:理论价格和实际成交价是两码事。我建议用中间价计算,但实际交易要用对手价
  • 忘记保证金:蝶式套利虽然风险有限,但保证金占用可能不低。尤其是做空蝶式时
  • 流动性陷阱:有些行权价挂单很薄,你看到的价差可能瞬间消失

蝶式套利识别流程图

下面这张图是我自己总结的识别流程,你想想看,其实每一步都不复杂:

蝶式套利识别流程 步骤1:筛选合约 同一到期日,等间距行权价 步骤2:计算蝶式价差 C(K1)-2*C(K2)+C(K3) 步骤3:判断方向 正/负?是否超过阈值? 蝶式价差 < 0 ? 做多蝶式 买入两边,卖出中间 做空蝶式 卖出两边,买入中间 注意:实际交易需考虑买卖价差、保证金和流动性

一个真实案例

我记得有一次做50ETF期权,发现某个到期日的蝶式价差是-0.35。当时我算了一下:

行权价 看涨期权价格 看跌期权价格
3.00 0.120 0.080
3.10 0.065 0.115
3.20 0.035 0.175

看涨蝶式价差 = 0.120 - 2*0.065 + 0.035 = 0.025

看跌蝶式价差 = 0.080 - 2*0.115 + 0.175 = 0.025

两个都是正数,且大于0。这说明中间行权价(3.10)的期权被低估了。这时候应该做空蝶式——卖出两边,买入中间。

小技巧:

我个人习惯同时看涨和看跌的蝶式价差。如果两者都指向同一个方向,那套利机会就更可靠。如果方向相反,说明市场可能存在其他因素(比如分红、利率等),这时候要谨慎。

总结一下

蝶式套利识别,说白了就是三个字:算差值

你不需要复杂的数学模型,也不需要高频数据。只要把同一到期日、连续三个行权价的期权价格拉出来,套进公式算一下,机会就出来了。

嗯,最后提醒一句:别贪。蝶式套利的利润通常很薄,但胜在稳定。我见过有人为了追求大收益,把杠杆加得很高,结果一次流动性危机就爆仓了。稳扎稳打,才是长期生存之道。


公众号:蓝海资料掘金营,微信deep3321