Zijn Bitcoin en Ethereum gecointegreerd?
Cointegratie bestaat uit twee stappen: eerst regressseer je de ene tijdreeks op de andere om de cointegratievector te krijgen, daarna voer je een ADF-test uit op de residuen van de regressie. In het vorige voorbeeld hoefde je de eerste stap niet te doen, omdat we impliciet aannamen dat de cointegratievector \(\small (1,-1)\) was. Met andere woorden: we namen het verschil tussen de twee reeksen (na eenhedenconversie). Hier doe je beide stappen.
Je regresseert de waarde van de ene cryptomunt, bitcoin (BTC), op een andere cryptomunt, ethereum (ETH). Noem de regressiecoëfficiënt \(\small b\); de cointegratievector is dan eenvoudigweg \(\small (1,-b)\). Voer daarna de ADF-test uit op BTC \(\small - b \) ETH. De prijzen van Bitcoin en Ethereum zijn al ingeladen in DataFrames BTC en ETH.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in Python
Oefeninstructies
- Importeer de statsmodels-module voor regressie en de functie
adfuller - Voeg een constante toe aan de DataFrame
ETHmetsm.add_constant() - Regressseer
BTCopETHmetsm.OLS(y,x).fit(), waarbij y de afhankelijke variabele is en x de onafhankelijke variabele, en sla de resultaten op inresult.- De intercept staat in
result.params[0]en de helling (slope) inresult.params[1]
- De intercept staat in
- Voer de ADF-test uit op BTC \(\small - b \) ETH
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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])