始める無料で始める

Bitcoin と Ethereum は共和分していますか?

共和分の検定は2段階で行います。まず一方の時系列をもう一方に回帰して共和分ベクトルを求め、次に回帰の残差に対してADF検定を行います。前の例では、単位変換の後に2系列の差を取っただけで、暗黙に共和分ベクトルを \(\small (1,-1)\) と仮定していたため、最初の段階は不要でした。ここでは、両方の段階を実行します。

暗号資産のひとつである bitcoin (BTC) の値を、もうひとつの暗号資産である ethereum (ETH) に回帰します。回帰係数を \(\small b\) とすると、共和分ベクトルは単純に \(\small (1,-b)\) になります。続いて、BTC \(\small - b \) ETH に対してADF検定を行います。Bitcoin と Ethereum の価格は DataFrame BTCETH にあらかじめ読み込まれています。

この演習はコースの一部です

Pythonで学ぶ時系列解析

コースを見る

演習の手順

  • 回帰のために statsmodels モジュールと、adfuller 関数をインポートします
  • sm.add_constant() を用いて ETH DataFrame に定数項を追加します
  • sm.OLS(y,x).fit() を使って BTCETH に回帰し(y が従属変数、x が独立変数)、結果を result に保存します。
    • 切片は result.params[0]、傾きは result.params[1] にあります
  • BTC \(\small - b \) ETH に対して ADF 検定を実行します

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# 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])
コードを編集して実行