跳到主内容
研究主线期货与跨资产研究 · 第51–54讲3/4 · 配套练习模块导览 →
练习

第53讲:期货均值回归 (Mean Reversion on Futures) · 练习

对人工与真实期货序列执行协整检验,估计价差系数,再用后续样本检查平稳性和参数失效。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。

习题 1: 测试人工示例#

习题 1a: 协整检验 I#

判断以下两个人工序列A和B是否协整,使用coint()函数并选择合理的置信度水平。

code
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import coint

A_returns = np.random.normal(0, 1, 100)
A = pd.Series(np.cumsum(A_returns), name='A') + 50

some_noise = np.random.exponential(1, 100)
B = A - 7 + some_noise

习题 1b: 协整检验 II#

判断以下两个人工序列C和D是否协整,使用coint()函数并选择合理的置信度水平。

code
C_returns = np.random.normal(1, 1, 100)
C = pd.Series(np.cumsum(C_returns), name='C') + 100

D_returns = np.random.normal(2, 1, 100)
D = pd.Series(np.cumsum(D_returns), name='D') + 100

习题 2: 测试真实案例#

习题 2a: 真实协整检验 I#

使用2015年数据,判断期货品种CN和SB是否协整。

code
import yfinance as yf

cn_price = yf.download('CN=F', start='2015-01-01', end='2016-01-01')['Close']
sb_price = yf.download('SB=F', start='2015-01-01', end='2016-01-01')['Close']

习题 2b: 真实协整检验 II#

使用2015年数据,判断期货品种CL和HO是否协整。

code
cl_price = yf.download('CL=F', start='2015-01-01', end='2016-01-01')['Close']
ho_price = yf.download('HO=F', start='2015-01-01', end='2016-01-01')['Close']

习题 3: 样本外验证#

习题 3a: 计算价差#

使用2015年数据构建线性回归模型,找到使CL和HO价差平稳的线性组合系数。

code
import statsmodels.api as sm

# 使用前需确保已获取cl_price和ho_price数据

习题 3b: 测试系数有效性#

使用2016年上半年数据验证系数有效性,并检验价差平稳性。

code
cl_out = yf.download('CL=F', start='2016-01-01', end='2016-07-01')['Close']
ho_out = yf.download('HO=F', start='2016-01-01', end='2016-07-01')['Close']

附加题: 赫斯特指数#

计算价差序列的赫斯特指数,并实现时间维度上的持续监控。

code
# 需要自行实现或寻找现成的赫斯特指数计算库
# 参考链接:
# https://en.wikipedia.org/wiki/Hurst_exponent
# 原 Quantopian 参考链接已失效

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。