跨期套利策略实现(基于掘金量化平台)策略思想策略主要步骤实现订阅数据subscribe(symbols=symbols, frequency='1d', count=31, wait_group=True)
订阅数据需要在定义init函数里面设置,并调用subscribe函数,这里注意,我们需要通过计算前三十根bars来作为开平仓的标准,并在当前bar上做出开平仓操作,所以需要获取31根bar:
数据获取
data_rb = context.data(symbol=symbol, frequency='1d', count=31, fields='close')
订阅数据之后,需要获取已经订阅的数据来进行操作,这时需调用context.data函数:
协整性检验def cointegration_test(series01, series02):
urt_rb1801 = ts.adfuller(np.array(series01), 1)[1]
urt_rb1805 = ts.adfuller(np.array(series02), 1)[1]
print (ts.adfuller(np.array(series01), 1))
# 同时平稳或不平稳则差分再次检验
if (urt_rb1801 > 0.1 and urt_rb1805 > 0.1) or (urt_rb1801 < 0.1 and urt_rb1805 < 0.1):
urt_diff_rb1801 = ts.adfuller(np.diff(np.array(series01)), 1)[1]
urt_diff_rb1805 = ts.adfuller(np.diff(np.array(series02), 1))[1]
# 同时差分平稳进行OLS回归的残差平稳检验
if urt_diff_rb1801 < 0.1 and urt_diff_rb1805 < 0.1:
matrix = np.vstack([series02, np.ones(len(series02))]).T
beta, c = np.linalg.lstsq(matrix, series01)[0]
resid = series01 - beta * series02 - c
if ts.adfuller(np.array(resid), 1)[1] > 0.1:
result = 0.0
else:
result = 1.0
return beta, c, resid, result
else:
result = 0.0
return 0.0, 0.0, 0.0, result
else:
result = 0.0
return 0.0, 0.0, 0.0, result
协整性检验需要我们自己定义函数(如以上代码),此函数需要输入两个序列,返回值为回归方程中的各项参数及两序列是否具有协整性的结果。
策略回测分析回测报告