TradingViewを使ってポートフォリオ運用(複数銘柄運用・配当込み) 日本株 2019年末に約1000万円投資していたらどうなった?【コピペで動く!】Google ColabのPythonで自分で調べてみよう!

スポンサーリンク
投資

高機能チャート表示WebサービスのTradingViewを用いての日本株のポートフォリオ運用について紹介します。TradingViewでは複数銘柄を合成した株価チャートを表示できことをご存知ですか?この機能を使うと自分のポートフォリオや気になるポートフォリオの過去推移など、簡易的に確認することができます。また、配当分のデータも表示・検討することで高(好)配当銘柄に投資したいという方にとっても役に立つ記事なると思います。単元100株への修正や、下落時の買い増し等、複雑になる部分は割愛させていただいています。

もともと、TradingViewを使ってポートフォリオ運用(複数銘柄運用) 米国株 2019/10/01に10万ドル(約1000万円)投資していたらどうなった?TradingViewのミニチャートウィジェットで簡単確認!という記事を以前書いていましたが、それの日本株向けの記事になります。

2019/10/01から2023/02/17まで等金額投資を行っていた場合の配当込みでの結果を確認できるWebアプリを作成したので、紹介しておきます。

Plot!ボタンを押すとチャート表示されます。期間は初期値では2019/10/01ですが、それ以降2023/02/17以前の任意の日付からとうがく投資をスタートした場合のシミュレーションができます。

Your browser does not support iframes.

記事で紹介している9銘柄以外でも使えますので、興味ある方はいろいろ使用してみてください。

2019/10/01で9銘柄合計で1000万円を均等金額を投資したとすると以下のようになります。

(TradingViewのアカウントを持っている方は見れると思います。埋め込みチャートはTradingViewの機能制限のために表示できません。)

Live stock, index, futures, Forex and Bitcoin charts on TradingView
Interactive financial charts for analysis and generating trading ideas on TradingView!

目標とすること

・Pythonで日本株のデータ、特に配当込みのデータを取得します。

・2020年1月年初の段階でほぼ同額のポートフォリオを構築したと仮定し、2020年3月のコロナ下落時にどのくらいのドローダウンが発生したのかを確認します。

・狼狽売りなどを行わない、下値で買い増しを行わなかったと仮定した場合の現状でのべた持ちした時の資産額などを表示します。

使用するツールや対象とする銘柄群

以下のようなツイートを拝見しました。

日本企業の時価総額上位であるだけでなく、配当利回り上位、企業成長の見込める銘柄群という認識かと思いましたので、上記9銘柄でのポートフォリオを考えたいと思います。

NTT:9432

KDDI:9433

三菱商事:8058

三井物産:8031

伊藤忠:8001

MUFG:8306

SMBC:8316

東京海上:8766

オリックス:8591

各銘柄とその証券コードは以上のようになります。

準備

使用するツールはGoogle Colaboratoryのpythonを使いますので、無料で、簡単に行うことができます。Google Colaboratoryについては以前書いた記事をご参照いただければと思います。

実際のコードとやっていること

今回使ったコードはGoogle Colabのファイルとして以下にシェアしてあります。

Open In Colab

実際のコード

!pip install yfinance

配当込みデータを読み込むためのPythonパッケージをまずはインストールします。

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

import pandas as pd
pd.options.display.float_format = '{:.2f}'.format

start = datetime.date(2020,1,1)
end = datetime.date.today()

Tokyo=["9432.T","9433.T","8058.T","8031.T","8001.T","8306.T","8316.T","8766.T","8591.T",]
codelist =Tokyo 

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

上記9銘柄の2020年1月1日以降の配当込みデータを読み込みます。

YahooのAPIを利用してデータを取得しますので、証券コードの後に「.T」という認識コードを入れることで、日本株のデータ取得ができます。

配当分のデータを取得したいので、[“Adj Close”]という配当調整済みのデータを取得します。

データチェックとして、8001:伊藤忠の価格を調べてみます。

2022/08/12の引け値は3815であっているようです。

2020/01/06は株価自体は右上に表示されている2516だったようですが、配当分の修正を行う必要があります。

