第四节:价差分析核心工具
做跨市场套利,说白了就是跟价差打交道。你想想看,两个市场之间价差波动,就是我们赚钱的机会。但怎么分析价差?怎么判断它是不是真的有机会?这里头有套完整的工具链。
我个人习惯把价差分析分成三步走:先搞清楚价差怎么算,再检验它是不是平稳,最后看两个品种之间有没有长期关系。嗯,咱们一个一个来。
4.1 价差公式推导
价差不是简单的一减就完事了。我在项目中遇到过不少新手,上来就用A价格减B价格,结果发现价差序列越走越偏,根本没法用。
真正的价差公式,要考虑几个关键因素:
- 汇率换算:跨市场交易,两个市场可能用不同货币计价
- 合约乘数:不同交易所的合约规格不一样
- 交易成本:手续费、滑点、隔夜利息都要算进去
标准价差公式是这样的:
价差 = P1 × M1 × R1 - P2 × M2 × R2
其中:
P1 = 市场1的价格
M1 = 市场1的合约乘数
R1 = 市场1的汇率(如果与基准货币不同)
P2 = 市场2的价格
M2 = 市场2的合约乘数
R2 = 市场2的汇率
实战经验:我一般会把价差归一化处理,也就是除以某个基准价格。这样价差就变成了一个百分比,不同时间段的价差可以直接比较。
举个例子,做沪铜和伦铜的套利:
沪铜价格:50000元/吨
伦铜价格:6000美元/吨
汇率:6.8
归一化价差 = (50000 - 6000 × 6.8) / 50000
= (50000 - 40800) / 50000
= 0.184 或 18.4%
这个18.4%就是价差率。当它偏离历史均值时,就出现了套利机会。
4.2 价差序列平稳性检验(ADF检验)
为什么要做平稳性检验?说白了,就是看价差会不会越跑越远。如果价差不平稳,你开仓后它可能一去不回头,那就亏大了。
ADF检验是我最常用的方法。它的核心思想很简单:检验价差序列是否存在单位根。
小技巧:ADF检验的p值小于0.05,就说明价差是平稳的。我一般会要求p值小于0.01才放心。
Python代码实现:
from statsmodels.tsa.stattools import adfuller
import numpy as np
def check_spread_stationarity(spread):
"""
检验价差序列的平稳性
"""
result = adfuller(spread)
print(f'ADF统计量: {result[0]:.4f}')
print(f'p值: {result[1]:.4f}')
print(f'临界值:')
for key, value in result[4].items():
print(f' {key}: {value:.4f}')
if result[1] < 0.05:
print('✅ 价差序列平稳,可以进行套利')
else:
print('❌ 价差序列不平稳,需要进一步处理')
# 使用示例
spread_data = np.array([...]) # 你的价差数据
check_spread_stationarity(spread_data)
我曾经踩过的坑:有一次检验结果p值0.049,我以为通过了,结果实盘时价差持续偏离。后来发现是样本量太小导致的假阳性。现在我至少用500个数据点做检验。
4.3 协整关系与回归分析
协整关系,听起来高大上,其实意思就是:两个价格序列虽然各自不平稳,但它们之间的线性组合是平稳的。说白了,就是它们会一起涨一起跌,不会走散。
检验协整关系,我常用Engle-Granger两步法:
- 第一步:用OLS回归估计协整系数
- 第二步:对残差做ADF检验
代码实现:
import statsmodels.api as sm
def cointegration_test(price1, price2):
"""
检验两个价格序列的协整关系
"""
# 第一步:OLS回归
X = sm.add_constant(price2)
model = sm.OLS(price1, X).fit()
# 提取残差
residuals = model.resid
# 第二步:对残差做ADF检验
adf_result = adfuller(residuals)
print(f'协整系数: {model.params[1]:.4f}')
print(f'截距项: {model.params[0]:.4f}')
print(f'残差ADF p值: {adf_result[1]:.4f}')
if adf_result[1] < 0.05:
print('✅ 存在协整关系,可以进行配对交易')
return True
else:
print('❌ 不存在协整关系')
return False
实战要点:协整关系不是一成不变的。我每周都会重新检验一次,确保关系还在。市场结构变了,协整关系可能就断了。
4.4 知识体系总览
为了让你更直观地理解这套工具链,我画了张图:
4.5 实战中的注意事项
说了这么多理论,最后分享几个实战中的坑:
- 数据频率要匹配:两个市场的时间戳要对齐,别用1分钟数据和5分钟数据做分析
- 注意交易时间差:跨时区市场,开盘时间不同,价差在交接时段会异常波动
- 定期重新检验:协整关系会随时间变化,我每月至少重新跑一次检验
我的习惯:每次开仓前,我都会用最新的100个数据点重新跑一遍ADF检验。虽然麻烦点,但能避免很多假信号。
这套工具链,我用了快十年了。从最初的简单价差计算,到现在的完整检验流程,每一步都是用真金白银换来的经验。你照着这个流程走,至少能避开80%的坑。
公众号:蓝海资料掘金营,微信deep3321