最近做的小项目是协整关系用于配对交易。顺便复习了协整和相关性之间的差异。应该来说,协整关系是时间序列的一个重点内容,多次碰到,值得注意。
一、相关性(correlation)VS协整关系(cointegration)
1、相关性(correlation)
- 定义:通常是两个序列X 和 Y之间的线性依存关系(linear dependence),
- XY相关系数corr(X,Y)=0,未必独立(独立定义P(XY)=P(X)P(Y)),因为XY可能服从非线性的相关关系;而独立一定不相关。
- corr(X,Y)=0,是指X的线性组合无法解释Y。
- 相关系数介于[-1,1]之间—— ±1是完全线性相关。
- 检测相关性,pearsonr检测的是具体值之间的相关性,spearsonr检测的是rank之间的相关性(券商多因子中提到的RankIC一般就是spearmanr)。
from scipy.stats import pearsonr, spearmanr
pearson_corr, pearson_pvalue = pearsonr(X, Y)
spearnman_corr, spearnman_pvalue = spearmanr(X, Y)
2、平稳性(Stationarity)
- 定义:如果数据产生过程的参数(例如均值和方差)不随着时间变化,那么数据平稳。
- 例如,时间序列
的均值和方差是常数、和时间t无关,那么具有平稳性。
- 如果用平稳的分析刻画一个均值/方差随时间变化的时间序列,那么将会导致garbage in garbage out。
- 例如,下图series B,是一个随着时间t而均值不断增大的曲线。
- 测试平稳性:使用augmented Dickey Fuller test,P值越小,说明越可能是平稳的时间序列。
from statsmodels.tsa.stattools import adfuller
pvalue = adfuller(some_series)[1]
3、单整(Integration)——不是很重要
- 单整阶数(order of integration)
-
:如果一个时间序列Y的移动平均表达,满足条件,那么服从;其中是随机过程的白噪声(残差项),是残差项的权重,是起决定作用的序列。
- 注意:
-
-
:如果一个序列X的一阶差分服从,那么X服从。
- 实际运用:资产收益率一般被认为是服从
,资产价格被认为服从。
4、协整(Cointegration)
- 问题:单整
的时间序列未必平稳,但是如果通过一阶差分得到平稳的时间序列,那么刻画的是短期的动态。这里需要协整关系。
- 定义:如果
和均为,但是线性组合,那么和之间存在协整关系。
- 通常表达,
,其中