CryptocurrencyPython

【Python】仮想通貨の銘柄毎のボラティリティをバイオリン図で比較する方法

Cryptocurrency

どうも、月見(@Suzuka14144156)です。

今回は、仮想通貨の銘柄毎のボラティリティをバイオリン図で比較する方法を解説します。

解決するお悩み
  • 仮想通貨のボラティリティを算出する方法が分からない
  • ボラティリティとは?
  • バイオリン図って何?

この記事のゴール

  • こんなチャートをPythonで表示できるようにします!

縦軸は、対数収益率です。

このグラフからDOGEコインの収益率のばらつきが大きいことがわかります。

月見
月見
  • このことから、DOGEが最もリスクが高い資産であることが分かります!

バイオリン図とは?

バイオリン図とは、ある特性値の分布を示すグラフです。

縦軸は、対数収益率を示します。

対数利益率が大きいほど(日ごとの)リターンが大きいことを指します。

月見
月見
  • 横の幅が大きい部分程、発生する確率が高い値となります。

つまり、ほとんどの仮想通貨は一日あたりの対数収益率は0付近になるということが分かります。

ボラティリティとは?

  • 価格の変動性のことです

ボラティリティが高い = 価格が変動しやすい

ボラティリティが低い = 価格が変動しにくい

月見
月見
  • 同じ意味の単語として「リスク」があります

「ボラティリティ=リスク」という認識で正しいです

plotlyとは?

インタラクティブなグラフを表示するのに使うライブラリがplotlyです。

こんな風に綺麗なグラフが、描けます。

環境の構築

今回は、Jupyte Labを用います。

Juptrer Labのインストール

インストール方法は以下2種類ある。

  1. Anacondaをインストール
  2. JupyterLabを直接インストール
月見
月見
  • どちらでもOKです

ただ、Anacondaをインストールする方が時間がかかるのでお急ぎの方は、「JupyterLabを直接インストール」がオススメ。

Anacondaをインストール

以下の記事を参考にしてください。

JupyterLabを直接インストール

コマンドプロンプトから、以下のコードを入力ください。

pip install jupyterlab

JupyterLabの起動

コマンドプロンプトから、以下のコードを入力ください。

jupyter lab

以下赤枠のアイコンをクリック。

これで起動します。

ライブラリのインストール

主に使用するライブラリ
  • pandas:データ処理
  • numpy:配列のデータ処理
  • plotly:グラフの表示
  • pandas_data:仮想通貨のデータ取得
  • yfinance:Yahoo Financeからデータを取得

numpyのインストール

コマンドプロンプトから、以下のコードを入力ください。

pip install numpy

pandasのインストール

コマンドプロンプトから、以下のコードを入力ください。

pip install pandas

pandas_dataのインストール

コマンドプロンプトから、以下のコードを入力ください。

pip install pandas_datareader

yfinanceのインストール

コマンドプロンプトから、以下のコードを入力ください。

pip install yfinance

plotlyのインストール

コマンドプロンプトから、以下のコードを入力ください。

 conda install -c plotly plotly

jupyter labでうまく表示されない場合は、以下の記事を参考にしてみてください。

仮想通貨のチャートを取得

import plotly.graph_objects as go
import talib
import pandas as pd  
from pandas_datareader import data as pdr 
import datetime
import yfinance as yf
import numpy as np

#BTCのチャートを取得
tickers = ['BTC-USD','ETH-USD','BNB-USD','XRP-USD','DOGE-USD']

#取得開始日を入力
start = "2022-01-01"

#取得終了日を入力
end = datetime.date.today()

#Yahoofinanceから取得するように設定
yf.pdr_override()

#データの取得を実行
crypto_data = pdr.get_data_yahoo(tickers, start, end)

以下を実行すると取得したデータが表示されます。

crypto_data

ローソク足の表示に関しては、以下の記事で詳細に解説しているので参考にしてみてください。

仮想通貨の対数収益率を計算

次に対数収益率を計算します。

計算方法の詳細は、以下の記事を参照ください。

log_return = np.log(crypto_data['Adj Close'] / crypto_data['Adj Close'].shift(1))
log_return

仮想通貨の対数収益率をバイオリン図で可視化する

# データの準備
df = log_return

# グラフの描画
fig = go.Figure()
fig.update_layout(
    title="log_return(2022)",
    autosize=False,
    width=1500,
    height=800,
    margin=dict(
        l=50,
        r=50,
        b=100,
        t=100,
        pad=0,
    ),
    font=dict(
        size=20,
    )
)

for ticker in tickers:
    
    fig.add_trace(
        go.Violin(y= df[ticker],
                  box_visible=True,
                  name = ticker,
                  opacity=0.9,
                 )
    )
fig.show()

このコードを実行すると以下になります。

カーソルを例えばBTCに合わせると以下に示すように詳細なデータが表示されます。

対数収益率は、バイオリン図で可視化するだけでなく、銘柄ごとのリスクとリターンを算出し、プロットする方法もよく使います。

ぜひ参考にしてみてください。

バイオリン図の考察例

具体的な分析例を示すことで、どういう場面で使えるか感じれるかと思います。

最もリスキーな銘柄

例えば、このグラフからもっともリスキーな銘柄が分かります。

それは、DOGEです。

なぜなら、一番振れ幅が広いためです。

このような銘柄には投資すべきではないです。

最も損益額の最小値が小さい銘柄

例えば、このグラフから最も損益額の最小値が小さい銘柄が分かります。

それは、ビットコインです。

なので、大幅な損を被りたくないと考えている方は、ビットコインに投資すべきということが分かります。

そのほかにもいろいろなことがこのデータから読み取れる(例:バイオリンの形状)のですが、割愛します。

基本的な使い方はこのような感じです。

Pythonでファイナンスのデータ分析の勉強方法

私は、以下の本で勉強しました。

かなり詳しく書かれており、とてもオススメの本です。

Udemy

Udemyはオンライン口座です。

一度購入すれば、ずっと閲覧できるのでオススメです。

【世界で8万人が受講:Python for Finance】Pythonを使って学ぶ現代ファイナンス理論と実践
ポートフォリオ理論、コーポレートファイナンス、資本資産評価モデル(CAPM)、デリバティブの値決め、モンテカルロシミュレーションといった内容を中心に、Pwcなどで活躍した講師が理論と実践に基づき解説します。

私の記事

私のブログでも解説していますので参考にしてみてください。

まとめ

今回は、仮想通貨の銘柄毎のボラティリティをバイオリン図で比較する方法を解説しました。

私のブログではほかにも、仮想通貨の自動トレードの方法などを解説しているのでぜひ参考にしてみてください。

無料で閲覧可能で、コードをコピペして動かすことができます。

コメント

タイトルとURLをコピーしました