🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

习题 1: 人工数据测试

a. 协整测试 I

判断以下两个人工生成序列 A 和 B 是否协整,使用 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

b. 协整测试 II

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

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: 真实数据测试

a. 真实协整测试 I

判断股票 UAL 和 AAL 在 2015 年是否协整,使用 coint() 函数并选择合理置信水平。

import yfinance as yf

ual = yf.download('UAL', start='2015-01-01', end='2016-01-01')['Close']
aal = yf.download('AAL', start='2015-01-01', end='2016-01-01')['Close']

b. 真实协整测试 II

判断股票 FCAU 和 HMC 在 2015 年是否协整,使用 coint() 函数并选择合理置信水平。

fcau = yf.download('FCAU', start='2015-01-01', end='2016-01-01')['Close']
hmc = yf.download('HMC', start='2015-01-01', end='2016-01-01')['Close']

习题 3: 寻找协整对

使用 find_cointegrated_pairs 函数在金属矿业股票中寻找协整对。

symbol_list = ['MTRN', 'CMP', 'TRQ', 'SCCO', 'HCLP', 'SPY']
data = yf.download(symbol_list, start='2015-01-01', end='2016-01-01')['Close']
prices_df = data[symbol_list]  # 确保列顺序一致

# 协整对搜索函数
def find_cointegrated_pairs(data):
    n = data.shape[1]
    score_matrix = np.zeros((n, n))
    pvalue_matrix = np.ones((n, n))
    keys = data.columns
    pairs = []
    for i in range(n):
        for j in range(i+1, n):
            S1 = data.iloc[:, i]
            S2 = data.iloc[:, j]
            result = coint(S1, S2)
            pvalue = result[1]
            pvalue_matrix[i, j] = pvalue
            if pvalue < 0.05:
                pairs.append((keys[i], keys[j]))
    return score_matrix, pvalue_matrix, pairs

习题 4: 样本外验证

a. 计算价差

使用 2015 年数据建立线性回归模型,找到使 MTRN 和 SCCO 价差平稳的系数。

S1 = prices_df['MTRN']
S2 = prices_df['SCCO']

b. 测试系数

使用 (a) 中得到的系数,绘制 2016 年上半年的加权价差并检验平稳性。

S1_out = yf.download('MTRN', start='2016-01-01', end='2016-07-01')['Close']
S2_out = yf.download('SCCO', start='2016-01-01', end='2016-07-01')['Close']

附加题: Hurst 指数

计算并绘制上述股票对的 Hurst 指数,用于监测价差的均值回归特性。

参考链接:


注意:

  1. 所有数据获取均使用 yfinance,时间范围需转换为 datetime 格式
  1. find_cointegrated_pairs 函数已适配 DataFrame 列名
  1. 价格数据使用复权收盘价 (Close)