Коинтегрированы ли Bitcoin и Ethereum?
Коинтеграция включает два шага: сначала нужно регрессировать один временной ряд на другой, чтобы получить вектор коинтеграции, а затем провести АДФ-тест на остатках регрессии. В предыдущем примере первый шаг был не нужен, поскольку мы неявно предполагали, что вектор коинтеграции равен \(\small (1,-1)\). Иными словами, мы вычисляли разность двух рядов (после перевода единиц измерения). Здесь вы выполните оба шага.
Вам нужно регрессировать стоимость одной криптовалюты — bitcoin (BTC) — на другую криптовалюту, ethereum (ETH). Если обозначить коэффициент регрессии как \(\small b\), то вектор коинтеграции примет вид \(\small (1,-b)\). Затем проведите АДФ-тест для BTC \(\small - b \) ETH. Цены Bitcoin и Ethereum предварительно загружены в DataFrame'ы BTC и ETH.
Это упражнение является частью курса
Анализ временных рядов на Python
Инструкции к упражнению
- Импортируйте модуль statsmodels для регрессии и функцию
adfuller - Добавьте константу в DataFrame
ETHс помощьюsm.add_constant() - Регрессируйте
BTCнаETH, используяsm.OLS(y,x).fit(), где y — зависимая переменная, а x — независимая переменная; сохраните результаты вresult.- Свободный член хранится в
result.params[0], а наклон — вresult.params[1]
- Свободный член хранится в
- Запустите АДФ-тест для 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])