跳转到内容

协整与价差构造

两个非平稳的价格序列 ptA,ptBp^A_t, p^B_t,若存在系数 β\beta 使线性组合

st=ptA−β ptBs_t = p^A_t - \beta\, p^B_t

平稳(见平稳性与单位根),则称两者协整。含义:两者各自漂移,但被一个长期均衡关系拴住——sts_t 的偏离会回归。配对交易交易的不是收益,而是对均衡的偏离。

  1. 对 pA,pBp^A, p^B 做 OLS 回归,得 β^\hat\beta;
  2. 对残差 s^t\hat s_t 做 ADF 检验——拒绝单位根即协整。

简单直观,但有对称性问题:以 A 回归 B 与以 B 回归 A 得到的 β^\hat\beta 不同,检验结论也可能不同。且只适用于两个序列。

基于 VAR 的系统方法,直接检验协整关系的个数(秩),适用于三个及以上的资产池:先定秩,再估计协整向量。多资产配对(一个空头对多个多头)用 Johansen,两两配对用 Engle–Granger 足够。

方法特点
OLS简单;截面上 β\beta 随样本窗口漂移
总体最小二乘(TLS)把价格的"测量误差"计入,更稳健
卡尔曼滤波把 β\beta 当作随时间漂移的状态,在线更新

协整关系不是常量:β\beta 随时间漂移意味着固定对冲比率会逐渐失配。卡尔曼滤波把比率更新变成管道的一部分:

kalman-beta.py
import numpy as np
def kalman_beta(pa: np.ndarray, pb: np.ndarray, q: float = 1e-5, r: float = 1e-2):
"""β 随时间漂移的卡尔曼滤波;q: 状态噪声,r: 观测噪声"""
beta, P = np.zeros(len(pb)), 1.0
betas = np.zeros(len(pb))
for t, x in enumerate(pb):
# 预测
P = P + q
# 更新(观测模型 pa ≈ β·pb)
K = P * x / (x**2 * P + r)
beta = beta + K * (pa[t] - beta * x)
P = P * (1 - K * x)
betas[t] = beta
return betas

协整关系在样本外经常失效——公司层面事件(重组、行业逻辑变化)会永久打破均衡。处理:

  1. 入池时优先有经济逻辑的关系(同行业、同供应链、控股关系),纯统计显著的配对不要;
  2. 持仓期间滚动复检协整(ADF + 系数漂移),断裂即退出,不等价差"回归";
  3. 单笔价差交易设时间止损:半衰期数倍的时间未回归,认亏离场,见OU 过程与半衰期。
  • 两两配对用 Engle–Granger,多资产用 Johansen;
  • 对冲比率用卡尔曼滤波在线更新,不做固定比率;
  • 入池标准:经济逻辑 + 滚动协整检验 + 时间止损三件套。
  • 协整关系在样本外经常失效,需持续监控
  • 对冲比率随时间漂移,卡尔曼滤波可在线更新
  • 经济逻辑(同行业、同供应链)比统计显著更重要