Är Bitcoin och Ethereum kointegrerade?
Kointegration består av två steg: först regresserar du en tidsserie mot den andra för att få kointegrationsvektor, sedan utför du ett ADF-test på residualerna från regressionen. I det förra exemplet behövde vi inte utföra det första steget, eftersom vi implicit antog att kointegrationsvektor var \(\small (1,-1)\). Med andra ord tog vi differensen mellan de två tidsserierna (efter en enhetsjustering). Här utför du båda stegen.
Du regresserar värdet på en kryptovaluta, bitcoin (BTC), mot en annan, ethereum (ETH). Om vi kallar regressionskoefficienten \(\small b\), är kointegrationsvektorn helt enkelt \(\small (1,-b)\). Utför sedan ADF-testet på BTC \(\small - b \) ETH. Bitcoin- och Ethereum-priser finns förinstallerade i DataFrames BTC och ETH.
Den här övningen är en del av kursen
Tidsserieanalys i Python
Övningsinstruktioner
- Importera statsmodels-modulen för regression samt funktionen
adfuller - Lägg till en konstant i DataFrame
ETHmed hjälp avsm.add_constant() - Regressera
BTCmotETHmedsm.OLS(y,x).fit(), där y är den beroende variabeln och x är den oberoende variabeln, och spara resultaten iresult.- Interceptet finns i
result.params[0]och lutningen iresult.params[1]
- Interceptet finns i
- Kör ADF-testet på BTC \(\small - b \) ETH
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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])