第九章:套利机会识别——曲面套利类型与自动策略

做市交易做了这么多年,我越来越觉得——套利机会识别才是期权做市的核心竞争力。说白了,你报出去的买卖价差,本质上就是在跟市场博弈。如果曲面出现扭曲,那就是白送的钱。今天我们就聊聊曲面套利的几种经典类型,以及怎么用代码把它们抓出来。

9.1 曲面套利的三大类型

我个人习惯把曲面套利分成三类:蝶式、日历、盒式。这三类覆盖了90%以上的无风险套利场景。你想想看,如果能把它们都吃透,那做市胜率至少能提两个档次。

9.1.1 蝶式套利(Butterfly)

蝶式套利,说白了就是赌波动率曲面在某个行权价附近过于凸起或凹陷。我记得刚入行时,有个老交易员跟我说:「蝶式套利是检验曲面是否合理的试金石。」后来我发现,这话一点不假。

蝶式套利的无套利条件很简单:

对于同一到期日、三个连续行权价 K1 < K2 < K3:
C(K1) - 2*C(K2) + C(K3) ≥ 0  (看涨蝶式)
P(K1) - 2*P(K2) + P(K3) ≥ 0  (看跌蝶式)

如果这个值小于0,就说明存在套利机会。我在项目中遇到过好几次,某个深度虚值期权突然被大单砸出异常价格,蝶式组合瞬间变成负值。这时候别犹豫,直接吃进去。

实战要点:蝶式套利最怕的是行权价间距不均匀。有些交易所的行权价是5元一跳,有些是2.5元。做之前先确认间距,否则算出来的结果全是错的。

9.1.2 日历套利(Calendar Spread)

日历套利,也叫时间套利。它利用的是不同到期日之间隐含波动率的错配。举个例子,近月合约的IV是18%,远月合约的IV是22%。如果这个差值超出了合理范围,就可以做多近月、做空远月,或者反过来。

无套利条件是这样的:

对于同一行权价 K,近月 T1 和远月 T2:
C(T1) ≤ C(T2)  (看涨期权时间价值递减)
P(T1) ≤ P(T2)  (看跌期权同理)

嗯,这里要注意。日历套利不是简单的「远月一定比近月贵」。如果近月有分红、拆股等事件,这个条件可能会被打破。我曾经踩过这个坑,以为发现了套利机会,结果被分红调整打了个措手不及。

我的习惯:做日历套利前,先查一下两个到期日之间有没有分红、财报、宏观数据公布。这些事件会扭曲时间价值曲线,导致假信号。

9.1.3 盒式套利(Box Spread)

盒式套利是最高级的玩法。它利用的是看涨-看跌平价关系(Put-Call Parity)。一个盒式组合由以下四腿组成:

  • 买入一份看涨期权(行权价 K1)
  • 卖出一份看跌期权(行权价 K1)
  • 卖出一份看涨期权(行权价 K2)
  • 买入一份看跌期权(行权价 K2)

这个组合的到期价值是固定的:K2 - K1。所以它的现值应该等于 (K2 - K1) * e^(-rT)。如果市场价格偏离了这个理论值,就存在无风险套利。

盒式套利条件:
C(K1) - P(K1) - C(K2) + P(K2) ≈ (K2 - K1) * e^(-rT)

如果左边 > 右边:做空盒式
如果左边 < 右边:做多盒式

说实话,盒式套利在流动性好的市场里很难抓到。但一旦出现,利润往往很可观。我记得有一次,某个指数期权在收盘前3分钟出现了盒式套利机会,我手动敲单进去,3秒就平了,赚了0.2个点。虽然不多,但胜在无风险。

避坑指南:我曾经在盒式套利上吃过一次亏——交易成本没算进去。四腿交易的手续费和滑点加起来,可能把利润全部吃掉。所以,做之前一定要算净收益,别只看理论价差。

9.2 无套利条件校验

光知道套利类型还不够,你得有一套校验流程。我一般按以下步骤来:

  1. 数据清洗:剔除过期数据、异常价格、买卖价差过大的合约
  2. 行权价对齐:确保所有合约的行权价、到期日、合约乘数一致
  3. 无风险利率校准:用国债收益率或回购利率,别用Libor
  4. 分红调整:如果有分红,要调整行权价或直接调整期权价格
  5. 阈值设定:设定一个最小套利利润阈值(比如0.5个tick),低于这个阈值不执行

