第十二章:套利策略实战

套利,说白了就是赚「定价错误」的钱。同一个东西,在不同地方、不同时间,价格不一样,你低买高卖,这就是套利。听起来简单吧?但实际做起来,坑多得很。

我做了这么多年量化,套利策略一直是我的「压舱石」。为什么?因为套利策略的风险相对可控,收益虽然不高,但胜在稳定。今天我就把几种常见的套利玩法,掰开揉碎了讲给你听。

12.1 跨期套利

跨期套利,就是同一个品种,不同月份的合约之间,价格出现了偏差。比如螺纹钢,主力合约是2401,次主力是2405。正常情况下,远月合约应该比近月贵一点,因为要算上持仓成本。但如果价差偏离了正常范围,就有机会了。

核心逻辑:价差会回归均值。

我习惯用「价差序列」来做分析。先算一下历史价差的均值、标准差,然后设定一个阈值。比如价差超过2倍标准差,我就开仓。等它回归到均值附近,平仓走人。

实战要点:
  • 选流动性好的合约,别碰那些一天成交不了几手的品种
  • 注意交割月临近时的逼仓风险
  • 价差回归的时间不确定,要有耐心
# 跨期套利价差计算示例
import numpy as np

def calc_spread(price_near, price_far):
    """计算跨期价差"""
    spread = price_far - price_near
    return spread

def detect_arbitrage_opportunity(spread_series, threshold=2):
    """检测套利机会"""
    mean = np.mean(spread_series)
    std = np.std(spread_series)
    z_score = (spread_series[-1] - mean) / std
    
    if abs(z_score) > threshold:
        return True, z_score
    return False, z_score
我的经验:别只看价差绝对值,要看z-score。不同品种的价差波动范围差很多,标准化之后才好比较。

12.2 跨市场套利

同一个品种,在不同交易所上市,价格按理说应该差不多。但实际中,因为时差、流动性、交易规则不同,经常会出现价差。比如A股和港股,同一只股票,两地价格经常不一样。

跨市场套利最大的难点是什么?是执行速度。你这边看到价差出来了,等你在两个市场都下完单,价差可能已经没了。所以,跨市场套利对交易系统的延迟要求很高。

我曾经做过一个沪港通套利策略,当时发现一个很有意思的现象:A股开盘前半小时,价差波动特别大。为什么?因为港股已经交易了一段时间,而A股刚开盘,信息不对称导致的。嗯,这个窗口期,就是套利的好时机。

注意:跨市场套利要考虑汇率风险、交易成本、资金划转时间。别光看价差,算完成本发现是亏的。

12.3 统计套利

统计套利,说白了就是找「亲戚」。两只股票,走势高度相关,比如茅台和五粮液。正常情况下,它们的价差会在一个范围内波动。如果某天价差突然拉大,那就说明其中一只被高估了,另一只被低估了。

怎么做?用协整检验。先找出一对协整关系的股票,然后建立回归模型,算出残差。残差就是价差的偏离程度。当残差超过阈值时,开仓做多被低估的,做空被高估的。

# 统计套利协整检验示例
from statsmodels.tsa.stattools import coint

def find_cointegrated_pairs(price_df):
    """寻找协整对"""
    n = price_df.shape[1]
    pvalue_matrix = np.ones((n, n))
    
    for i in range(n):
        for j in range(i+1, n):
            _, pvalue, _ = coint(price_df.iloc[:, i], price_df.iloc[:, j])
            pvalue_matrix[i, j] = pvalue
    
    return pvalue_matrix
避坑指南:我曾经用统计套利做了一组能源股,回测效果特别好。结果实盘一跑,亏了。为什么?因为那段时间原油价格暴跌,所有能源股的相关性都变了。记住,统计套利的前提是相关性稳定,一旦市场结构变了,策略就失效了。

12.4 延迟套利

延迟套利,听起来有点玄乎,其实原理很简单:利用信息传递的时间差。比如,某个重大消息先在一个市场反应,另一个市场还没反应过来,这就是机会。

举个例子:美国非农数据公布后,黄金期货瞬间波动。但国内的黄金ETF,因为交易机制不同,反应会慢几秒钟。如果你能在这几秒钟内完成交易,就能赚到钱。

但说实话,延迟套利现在越来越难做了。为什么?因为大家都在拼速度,拼算法。你想想看,机构都用上了FPGA、微波通信,普通散户拿什么跟人家比?

我的建议:如果你不是做高频的,别碰延迟套利。这个领域,技术门槛太高,竞争太激烈。不如把精力放在统计套利或者跨期套利上,这些策略对速度要求没那么高。

12.5 套利机会检测

说了这么多,怎么才能发现套利机会?总不能天天盯着屏幕看吧。当然不行,我们要用程序来检测。

我一般会建一个「套利机会检测系统」,流程是这样的:

  1. 数据采集:实时获取多个市场的行情数据
  2. 价差计算:实时计算各种价差指标
  3. 阈值判断:当价差超过设定阈值时,触发警报
  4. 风险评估:计算当前机会的风险收益比
  5. 执行决策:如果风险可控,自动下单
# 套利机会检测框架
class ArbitrageDetector:
    def __init__(self, threshold=2.0):
        self.threshold = threshold
        self.opportunities = []
    
    def check_opportunity(self, price_a, price_b):
        """检测套利机会"""
        spread = price_a - price_b
        z_score = self.calc_z_score(spread)
        
        if abs(z_score) > self.threshold:
            opportunity = {
                'spread': spread,
                'z_score': z_score,
                'direction': 'long_short' if z_score > 0 else 'short_long'
            }
            self.opportunities.append(opportunity)
            return opportunity
        return None
    
    def calc_z_score(self, spread):
        """计算z-score"""
        # 这里用滚动窗口计算均值和标准差
        return (spread - self.mean) / self.std
核心要点:
  • 套利机会检测要快,延迟越低越好
  • 阈值设置要合理,太宽了抓不到机会,太窄了全是假信号
  • 一定要做风险控制,别因为一次套利把之前的利润都亏回去

最后说一句,套利策略不是稳赚不赔的。市场在变,套利机会也在变。我见过太多人,回测做得漂亮,实盘一跑就亏。为什么?因为回测的时候用的是历史数据,但市场结构已经变了。所以,做套利策略,一定要持续监控、持续优化。

套利策略知识体系 套利策略 跨期套利 同一品种不同月份 跨市场套利 同一品种不同交易所 统计套利 协整关系与均值回归 延迟套利 信息传递时间差 套利机会检测 实时监控与自动执行 核心:价差回归 + 风险控制 + 执行速度 市场结构变化时,策略需要持续优化
最后提醒:套利策略不是「印钞机」。它需要你持续监控、持续优化。市场在变,套利机会也在变。保持敬畏之心,做好风险控制,才能在这个市场长期生存。

无相订单流研究社 微信Lucian808555