halo 的技术博客

返回

配对交易(pair trading)是量化入门第一课:找两只走势绑定的股票,价差一拉大就反向开仓。但真实市场里,能绑定的往往不止两只——同一产业链的上下游、同一板块的权重股、汇率三角(EUR/USD、USD/JPY、EUR/JPY),常常是三只一起共享一个”共同趋势”。两两配对会漏掉信息,还会因为选哪一对而结果不稳定。

Johansen (1991) 把协整从”二元”推广到”多元”:它一次性检验 nnI(1)I(1) 序列里到底有几个协整关系,并把每个关系写成一个协整向量 β\beta。本文要讲清三件事,并用可复现代码演示:

  1. 多元协整的模型框架(VECM 与 Π=αβ\Pi=\alpha\beta');
  2. Johansen 的两个检验——迹检验与最大特征值检验;
  3. 拿到 β\beta 之后,怎么把”三组一起”做成套利组合。

它也是外汇三角套利、ETF 篮子套利背后同一套统计语言。

一、为什么二元配对不够#

Engle-Granger 两步法只处理两只资产:对 (y,x)(y,x) 回归得残差,再做 ADF 看残差稳不稳。问题有三:

  • 信息浪费:三只资产 p1,p2,p3p_1,p_2,p_3 共享一个趋势,单独看 (p1,p2)(p_1,p_2) 的残差可能勉强平稳、(p1,p3)(p_1,p_3) 又不平稳,你不知道该信哪对;
  • 不对称:回归里谁是”被解释变量”会影响结果(对 yy 回归 xx 和反过来不一样);
  • 无法处理多个共同趋势:当存在不止一个协整关系时,二元框架根本表达不了。

Johansen 直接把 nn 个资产放进一个向量,用极大似然一次性把结构拆干净。

二、向量误差修正模型(VECM)#

假设 nn 个价格 XtX_t 都是 I(1)I(1)(一阶单整,自身非平稳,但存在平稳的线性组合)。Johansen 从 VAR 出发,写成误差修正形式:

ΔXt=ΠXt1+εt,Π=αβ\Delta X_t = \Pi X_{t-1} + \varepsilon_t, \qquad \Pi = \alpha\beta'

  • β\betan×rn\times r协整向量矩阵:每一列是一个协整关系,βXt\beta'X_t 平稳;
  • rr 就是协整秩(有几个平稳组合);
  • α\alphan×rn\times r调整速度矩阵:描述每个资产以多快速度被”拉回”均衡。

直观理解:如果 βXt1\beta'X_{t-1} 偏离了 0(价差走阔),αβXt1\alpha\beta'X_{t-1} 就会推动 ΔXt\Delta X_t 把它拉回来——这就是”误差修正”。βα\beta'\alpha 的对角元越负,回复越快。

α\alpha 的符号也有含义:若某个资产在 α\alpha 里对应正、其它为负,说明当价差走阔时,是这只资产在”被推着”往均衡回(它主导修复);若几项同号,则更像共同的外生冲击在驱动。看 α\alpha 能知道”到底是谁在维持这个均衡关系”。

接下来 Johansen 要回答两个具体问题:rr 等于几? 以及 β\beta 长什么样?

三、Johansen 检验:广义特征值分解#

核心是把 Π\Pi 的秩 rr 变成可检验的统计量。做法:

  1. ΔXt\Delta X_t 对常数项回归的残差 R0R_0,以及 Xt1X_{t-1} 对常数项回归的残差 R1R_1
  2. 算三个矩矩阵 S00=R0R0/T,  S11=R1R1/T,  S01=R0R1/TS_{00}=R_0'R_0/T,\; S_{11}=R_1'R_1/T,\; S_{01}=R_0'R_1/T
  3. 解广义特征值问题 Ax=λS11xA x = \lambda S_{11} x,其中 A=S10S001S01A = S_{10}S_{00}^{-1}S_{01}
  4. 得到 nn 个特征值 λ1λ2λn[0,1)\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_n\in[0,1)

⚠️ 一个新手必踩的坑:残差 R0R_0ΔX\Delta X 对常数项回归的残差,不能把 Xt1X_{t-1} 也当回归元放进去——否则协整信息会从 R0R_0 里被抹掉,S01S_{01} 直接变 0,特征值全为 0,检验彻底失效。

特征值越大,说明对应的方向越”平稳”(越像个协整关系)。Johansen 基于这些特征值构造两个检验:

  • 迹检验(Trace)Qr=Ti=rn1ln(1λi)Q_r = -T\sum_{i=r}^{n-1}\ln(1-\lambda_i),检验”协整秩 r\le r”;
  • 最大特征值检验(Max-Eigen)Qrmax=Tln(1λr)Q_r^{\max} = -T\ln(1-\lambda_r),只检验”第 r+1r+1 个特征值是否为 0”。

把算出的统计量和 Osterwald-Lenum (1992) 的渐近临界值比,就能定出 rr

跑出来(α\alpha 为三资产、T=2500):

特征值: [0.0527 0.0019 0.0016]
beta(归一化): [ 1.     -0.5104 -0.4779]
迹统计量 r<=0,1,2: [144.04   8.81   3.93]
最大特征值 r=0,1,2: [135.23   4.87   3.93]
plaintext

临界值(95%):迹检验 (3,0)=34.91,  (3,1)=19.96(3,0)=34.91,\;(3,1)=19.96;最大特征值 (3,0)=31.61,  (3,1)=16.54(3,0)=31.61,\;(3,1)=16.54

判读:

  • 迹检验:Q0=144>34.91Q_0=144 > 34.91(拒绝"r0r\le 0"),但 Q1=8.81<19.96Q_1=8.81 < 19.96(不拒绝"r1r\le 1")→ 协整秩 r=1r=1
  • 最大特征值:135>31.61135 > 31.61,但 4.87<16.544.87 < 16.54 → 同样 r=1r=1

两个检验一致:三个资产里存在恰好一个协整关系。而且估计出的 β(1,0.51,0.48)\beta\approx(1,-0.51,-0.48),和模拟时埋的真值 (1,0.5,0.5)(1,-0.5,-0.5) 几乎重合——说明 Johansen 真的把”哪三个权重组合在一起才平稳”找出来了。

三只价格序列:走势同向(共享共同趋势),但水平与斜率各异

协整残差围绕 0 波动(平稳),而单只价格持续漂移(非平稳)

Johansen 特征值:第1个显著>0,第2/3个接近0,协整秩为1

四、从 β 到三组一起的套利#

拿到 β=(1,0.51,0.48)\beta=(1,-0.51,-0.48),就能构造三腿组合(价差):

et=p1,t0.51p2,t0.48p3,te_t = p_{1,t} - 0.51\,p_{2,t} - 0.48\,p_{3,t}

ete_t 是平稳的——它不会像单只价格那样一路漂移,而是在均值附近来回晃。估计出的误差修正速度 κ=βα0.12\kappa=\beta'\alpha\approx -0.12,半衰期约 5 期,说明拉大之后几个交易日就能回复。

套利规则很直接:

  • ete_t 的 z-score 冲过 +1.5+1.5(组合被高估): p1p_1 0.510.51p2p_2 0.480.48p3p_3
  • 当 z-score 跌破 1.5-1.5(被低估):反向;
  • 回到 0 附近平仓。

注意三个腿的头寸是β\beta 的权重绑定的——这正是”三组一起”和”两两配对”的本质区别:你不是在交易某两只的相对价格,而是在交易一个三维空间里的均衡偏离,且每一腿的头寸比例由统计估计给出,不是拍脑袋。

经典例子是外汇三角:EUR/USD、USD/JPY、EUR/JPY 三者满足无套利三角关系,任一边的偏离都会被三边套利瞬时抹平——这正是 Johansen 在真实市场里最干净的应用场景之一。

三腿协整组合:价差越界即反向开仓(三组一起套利)

五、真实陷阱(别拿到 β 就冲进去)#

1. 先检验单整性,别拿伪协整当真。 Johansen 的前提是变量都是 I(1)I(1) 且协整。如果某个资产其实是 I(0)I(0)(本身平稳),或者存在确定性趋势没处理,结论会全盘错。正式流程要先做 ADF/PP 单位根检验。

2. 结构突变会让协整关系”断裂”。 2008、2020、监管政策变化,都可能让原来的产业链关系失效。用全样本估出的 β\beta 在样本内漂亮,样本外可能早已漂移。实战要滚动窗口重估 β\beta,并监控 β\beta 是否稳定。

3. β 的”识别”问题。 Johansen 给出的特征向量只确定到”空间”层面;如果有多个协整关系(r>1r>1),哪个向量对应哪个经济含义需要额外约束(just-identified / over-identified)才能解释。本文 r=1r=1 相对简单,但多关系时别以为随便归一化就行。

4. 小样本与 size distortion。 渐近临界值在小 T、近单位根时严重失真,检验会过度拒绝(假阳性)。T=2500 已经比较稳,但若用日频短样本(T 几百),最好用 bootstrap 临界值或 Bartlett 小样本修正。

5. 交易成本吃光统计套利。 三组一起意味着三倍的手续费、买卖价差和冲击成本。协整价差的均值回复幅度往往只有几个 bp,单边交易成本就可能吞掉大部分收益。回测必须按真实 tick 级成本核算,别只看价差 z-score 的”理论净值”。

6. 对冲比例≠无风险。β\beta 权重建仓只是统计意义上的”市场中性”,不是真的无风险——共同趋势的临时冲击、个股特异性风险、流动性同时枯竭,都会让三腿在极端时一起亏。

7. 近共线让 β 不稳定。 当三只资产高度相关(比如同板块三只银行股),协整向量在数值上接近奇异,β\beta 的估计对样本极敏感,稍有不同就给出差别很大的权重。这时应先做主成分或聚类降维,别直接把高度相关的标的塞进 Johansen。

六、小结#

  • 两两配对只利用了二元信息;Johansen 把 nn 个资产放进 VECM,一次性给出协整秩 rr协整向量 β\beta调整速度 α\alpha(比 Engle-Granger 信息更全、且不受回归方向影响);
  • 检验靠广义特征值分解出的 λ\lambda,用迹检验最大特征值检验两个角度交叉确认 rr
  • 拿到 β\beta 就能构造多腿价差做均值回复,头寸比例由统计估计给出——这是”三组一起套利”的严谨版本;
  • 落地前务必处理单位根前置检验、结构突变、小样本失真、交易成本这四类真实陷阱。

附:本文所有图表与检验数值均来自上方可运行代码(VECM 模拟 + Johansen 广义特征值分解 + 迹/最大特征值检验),参数与结果一致,可直接复现。

Johansen 多变量协整:不止两两配对,三组一起套利的统计基础
https://blog.halo26812.eu.org/blog/johansen-multivariate-cointegration
Author halo
Published at 2026年7月11日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