20190515逆順

Python 20行で資産運用モデル シリーズ 直近のドローダウンは?「Python 株価 ポートフォリオ」

Pythonを使った20行で資産運用モデル シリーズで、今回の記事では、直近のドローダウンを簡単に調べる方法をご紹介します。

この記事でできること

この記事でできることは以下の通りです。

・現在の値段が、数日前と比較して、相対的にどのような位置になるかを表示します。
・グラフのX軸を逆順に表示することによりこのことを可能にします。


なんの役に立つのか?

・下落している場合はどのくらいドローダウンしているか簡単に分かります。
・複数銘柄表示すると、銘柄間での相対的な強さ、弱さが分かります。

通常、株価チャートは右に一番新しい日付のデータが入ります。そのため、累積値においては、複数の銘柄を表示した場合、どの銘柄がここ数日の動きが一番激しかったか見にくいのです。

今回は
・S&P500指数 (SP500)
・日経225 (N225)
・半導体SOX指数 (SOX)
を表示していますが、2019年5月からの下落で、その銘柄が一番落ちたのか、過去の上昇分が足されているので、わかりにくくなっています。

これを簡単・一撃で分かりやすく表示したいと思います。


Google ColaboratoryのPythonでの利用方法

以下の記事を読んで、Google Colaboratoryを利用できるようにしておいてください。こちらのnoteを見ると、Pythonの環境構築の方法が分かります。

忘れた方もいらっしゃると思いますので、今回の銘柄も含めて、再度載せておきます。

!pip install fix_yahoo_finance

import datetime
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt

start = datetime.date(2018,1,1)
end = datetime.date.today()
codelist = ["^GSPC","^N225","^SOX"]

data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
display(data2.head().append(data2.tail()))

df_all=(1+data2.pct_change()).cumprod()
display(df_all.head().append(df_all.tail()))

df_all.plot(figsize=(8,6),fontsize=18)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)  

plt.grid(True)
plt.show()

解説ををすると、

!pip install fix_yahoo_finance

で、米国Yahooからデータを読み込むモジュールを使えるようにします。

今回読み込むデータは三つで、

codelist = ["^GSPC","^N225","^SOX"]

で指定した、
・S&P500指数 (^GSPC) 
・日経225 (^N225)
・半導体SOX指数 (^SOX)
になります。

問題なく読み込むことができれば以下のようなチャートが表示されます。

ここまでが、前回の内容の復習です。

今回はこのx軸を逆順にすることで、現在の価格が過去からみてどのような位置になるか表示します。言葉で説明するよりコードとグラフを見てもらうほうが早いと思いますので、以下に示します。

df_x=data2.pct_change()
df_x.columns=["SP500","N225","SOX"]
codelist=df_x.columns

df_x[codelist].cumsum().plot(figsize=(8,5),fontsize=18)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)        
plt.axhline(y=0, linewidth=4, color='r')
plt.grid()

df_x[codelist].sort_index(ascending=False).cumsum().plot(figsize=(8,5),fontsize=18)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)        
plt.axhline(y=0, linewidth=4, color='r')
plt.grid()
plt.gca().invert_xaxis()

上段が通常のチャートで、下段がX軸を逆順にしたものです。
上段では、2019年5月からの下落において、三つの銘柄のうち、どれが一番下落が大きかったのは、直感的にはわかりにくいです。

しかし、下段では、x軸が逆順になっているので、2019年5月からの下落が青の線のS&P500が一番小さい(-3%程度)というのが見て取れると思います。日経平均や半導体指数は(-6%程度)となっています。

同時に2018年末から見るとSOXが一番上昇しているのは半導体指数の(+30%近辺)です。次がS&P500の(+15%近辺)、日経平均の(+6%近辺)が続きます。


逆順にすることで、過去のある時点からの上昇率、下落率が分かりますので、使ってみてください。


役に立ったと思いましたらこの記事の「いいね」をよろしくお願いします。

Pythonで資産運用モデルを作成する記事をまとめました。
Pythonを用いて、株価取得、チャート表示、株価分析、可視化、株価予測、株価の機械学習、ポートフォリオの構築、ポートフォリオの最適化、スクレイピングなどを行う記事を集めました。
もし興味を持っていただけるなら読んでみてください。










サポートしていただき大変ありがとうございます。 励みになります。