Чи є біткоїн і ефір коінтегрованими?
Коїнтеграція складається з двох кроків: регресувати один часовий ряд на інший, щоб отримати вектор коінтеграції, а потім виконати ADF-тест на залишках цієї регресії. У попередньому прикладі перший крок не був потрібен, адже ми неявно припустили, що вектор коінтеграції — \(\small (1,-1)\). Тобто ми брали різницю між двома рядами (після узгодження одиниць виміру). Тут ви виконаєте обидва кроки.
Ви зрегресуєте вартість однієї криптовалюти — біткоїна (BTC) — на іншу криптовалюту — ефір (ETH). Якщо позначити коефіцієнт регресії як \(\small b\), то вектор коінтеграції дорівнює просто \(\small (1,-b)\). Далі виконайте ADF-тест для BTC \(\small - b \) ETH. Дані про ціни біткоїна та ефіру вже завантажені в датафрейми BTC і ETH.
Ця вправа є частиною курсу
Аналіз часових рядів у Python
Інструкції до вправи
- Імпортуйте модуль statsmodels для регресії та функцію
adfuller. - Додайте константу до датафрейму
ETHза допомогоюsm.add_constant(). - Зрегресуйте
BTCнаETH, використовуючиsm.OLS(y,x).fit(), де y — залежна змінна, а x — незалежна змінна, і збережіть результати вresult.- Вільний член міститься в
result.params[0], а кутовий коефіцієнт — уresult.params[1].
- Вільний член міститься в
- Запустіть ADF-тест для BTC \(\small - b \) ETH.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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])