克隆策略

我们人为地构造两组数据,由此直观地看一下协整关系。

In 17
:
import numpy as np
import pandas as pd
import seaborn
import statsmodels
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import coint

构造数据

首先,我们构造两组数据,每组数据长度为100。第一组数据为100加一个向下趋势项再加一个标准正态分布。第二组数据在第一组数据的基础上加30,再加一个额外的标准正态分布。有:

Xt=100+γt+ϵt
Yt=Xt+30+μt

其中γt为趋势项,ϵtμt为无相关性的正态随机变量。

代码如下:

In 18
:
np.random.seed(100)
x = np.random.normal(0, 1, 500)
y = np.random.normal(0, 1, 500)
X = pd.Series(np.cumsum(x)) + 100
Y = X + y + 30
for i in range(500):
    X[i] = X[i] - i/10
    Y[i] = Y[i] - i/10
T.plot(pd.DataFrame({'X':X, 'Y':Y}), chart_type='line', title='Price')
 

显然,这两组数据都是非平稳的,因为均值随着时间的变化而变化。但这两组数据是具有协整关系的,因为他们的差序列YtXt是平稳的:

In 21
:
T.plot(pd.DataFrame({'Y-X':Y-X,'Mean':np.mean(Y-X)}),chart_type='line', title='Price')

上图中,可以看出蓝线YtXt一直围绕均值波动。而均值不随时间变化(其实方差也不随时间变化)。