НачатьНачать бесплатно

Коинтегрированы ли 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])
Редактировать и запускать код