下面是我常用的校验代码片段:

def check_butterfly(calls, strikes, r, T):
    """
    校验蝶式套利条件
    calls: 三个行权价的看涨期权价格列表 [C1, C2, C3]
    strikes: 三个行权价 [K1, K2, K3]
    """
    if len(calls) != 3 or len(strikes) != 3:
        return False
    
    butterfly_value = calls[0] - 2*calls[1] + calls[2]
    
    # 考虑交易成本
    threshold = 0.01  # 1个tick
    
    if butterfly_value < -threshold:
        return True  # 存在套利机会
    else:
        return False
重要提醒:阈值设定不能太死板。波动率大的时候,阈值可以适当放宽;波动率小的时候,阈值要收紧。我一般用ATR(平均真实波幅)的某个比例作为动态阈值。

9.3 自动套利策略实现

做市交易里,手动抓套利机会基本不现实。你得写个自动扫描器,实时监控整个曲面。我分享一下我的策略框架:

第一步:数据流接入

用WebSocket或者FIX协议接入实时行情。别用REST API,延迟太大。我习惯用C++写底层数据接收,Python做策略逻辑。

第二步:曲面构建

实时构建波动率曲面。这里要注意,不要用全部合约,只选流动性好的。我一般只取买卖价差小于0.5%的合约。

第三步:套利扫描

对每个到期日、每个行权价组合,依次检查蝶式、日历、盒式条件。扫描频率至少每秒一次。

第四步:订单执行

发现套利机会后,立即计算最优执行路径。四腿订单要同时发出,避免滑点吃掉利润。我建议用冰山订单,别一次性暴露全部意图。

下面是一个简化的自动扫描器伪代码:

while True:
    # 获取当前曲面数据
    surface = get_option_surface()
    
    # 扫描蝶式套利
    for expiry in surface.expiries:
        for i in range(len(surface.strikes) - 2):
            K1, K2, K3 = surface.strikes[i:i+3]
            C1, C2, C3 = surface.get_call_prices(expiry, [K1, K2, K3])
            
            if check_butterfly([C1, C2, C3], [K1, K2, K3], r, T):
                execute_butterfly_arb('BUY', K1, K2, K3, expiry)
    
    # 扫描日历套利
    for strike in surface.strikes:
        for i in range(len(surface.expiries) - 1):
            T1, T2 = surface.expiries[i:i+2]
            C1 = surface.get_call_price(T1, strike)
            C2 = surface.get_call_price(T2, strike)
            
            if C1 > C2 + threshold:
                execute_calendar_arb('SELL', strike, T1, T2)
    
    # 扫描盒式套利
    for expiry in surface.expiries:
        for i in range(len(surface.strikes) - 1):
            K1, K2 = surface.strikes[i], surface.strikes[i+1]
            C1, P1 = surface.get_option_pair(expiry, K1)
            C2, P2 = surface.get_option_pair(expiry, K2)
            
            box_value = C1 - P1 - C2 + P2
            theoretical = (K2 - K1) * exp(-r * T)
            
            if abs(box_value - theoretical) > threshold:
                execute_box_arb(box_value, theoretical, K1, K2, expiry)
    
    sleep(0.1)  # 100ms扫描一次
性能优化:别傻乎乎地全量扫描。我一般先扫描蝶式,因为蝶式计算量最小。如果蝶式没机会,日历和盒式大概率也没有。这叫「先易后难」策略。

9.4 本章知识体系

下面这张图是我自己画的,把曲面套利的核心逻辑串起来了。你看一眼就能明白整个流程:

曲面套利识别与自动策略流程图 实时行情数据流 波动率曲面实时构建 蝶式套利扫描 日历套利扫描 盒式套利扫描 无套利条件校验 + 阈值过滤

这张图的核心逻辑就是:数据进来 → 建曲面 → 三种套利同时扫描 → 校验通过后执行。我建议你把这张图打印出来贴在工位上,做交易时随时对照。

最后提醒一句:自动套利策略不是写了就能赚钱的。你得持续监控策略的胜率和收益率。如果连续3天没抓到任何机会,别急着改参数,先看看是不是市场结构变了。我曾经因为改参数太频繁,把一个本来能赚钱的策略改废了。教训深刻啊。

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