第28章 订单簿与统计套利:协整关系、配对交易、订单簿信号

统计套利,说白了就是找「亲戚」。

两只股票,看起来各自涨跌没规律,但它们的价差却像被一根绳子牵着——远了会拉回来,近了会弹开。这就是协整关系。我个人习惯把这种关系叫做「市场里的双人舞」,步调可能不一致,但节奏始终同步。

28.1 协整关系:不是所有相关性都靠谱

很多人一上来就算相关系数。嗯,这里要注意——相关系数高不代表能套利。

举个例子:两只股票都跟大盘涨,相关系数0.95。但它们的价差可能越走越远,根本不会回归。为什么?因为相关性描述的是「同向变动」,而协整描述的是「长期均衡」。

核心区别:

  • 相关性:短期同向波动,但不保证价差回归
  • 协整性:长期均衡关系,价差围绕均值波动

我在项目中遇到过一只股票和它的ETF,相关系数高达0.98。我兴冲冲地做了配对,结果价差从2块一路漂到8块,亏得我头皮发麻。后来一查,ETF调仓了,协整关系早就断了。

检验协整关系,最常用的是Engle-Granger两步法:

# 第一步:回归
import statsmodels.api as sm
y = stock_a  # 股票A价格
x = stock_b  # 股票B价格
x = sm.add_constant(x)
model = sm.OLS(y, x).fit()
residuals = model.resid  # 残差 = 价差

# 第二步:ADF检验残差是否平稳
from statsmodels.tsa.stattools import adfuller
result = adfuller(residuals)
print('ADF统计量:', result[0])
print('p值:', result[1])
# p值 < 0.05 说明残差平稳,存在协整关系

我的经验:别只看p值。我建议同时看ADF统计量,绝对值越大越好。有时候p值0.049,但统计量刚过临界值,这种协整关系很脆弱,容易断裂。

28.2 配对交易:订单簿里的「价差猎人」

协整关系找到了,接下来就是怎么用订单簿信号来执行配对交易。

传统配对交易的做法是:价差偏离均值2个标准差时开仓,回归时平仓。但问题来了——你用什么价格进场?

你想想看,订单簿里的买一卖一价差可能就有0.5%,如果价差只偏离了1%,你一进场就被滑点吃掉了。所以,订单簿信号在这里至关重要。

我的做法:

  1. 计算价差的Z-score:Z = (当前价差 - 均值) / 标准差
  2. 当|Z| > 2时,触发信号
  3. 检查订单簿深度:买一卖一价差 < 阈值,且挂单量足够
  4. 用限价单进场,而不是市价单

我曾经吃过一次大亏。价差Z-score到了2.5,我直接市价单进场。结果买一卖一价差突然拉大,我多花了0.3%的成本。那次之后,我给自己定了个规矩:订单簿深度不够,信号再强也不做。

28.3 订单簿信号:给配对交易装上「眼睛」

订单簿信号不只是用来算滑点的。它还能告诉你——价差回归的概率有多大。

举个例子:

  • 股票A的买一挂单很厚,卖一很薄
  • 股票B的卖一挂单很厚,买一很薄

这说明什么?市场在推着A涨、B跌。如果此时价差是正向偏离(A贵B便宜),那回归的概率就更大。因为订单簿已经给出了方向信号。

我常用的订单簿信号:

  • 深度不平衡比: (买一量 - 卖一量) / (买一量 + 卖一量),正值表示买盘强
  • 价差斜率: 前5档挂单量的变化趋势,判断短期方向
  • 挂单撤单率: 高频撤单说明有大户在试盘,要小心

说白了,订单簿就是市场的「心电图」。协整关系告诉你长期该怎么做,订单簿告诉你现在能不能做。

28.4 实战框架:协整+订单簿的融合策略

下面是我个人习惯用的一个完整流程:

# 伪代码示例
def pair_trading_with_orderbook(stock_a, stock_b):
    # 1. 计算协整关系
    spread = stock_a.price - stock_b.price * hedge_ratio
    z_score = (spread - spread.mean()) / spread.std()
    
    # 2. 获取订单簿信号
    ob_a = get_orderbook(stock_a)
    ob_b = get_orderbook(stock_b)
    imbalance_a = (ob_a.bid_vol - ob_a.ask_vol) / (ob_a.bid_vol + ob_a.ask_vol)
    imbalance_b = (ob_b.bid_vol - ob_b.ask_vol) / (ob_b.bid_vol + ob_b.ask_vol)
    
    # 3. 综合判断
    if abs(z_score) > 2:
        if z_score > 0:  # 价差偏大,做空价差
            if imbalance_a < 0 and imbalance_b > 0:
                # 订单簿支持回归,执行交易
                execute_pair_trade('short_spread')
        elif z_score < 0:  # 价差偏小,做多价差
            if imbalance_a > 0 and imbalance_b < 0:
                execute_pair_trade('long_spread')

避坑指南:我曾经在2020年3月市场暴跌时,协整关系全部失效。为什么?因为系统性风险来临时,所有「亲戚关系」都会被打破。记住:协整关系只在正常市场环境下有效。极端行情下,别信任何统计套利信号。

28.5 知识体系总览

下面这张图,是我自己梳理的本章核心逻辑:

订单簿与统计套利知识体系 协整关系 配对交易 订单簿信号 Engle-Granger检验 残差平稳性(ADF) 对冲比率计算 Z-score信号生成 开仓/平仓阈值 限价单执行策略 深度不平衡比 价差斜率分析 挂单撤单率 融合策略:协整 + 订单簿信号 核心逻辑:协整关系提供长期框架,订单簿信号优化短期执行 ⚠ 极端行情下协整关系可能失效,务必设置止损

嗯,这张图基本把本章的脉络理清了。协整关系是骨架,配对交易是肌肉,订单簿信号是神经——三者缺一不可。

本章核心要点:

  • 协整 ≠ 相关,检验协整用ADF看残差平稳性
  • 配对交易的核心是价差回归,但执行要看订单簿深度
  • 订单簿信号能提高配对交易的胜率,降低滑点成本
  • 极端行情下,所有统计套利策略都要暂停

最后说一句:统计套利不是印钞机。它需要你耐心等待信号,严格执行纪律。我见过太多人,协整关系算得漂亮,一到实盘就管不住手——结果被市场狠狠教育了一顿。

记住:订单簿是市场的语言,协整关系是市场的规律。听懂语言,尊重规律,你才能在统计套利这条路上走得更远。