Bitcoin 和 Ethereum 有共整合嗎?
共整合通常分成兩個步驟:先以一個時間序列對另一個做迴歸以取得共整合向量,接著對該迴歸的殘差做 ADF 檢定。上一個例子裡,我們不用做第 1 步,因為我們已隱含假設共整合向量是 \(\small (1,-1)\)。也就是說,在單位轉換後,我們直接做兩個序列的差。這裡你會把兩個步驟都做完。
你會用一種加密貨幣 bitcoin(BTC)的價格去回歸另一種加密貨幣 ethereum(ETH)的價格。若將迴歸係數記為 \(\small b\),則共整合向量就是 \(\small (1,-b)\)。接著對 BTC \(\small - b \) ETH 做 ADF 檢定。Bitcoin 和 Ethereum 的價格已預先載入在 BTC 與 ETH 這兩個 DataFrame 中。
本練習屬於課程
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])