【コピペで動く!】20行で資産運用モデル作成 長期、中期、短期の3区分の期間チャートをGoogle ColabのPythonで作成 【違いをみつけろ!】

スポンサーリンク
投資

米国株分析に興味があるけれども何から始めていいかわからない人向けに、株価データの取得や期間を分割しての動向調査などできるようにします。実際のPythonコードを提示して、簡単・無料で分析できる環境をご紹介します。

2022/08/01 Webアプリ化しました。
常にS&P500のチャートは表示され、残りの3つの表示したい銘柄を選択してください。
表示期間は2020/3/24以降の全期間、2022年以降、2022/6/16以降の3期間となります。

横幅広めの画面で表示することをお勧めします。

元記事は 2021/05/03 noteに書いた記事になります。

20行で資産運用モデル作成 [期間チャート Python 米国株の株価]|TF
ーーーーーーーーーーー2021/07/27 追記ーーーーーーーーーーー Pythonの一部仕様変更などでうまく動いていなかった部分を新しいサイトでは修正しました。 今後適宜修正や改修を行おうとは思いますが、すべてを改修できるわけではないことはご承知おきください。 2021/07/27時点では動いていることは確認して...

以前のコードでは動かくなっているようですので、こちらのサイトで修正したものをリライトして、載せていきます。

2022/07/14時点で以下のコードはエラーなく動いていることを確認しています。

以前、以下のような記事を書かせていただきました。

米国株による資産運用に注目が集まるようになってきたこともあり、
・再現性のある、データに基づいた意思決定をしたい
・無料での株価データ取得して分析を行いたい
・難しいことはしたくないけど、コピペぐらいならできる
という方向けに、20行程度で簡単に米国株のチャート表示などできるプログラムコードのある記事でした。

プログラムや分析に興味を持っていただければということで、簡単であることを優先した記事だったのですが、その記事に新たな独自にアレンジを加えられた優良な記事をお見かけしました。

【Python】3ステップで米国株チャート|Hippen(米国株,python)
記事は無料で読めます。 Pythonを使えば、下記の3ステップで下のチャートが取得できます。  1.Googleコラボ(リンク)にアクセス。  2.コードコピペ。  3.実行ボタンクリック。 実質、5分もかからないんじゃないかな? では、やっていきましょう。 1.Googleコラボにアクセス。 Goog...

Twitterでも拝見させていただいてますが、知的好奇心を刺激されるような記事を数多く書かれたり、着目点の独自性など非常に参考になると思っています。

そんな記事にインスパイアされる形で、”期間ごとの主役”が何であるか・セクターローテーションがどうなっているかを見やすくするチャートの表記プログラムをご紹介したいと思います。

目次

  1. 目標とすること
  2. 使用するツール
  3. 実際のコードとやっていること
  4. 何が分かるのか

目標とすること

目標とするのはプログラム言語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時点での年初来で区切ったチャートは以下の通りです。

一番右のチャートは2022年年初来のパフォーマンス

何が分かるのか

「Hippen(米国株)さんの記事」でも
・グロース優位な時期
・スモール優位な時期
・バリュー優位な時期
など記述があったと思います。その通りだと思うのですが、
次に何が来るのか?という予測は正直難しいかなと思っています。

ただ、「予測」はできなくても「観測」や「投資主体の懐の痛み具合」などから選択の幅を狭めることは可能かもしれません。

そういったものに興味ある場合は、また別の研究などしてみるとよいかもしれませんね。

この記事ではチャートの表記について、記しました。
ご参考になれば幸いです。

---

投資関係・Python関係の記事をご紹介します。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
米国債のゼロクーポン債STRIPSについてのメモ
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
Google ColabでYouTube動画を開始・終了の時間を指定してPythonでダウンロード(音声・動画両方対応)【コピペで動く!】

コメント