どうも、月見(@Suzuka14144156)です。
今回は、仮想通貨の銘柄毎のボラティリティをバイオリン図で比較する方法を解説します。
- 仮想通貨のボラティリティを算出する方法が分からない
- ボラティリティとは?
- バイオリン図って何?
この記事のゴール
- こんなチャートをPythonで表示できるようにします!
縦軸は、対数収益率です。
このグラフからDOGEコインの収益率のばらつきが大きいことがわかります。
- このことから、DOGEが最もリスクが高い資産であることが分かります!
バイオリン図とは?
バイオリン図とは、ある特性値の分布を示すグラフです。
縦軸は、対数収益率を示します。
対数利益率が大きいほど(日ごとの)リターンが大きいことを指します。
- 横の幅が大きい部分程、発生する確率が高い値となります。
つまり、ほとんどの仮想通貨は一日あたりの対数収益率は0付近になるということが分かります。
ボラティリティとは?
- 価格の変動性のことです
ボラティリティが高い = 価格が変動しやすい
ボラティリティが低い = 価格が変動しにくい
- 同じ意味の単語として「リスク」があります
「ボラティリティ=リスク」という認識で正しいです
plotlyとは?
インタラクティブなグラフを表示するのに使うライブラリがplotlyです。
こんな風に綺麗なグラフが、描けます。
環境の構築
今回は、Jupyte Labを用います。
Juptrer Labのインストール
インストール方法は以下2種類ある。
- どちらでもOKです
ただ、Anacondaをインストールする方が時間がかかるのでお急ぎの方は、「JupyterLabを直接インストール」がオススメ。
Anacondaをインストール
以下の記事を参考にしてください。
Python Anacondaとは?|インストール〜Jupyter Notebookの立ち上げ
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でうまく表示されない場合は、以下の記事を参考にしてみてください。
【Python】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
ローソク足の表示に関しては、以下の記事で詳細に解説しているので参考にしてみてください。
【Python】仮想通貨のチャートを取得し、ローソク足を表示する方法
仮想通貨の対数収益率を計算
次に対数収益率を計算します。
計算方法の詳細は、以下の記事を参照ください。
【Python|plotly】仮想通貨の対数利益率、対数収益率の計算方法
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に合わせると以下に示すように詳細なデータが表示されます。
対数収益率は、バイオリン図で可視化するだけでなく、銘柄ごとのリスクとリターンを算出し、プロットする方法もよく使います。
ぜひ参考にしてみてください。
【Python】仮想通貨のリターンとリスクの計算方法。投資すべき銘柄を分析。
バイオリン図の考察例
具体的な分析例を示すことで、どういう場面で使えるか感じれるかと思います。
最もリスキーな銘柄
例えば、このグラフからもっともリスキーな銘柄が分かります。
それは、DOGEです。
なぜなら、一番振れ幅が広いためです。
このような銘柄には投資すべきではないです。
最も損益額の最小値が小さい銘柄
例えば、このグラフから最も損益額の最小値が小さい銘柄が分かります。
それは、ビットコインです。
なので、大幅な損を被りたくないと考えている方は、ビットコインに投資すべきということが分かります。
そのほかにもいろいろなことがこのデータから読み取れる(例:バイオリンの形状)のですが、割愛します。
基本的な使い方はこのような感じです。
Pythonでファイナンスのデータ分析の勉強方法
本
私は、以下の本で勉強しました。
かなり詳しく書かれており、とてもオススメの本です。
Udemy
Udemyはオンライン口座です。
一度購入すれば、ずっと閲覧できるのでオススメです。
私の記事
私のブログでも解説していますので参考にしてみてください。
【Python x 仮想通貨】分析方法のまとめ(テクニカル分析など)
まとめ
今回は、仮想通貨の銘柄毎のボラティリティをバイオリン図で比較する方法を解説しました。
私のブログではほかにも、仮想通貨の自動トレードの方法などを解説しているのでぜひ参考にしてみてください。
無料で閲覧可能で、コードをコピペして動かすことができます。
【Python|cctx】ビットコイン自動取引ツールの作成方法まとめ
コメント