第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%,你一进场就被滑点吃掉了。所以,订单簿信号在这里至关重要。
我的做法:
- 计算价差的Z-score:Z = (当前价差 - 均值) / 标准差
- 当|Z| > 2时,触发信号
- 检查订单簿深度:买一卖一价差 < 阈值,且挂单量足够
- 用限价单进场,而不是市价单
我曾经吃过一次大亏。价差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 知识体系总览
下面这张图,是我自己梳理的本章核心逻辑:
嗯,这张图基本把本章的脉络理清了。协整关系是骨架,配对交易是肌肉,订单簿信号是神经——三者缺一不可。
本章核心要点:
- 协整 ≠ 相关,检验协整用ADF看残差平稳性
- 配对交易的核心是价差回归,但执行要看订单簿深度
- 订单簿信号能提高配对交易的胜率,降低滑点成本
- 极端行情下,所有统计套利策略都要暂停
最后说一句:统计套利不是印钞机。它需要你耐心等待信号,严格执行纪律。我见过太多人,协整关系算得漂亮,一到实盘就管不住手——结果被市场狠狠教育了一顿。
记住:订单簿是市场的语言,协整关系是市场的规律。听懂语言,尊重规律,你才能在统计套利这条路上走得更远。