TradingViewでは右下の「adj」という部分をクリックすると配当分を考慮した価格チャートに切り替わります。配当分を考慮すると2020/01/06の引け値は2333であると右上に出ています。

先ほどのPythonで取得したデータも2332.79となっていますので問題はないという事で以下話を進めていきます。

2020/01/06時点での各銘柄約110万円相当買ったと仮定した場合の概略の枚数や、買い付け時の価格などを計算し、それらをべた持ちした場合の推移を表示します。

display(round(1100000/data2_yf.head(1)))
display(round(1100000/data2_yf.head(1)).values*data2_yf.head(1))
display(round(1100000/data2_yf.head(1)).values*data2_yf.tail(1))

display((round(1100000/data2_yf.head(1)).values*data2_yf).sum(axis=1))

今回の例では単元100株などの補正は行っていませんので、ご注意ください。

2020/01/06に9900095.63(990万円)で買い付けたものがコロナ後の上昇もあり、現在は14600368.05(1400万円)相当になっているようです。

また、ポートフォリオの価格の推移と、最大値、最小値などの情報は以下のようになります。

(round(1100000/data2_yf.head(1)).values*data2_yf).sum(axis=1).plot()
plt.grid()
plt.show()
display((round(1100000/data2_yf.head(1)).values*data2_yf).sum(axis=1).describe())

約1000万円だったものが2020/03月のコロナ下落で約750万円までさがり、そののちの上昇で現在1400万円というのが資産推移のグラフで確認できます。

PythonでのデータをTradingViewで利用できるように以下、TradingViewの入力コードを作成します。

display(data2_yf.columns)
Tradingview_list=[s.replace('.T', '') for s in data2_yf]
display(Tradingview_list)

Tradingview_list=list(map(lambda s: 'TSE:' + s, Tradingview_list))
display(Tradingview_list)
display(type(Tradingview_list))

unit=(round(1100000/data2_yf.head(1)).astype(int).astype(str)).values.tolist()
display(unit[0])
display(type(unit))

input1=[a +"*"+ b for a, b in zip(unit[0], Tradingview_list)] 
display(input1)

input2='+'.join(map(str, input1))
display(input2)

YahooのAPIで使用した証券コードをTradingView用に「TSE:」という形での証券コードに修正します。

証券コードのリストと、2020/01/06での各銘柄の買い付け枚数のリストを組み合わせることでTradingView用の入力値を作成します。

input1=[a +”*”+ b for a, b in zip(unit[0], Tradingview_list)] 

input2=’+’.join(map(str, input1))

あたりのコードは実務系のデータの前処理をいろいろされる方は、「ああ、これ便利、、」というコーディングではないでしょうか。

今回は

472*TSE:8001+622*TSE:8031+426*TSE:8058+2121*TSE:8306+318*TSE:8316+685*TSE:8591+198*TSE:8766+438*TSE:9432+371*TSE:9433

という入力値を得ましたので、これを使ってTradingViewに表示させていきます。

TradingViewによる複数銘柄パフォーマンス表示

左上のシンボルコード入力枠をクリックするとシンボル検索のウィンドが空きますので、その枠内に今回の入力コードを入力(コピペ)します。

枠内に入植した状態

現在の値は14600368となっていますが、これはPythonで計算した時と同じ値になっていることが分かると思います。

2020/01/06のデータですが、右下の調整(日本語表示の場合)を押してない場合は値がずれています。

調整を押した場合の値と形状は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】
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
米国債のゼロクーポン債STRIPSについてのメモ
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
【違いをみつけろ!】StockChartsの使い方を紹介します!12枚のミニチャート表示や、 米国株配当分考慮パフォーマンスや配当・逆イールド・相対比較が可能です!
ボラティリティ クラスタリング(Volatility Clustering)について:Google ColabのPythonでの相場環境分析
IB証券(インタラクティブ・ブローカーズ証券)のAPIを利用してVIXオプションの各限月の特定の権利行使価格で、CALL,PUTで日足ベース引け値のヒストリカルデータ出力するJupyter notebookファイルの提供やメンテナンス・補修サービス、Windows10での環境構築をさせていただきました。

コメント

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