4. 最小二乘法(OLS)估计:OLS原理、回归残差分析、对冲比率计算实例

好,咱们进入正题。配对交易里最核心的一步,就是算对冲比率。说白了,就是找到两个品种之间稳定的线性关系。怎么找?最经典的方法就是最小二乘法,也就是OLS。

我刚开始做配对交易那会儿,也试过各种花里胡哨的方法。后来发现,OLS虽然简单,但用好了,效果一点不差。关键是你要理解它背后的逻辑,而不是只会调包。

4.1 OLS原理:到底在最小化什么?

OLS的全称是Ordinary Least Squares,普通最小二乘法。名字听着挺唬人,其实核心思想就一句话:找到一条直线,让所有数据点到这条直线的垂直距离的平方和最小

你想想看,我们有两个品种,比如X和Y。我们想用X去解释Y,也就是:

Y = α + β * X + ε

这里的β就是我们要的对冲比率。ε是残差,也就是模型没解释掉的部分。

OLS要做的,就是找到一组α和β,让所有残差的平方和最小。为什么是平方?因为平方可以放大大的误差,让模型更关注那些偏离大的点。嗯,这里要注意,平方也意味着异常值会被放大,后面我们会讲到怎么处理。

核心公式:

β = Cov(X, Y) / Var(X)

α = mean(Y) - β * mean(X)

我个人习惯,拿到数据后先算一下协方差和方差,心里有个底。这两个值能告诉你两个品种的联动性有多强。

4.2 回归残差分析:别只看R²

很多人做完OLS,看一眼R²很高就完事了。我建议你别这样。R²高不代表模型就好,残差里可能藏着大问题。

残差分析,说白了就是看模型没解释掉的部分有没有规律。如果残差还有明显的趋势或周期性,说明你的模型没抓到关键信息。

我在项目中遇到过一件事:有一次做两个能源股的配对,R²高达0.95,我差点就直接上线了。后来仔细一看残差图,发现残差有明显的季节性波动。原来这两个品种受不同季节的供需影响,简单的线性关系根本不够用。

残差分析主要看三点:

  • 残差是否平稳:用ADF检验,p值要小于0.05
  • 残差是否自相关:用Durbin-Watson检验,值接近2最好
  • 残差是否异方差:用Breusch-Pagan检验,p值要大于0.05

我的小技巧:

画一张残差vs拟合值的散点图。如果点随机分布在0轴上下,没有明显的喇叭形或弯曲,那模型基本靠谱。

4.3 对冲比率计算实例:手把手来一遍

光说不练假把式。咱们拿两个ETF来举个例子:SPY(标普500ETF)和IVV(另一个标普500ETF)。理论上它们应该高度相关,但实际交易中会有价差。

假设我们有100个交易日的收盘价数据:

日期 SPY IVV
2024-01-02 475.20 473.80
2024-01-03 473.50 472.10
... ... ...
2024-05-31 520.30 518.90

用Python跑一下OLS:

import numpy as np
import statsmodels.api as sm

# 假设spy和ivv是已经准备好的价格数组
X = sm.add_constant(spy)  # 加常数项
model = sm.OLS(ivv, X).fit()

print(model.summary())

# 提取对冲比率
hedge_ratio = model.params[1]
print(f"对冲比率: {hedge_ratio:.4f}")

跑出来的结果大概是这样的:

对冲比率: 0.9972
R²: 0.9985
残差标准差: 0.4521

你看,对冲比率接近1,这符合预期。两个都是标普500ETF,理论上应该同涨同跌。但0.9972意味着什么?意味着每持有1份SPY,需要做空0.9972份IVV来对冲。

我曾经踩过的坑:

直接用收盘价做OLS,忽略了股息调整。结果回测时发现对冲比率一直在漂移。后来我改用调整后的价格,问题就解决了。记住,数据质量决定模型质量。

4.4 动态调整:为什么不能一劳永逸?

有人会问:算出来一个对冲比率,是不是就能一直用?我的回答是:别做梦了。

市场在变,两个品种的关系也在变。半年前算出来的对冲比率,放到今天可能已经失效了。我建议的做法是:

  • 滚动窗口:用最近60个交易日的数据,每天重新算一次
  • 指数衰减:给近期的数据更高的权重,远的权重低
  • 阈值触发:当残差的标准差超过某个阈值时,重新估计

我个人比较喜欢滚动窗口,简单直接。窗口大小选多少?这得看你的交易频率。做日频交易,60天差不多。做高频的,可能20天就够了。

下面这张图展示了OLS的核心流程,从数据输入到对冲比率输出,每一步都环环相扣:

OLS对冲比率计算流程 步骤1:数据准备 价格序列X和Y 步骤2:OLS估计 计算α和β 步骤3:残差分析 平稳性/自相关检验 残差 合格? 步骤4:输出对冲比率 β = Cov(X,Y)/Var(X) 重新估计 调整窗口或数据 动态调整:建议每60个交易日重新计算一次

你看,整个流程其实不复杂。关键是要形成闭环——算出来、检验、不行就重来。这才是实战中该有的态度。

实战建议:

别一次性把所有资金都押上。先用小仓位跑一段时间,观察对冲比率是否稳定。稳定了再加仓,这是我从亏钱中学到的教训。

好了,这一章的内容就到这儿。OLS的原理、残差分析、还有具体的计算实例,我都给你讲透了。下一章咱们聊聊怎么用这些对冲比率去构建实际的交易策略。


公众号:蓝海资料掘金营,微信deep3321