比特币与以太坊是否协整?
协整检验通常分两步:先将一个时间序列回归到另一个时间序列以得到协整向量,然后对回归残差进行 ADF 检验。上一例中无需执行第一步,因为我们隐含假设协整向量为 \(\small (1,-1)\)。也就是说,我们在做单位换算后直接取两条序列的差。在本题中,您需要完成这两个步骤。
您将把一种加密货币比特币(BTC)的价格回归到另一种加密货币以太坊(ETH)的价格上。若回归系数记为 \(\small b\),则协整向量为 \(\small (1,-b)\)。随后对 BTC \(\small - b \) ETH 进行 ADF 检验。比特币和以太坊的价格已预先加载在 DataFrame BTC 和 ETH 中。
本练习是课程的一部分
Python 中的时间序列分析
练习说明
- 导入回归所需的 statsmodels 模块和
adfuller函数。 - 使用
sm.add_constant()为ETHDataFrame 添加常数项。 - 使用
sm.OLS(y,x).fit()将BTC回归到ETH上,其中 y 为因变量,x 为自变量,并将结果保存到result。- 截距在
result.params[0],斜率在result.params[1]。
- 截距在
- 对 BTC \(\small - b \) ETH 运行 ADF 检验。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import the statsmodels module for regression and the adfuller function
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
# Regress BTC on ETH
ETH = sm.___(ETH)
result = sm.OLS(___,___).fit()
# Compute ADF
b = result.params[1]
adf_stats = adfuller(___['Price'] - b*___['Price'])
print("The p-value for the ADF test is ", adf_stats[1])