Pythonで分析してわかったこと
- BTC価格/ETH価格の比率は、2016年以降一定の値で落ち着いている。
- BTCとETHは相関が高く、同じような値動きをする傾向が強い。
- 2020年からはETHがBTCをアウトパフォームする傾向が見られる。今から投資するならBTCがおすすめ。
こんにちは、ウチダです。
最近は株式をほとんど売却して、金・銀・仮想通貨を買い集めています。
仮想通貨はアルトコインへの少額投資と、
ビットコインとイーサリアムへの積立投資を行っています。
初めて投資するなら、どちらがお買い得なのかと悩みますよね。
今回はPythonを使って、ビットコインとイーサリアムの価格を比較するチャートの作り方を紹介します。
(参考:2022年に株式投資するならどれがいい?)
目次
ビットコインとイーサリアムはどちらが割安?Pythonで投資を分析しよう

Pythonはデータ分析に強いプログラミング言語です。
コードがシンプルで分かりやすく、誰でも無料で身につけることができます。
今回はビットコインの価格をイーサリアムの価格で割った独自の指数を作成します。
データはYahoo Financeより取得します。
#ライブラリのインポート
from pandas_datareader import data
import pandas as pd
from pylab import mpl, plt
import numpy as np
import datetime
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
#データの期間
start = '2000-01-03'
end = datetime.date.today()
#BTCのデータ
btc_df = data.DataReader('BTC-USD', 'yahoo', start, end)
btc_open = btc_df['Open']
btc_close = btc_df['Close']
btc_high = btc_df['High']
btc_low = btc_df['Low']
#ETHのデータ
eth_df = data.DataReader('ETH-USD', 'yahoo', start, end)
eth_open = eth_df['Open']
eth_close = eth_df['Close']
eth_high = eth_df['High']
eth_low = eth_df['Low']
#BTC/ETH比率のデータを作成
ratio_df = pd.DataFrame()
ratio_df['Open'] = btc_open / eth_open
ratio_df['High'] = btc_high / eth_high
ratio_df['Low'] = btc_low / eth_low
ratio_df['Close'] = btc_close / eth_close
ratio_df.dropna(inplace=True)
#グラフ作成用のモジュールをインポート
#conda install -c conda-forge cufflinks-py
import cufflinks as cf
import plotly.offline as plyo
plyo.init_notebook_mode(connected=True)
#グラフデータの作成
qf = cf.QuantFig(
ratio_df,
title='BTC to ETH ratio',
legend='top',
name='BTC/ETH'
)
#グラフの表示と保存
plyo.iplot(
qf.iplot(asFigure=True),
image='png',
filename='btceth'
)
作成したグラフがこちらです。

この指標は、上昇するとビットコインがアウトパフォームしていることを意味します。
下落はイーサリアムが優位であることを意味します。
2016年まではビットコインが大きく伸びた期間でした。
それからはイーサリアムが大きく伸び、ほぼ一定の比率で推移しています。
特に2018年以降を拡大すると、横ばいになっていることがわかります。

ビットコインとイーサリアムの価格には相関があるのか?
Pythonで調べてみます。
ビットコインとイーサリアムの価格には相関がある?

終値の日次変化を散布図にして、相関関係を調べます。
期間は1500日分(約4年間)にします。
プログラムのコードはこちら
#比較用のデータを作成
compare_df = pd.DataFrame()
compare_df['BTC'] = btc_close[-1500:]
compare_df['ETH'] = eth_close[-1500:]
#欠損データの削除
compare_df.dropna(inplace=True)
#終値の日次変化を計算
rets = np.log(compare_df / compare_df.shift(1))
rets.dropna(inplace=True)
#回帰直線のデータを作成
reg = np.polyfit(rets['BTC'], rets['ETH'], deg=1)
#散布図プロットのグラフを作成、保存
ax = rets.plot(kind='scatter', x='BTC', y='ETH', figsize=(20,10), fontsize=18)
ax.plot(rets['BTC'], np.polyval(reg, rets['BTC']), 'r', lw=2)
plt.xlabel('BTC price change', fontsize=18)
plt.ylabel('ETH price change', fontsize=18)
plt.savefig("btceth_scatter.png")
#相関係数の計算
rets.corr()
作成したグラフがこちら。

きれいな相関関係が見られますね。
相関係数を調べると、0.76と非常に高い相関関係があると分かります。

ビットコインとイーサリアムを分散投資として考えると
相関が高すぎて、向いていません。
株式や金など、他の金融商品と組み合わせると良いと思います。
では、ビットコインとイーサリアムはどちらがより割安なのか?
移動平均を使ってトレンドを調べます。
ビットコインとイーサリアムはどちらが割安?移動平均でトレンドを調べよう

ビットコインの価格をイーサリアムの価格で割った指数について、トレンドを調べます。
期間は1500日で、トレンドは短期(50日移動平均)と長期(200日移動平均)を使って調べます。
プログラムのコードはこちらです。
#単純移動平均を計算
ratio_df['SMA1'] = ratio_df['Close'].rolling(window=50).mean()
ratio_df['SMA2'] = ratio_df['Close'].rolling(window=200).mean()
#グラフ用のデータを抽出
ratio_date = ratio_df.index[-1500:]
ratio_close = ratio_df['Close'][-1500:]
ratio_sma1 = ratio_df['SMA1'][-1500:]
ratio_sma2 = ratio_df['SMA2'][-1500:]
#グラフの表示と保存
plt.figure(figsize=(20, 10))
plt.plot(ratio_date, ratio_close, lw=2, label = 'Close', color='g')
plt.plot(ratio_date, ratio_sma1, lw=2, label = 'SMA50', color='b')
plt.plot(ratio_date, ratio_sma2, lw=2, label = 'SMA200', color='r')
plt.legend(loc=1, fontsize=18)
plt.xlabel('year', fontsize=18)
plt.ylabel('ratio', fontsize=18)
plt.tick_params(labelsize=18)
plt.savefig("btceth_ratio.png")
出来上がったグラフがこちらです。

指数(緑)の上昇はビットコインがアウトパフォームしていることを意味します。
下落はイーサリアム優位です。
2018年から2020年1月までは指数が上昇しており、ビットコインが優位でした。
しかし、それ以降はイーサリアムが優位に変わり、トレンドを継続しています。
50日移動平均線が200日移動平均線を突き抜けるようであれば、今後はビットコイン優位になると思われます。
また、下落トレンドが続いてきたことで、ビットコインがイーサリアムよりも割安とも考えられます。
いまから投資するなら、ビットコインがおすすめです。
Pythonで分析した結果のまとめ

今回はビットコインとイーサリアムのどちらが割安か、Pythonで分析しました。
いまはビットコインが割安だと思うので、おすすめです。
Pythonでもっと分析したいなら、こちらの本がおすすめです。
実例付き、チャート付きで、非常にわかりやすいので愛用しています。
ここまで読んでいただきありがとうございました。^^