米国株分析に興味があるけれども何から始めていいかわからない人向けに、株価データの取得や期間を分割しての動向調査などできるようにします。実際のPythonコードを提示して、簡単・無料で分析できる環境をご紹介します。
2022/08/01 Webアプリ化しました。
常にS&P500のチャートは表示され、残りの3つの表示したい銘柄を選択してください。
表示期間は2020/3/24以降の全期間、2022年以降、2022/6/16以降の3期間となります。
横幅広めの画面で表示することをお勧めします。
元記事は 2021/05/03 noteに書いた記事になります。
以前のコードでは動かくなっているようですので、こちらのサイトで修正したものをリライトして、載せていきます。
2022/07/14時点で以下のコードはエラーなく動いていることを確認しています。
以前、以下のような記事を書かせていただきました。
米国株による資産運用に注目が集まるようになってきたこともあり、
・再現性のある、データに基づいた意思決定をしたい
・無料での株価データ取得して分析を行いたい
・難しいことはしたくないけど、コピペぐらいならできる
という方向けに、20行程度で簡単に米国株のチャート表示などできるプログラムコードのある記事でした。
プログラムや分析に興味を持っていただければということで、簡単であることを優先した記事だったのですが、その記事に新たな独自にアレンジを加えられた優良な記事をお見かけしました。
Twitterでも拝見させていただいてますが、知的好奇心を刺激されるような記事を数多く書かれたり、着目点の独自性など非常に参考になると思っています。
そんな記事にインスパイアされる形で、”期間ごとの主役”が何であるか・セクターローテーションがどうなっているかを見やすくするチャートの表記プログラムをご紹介したいと思います。
目次
- 目標とすること
- 使用するツール
- 実際のコードとやっていること
- 何が分かるのか
目標とすること
目標とするのはプログラム言語Pythonを使って米国株の指数ETFデータデータを取得し、グラフ・チャートを表示し、分析することです。初心者の方にも簡単にできるように使い方、コードを書いてありますので、入門編としても最適だと思います。
使用するツール
使用するツールはGoogle Colaboratoryのpythonを使いますので、無料で、簡単に行うことができます。Google Colaboratoryについては以前書いた記事をご参照いただければと思います。また、今回は上記「Hippen(米国株)さんの記事」に追記するような形でのチャート表示を想定しています。
実際のコードとやっていること
Google Colabの共有ファイルは上記になります。Googleのアカウントがあればログインして、そのままShift+Enterで再現できると思います。
コードは以下の通りです。「Hippen(米国株)さんの記事」のコードのあとに追記いただく形になります。
!pip install yfinance --upgrade --no-cache-dir
import datetime
import yfinance as yf
import matplotlib.pyplot as plt
%matplotlib inline
start_D = datetime.date(2020,3,23)#コロナ底
end_D = datetime.date.today()
codelist = ["VUG","VTV","VBK","VBR"]
data2 = yf.download(codelist, start=start_D, end=end_D)["Adj Close"]
df_all=(1+data2.pct_change()).cumprod()
df_all.rename(columns={'VBR':'Small Value','VTV':'Large Value','VBK':'Small Growth','VUG':'Large Growth'},inplace=True)
df_all.plot(figsize=(16,9),fontsize=30,linewidth=5,alpha=0.5)
plt.legend(fontsize=18)
x1 = "2020-10-29" #転換点1
plt.axvline(x1,color='gray',linewidth=2 )
x1 = "2021-02-13" #転換点2
plt.axvline(x1,color='gray',linewidth=2 )
x1 = "2021-03-29" #転換点3
plt.axvline(x1,color='gray',linewidth=2 )
plt.title("Growth vs Value , Small vs Large",color='gray', fontsize=50)
plt.show()
###上記が「Hippen(米国株)さんの記事」になります。
def SidePlot3(df_all,zone1_start,zone2_start):
import matplotlib.dates as mdates
import numpy as np
dateformat=mdates.DateFormatter('%y/%m/%d')
plt.rcParams["font.size"] = 18
fig, axs = plt.subplots(1,3, figsize=(20, 8),sharey=False)
for code in df_all.columns :
axs[0].plot(df_all[code].index,(1+df_all[code]).cumprod(),linewidth = 3.0)
axs[0].axvline(x=zone1_start,linewidth=2,color="b")
axs[0].axvline(x=zone2_start,linewidth=2,color="r")
axs[0].axhline(y=1,linewidth=2,color="r")
axs[0].grid(True)
axs[0].xaxis.set_major_formatter(dateformat)
for code in df_all.columns :
axs[1].plot(df_all[code][zone1_start:].index,(1+df_all[code][zone1_start:]).cumprod(),linewidth = 3.0,label=code)
axs[1].axhline(y=1,linewidth=2,color="r")
axs[1].grid(True)
axs[1].axvline(x=zone2_start,linewidth=2,color="r")
axs[1].xaxis.set_major_formatter(dateformat)
for code in df_all.columns :
axs[2].plot(df_all[code][zone2_start:].index,(1+df_all[code][zone2_start:]).cumprod(),linewidth = 3.0,label=code)
axs[2].legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)
axs[2].axhline(y=1,linewidth=2,color="r")
axs[2].grid(True)
axs[2].xaxis.set_major_formatter(dateformat)
fig.autofmt_xdate()
###ここまでが3枚のチャートを表示する関数です。
import numpy as np
t1 = np.datetime64("2020-10-29")
t2 = np.datetime64("2021-02-13")
df_pct=data2.pct_change()
df_pct.rename(columns={'VBR':'Small Value','VTV':'Large Value','VBK':'Small Growth','VUG':'Large Growth'},inplace=True)
SidePlot3(df_pct,t1,t2)
defの部分で横に3つのチャートを並べる関数を定義します。
そののち、区間を区切る転換点となる日付を指定し、
そういったパラメータを使ってチャートを表示させていきます。
実際に実行させると以下のような3枚の区間区切りのチャートが表示されると思います。
defの部分で横に3つのチャートを並べる関数を定義します。
そののち、区間を区切る転換点となる日付を指定し、
そういったパラメータを使ってチャートを表示させていきます。
実際に実行させると以下のような3枚の区間区切りのチャートが表示されると思います。
2022/07/14時点での年初来で区切ったチャートは以下の通りです。
何が分かるのか
「Hippen(米国株)さんの記事」でも
・グロース優位な時期
・スモール優位な時期
・バリュー優位な時期
など記述があったと思います。その通りだと思うのですが、
次に何が来るのか?という予測は正直難しいかなと思っています。
ただ、「予測」はできなくても「観測」や「投資主体の懐の痛み具合」などから選択の幅を狭めることは可能かもしれません。
そういったものに興味ある場合は、また別の研究などしてみるとよいかもしれませんね。
この記事ではチャートの表記について、記しました。
ご参考になれば幸いです。
---
投資関係・Python関係の記事をご紹介します。
コメント