見出し画像

ポートフォリオのリターンを調べるのだ!の巻

年初来のパフォーマンス今のポートフォリオをX年に組んでいたら、パフォーマンスはどれくらいだったのかが見れます。(途中の売買は考慮できていません。)

1.銘柄の指定

銘柄の指定パターンは、直接入力CSVファイル入力の2つ用意しました。(CVS入力機能はコメントアウトされているので、コメントアウトを外して使用してください。)

銘柄指定パターン1

下記の様に、銘柄保有株数を記入します。(ETFでも構いません。)

selected = ["MSFT","COST","ADBE","ZTS","CPRT","MSCI","DPZ","ORLY","TTC","SHOP"]
weight = ["10","20","30","10","20","30","5","10","10","5"]

銘柄指定パターン2

CSVファイルを使用する場合は、
下記のフォーマットで「port.csv」ファイルを用意します。

1行目に「Ticker,Number」を記載し、
2行目以降に銘柄と保有枚数を記載します。

画像1

蛇足ですが、CSVファイルを作成するのが面倒な人は、下記の用なコードでファイルを作成することもできます。 

! echo Ticker,Number > port.csv

! echo AAPL,5 >> port.csv
! echo MSFT,10 >> port.csv
! echo VTI,10 >> port.csv

2.コードの実行

下記のコードを実行します。

期間銘柄、ベンチマークは好きに変更してください。
CSVファイルを使う場合は、コメントアウトを外してください。
(上場間もない銘柄を含む場合は、期間を短くする必要があります。)

import datetime
import pandas as pd
import pandas_datareader.data as web
import matplotlib.pyplot as plt
from matplotlib import gridspec
%matplotlib inline
plt.style.use('seaborn-pastel')

######## 期間設定 #######
start = datetime.date(2020,8,1)
end = datetime.date.today()

######## 銘柄パターン1 ##########
selected = ["MSFT","COST","ADBE","ZTS","CPRT","MSCI","DPZ","ORLY","TTC","SHOP"]
weight = ["10","20","5","10","20","5","5","5","10","3"]

######## 銘柄パターン2 ##########
# port = pd.read_csv("port.csv")
# selected=port["Ticker"].values
# weight=port["Number"].values

######## ベンチマーク ##########
bench=["QQQ"]
###############################

data = web.DataReader(selected, 'stooq', start, end)["Close"]
data.sort_index(ascending=True,inplace=True)
data = data.reindex(columns=selected)

datab = web.DataReader(bench, 'stooq', start, end)["Close"]
datab.sort_index(ascending=True,inplace=True)
datab = datab.reindex(columns=bench)

data_weight=data
for i in range(len(weight)):
  data_weight.iloc[:,i] = data_weight.iloc[:,i] * int(weight[i])

data_change=(1+data_weight.pct_change()).cumprod()/len(weight)
data_bench=(1+datab.pct_change()).cumprod()

fig, ax1 = plt.subplots(figsize=(8, 4.5),facecolor="white")
ax1.stackplot(data_change.index,data_change.values.T)
ax1.plot(data_bench,linewidth=2,alpha=1,color="red")
ax1.tick_params(axis='x', labelrotation= 45)

print("----Bench Mark-----")
print(round(data_bench.values[-1].sum(),3))
print("----My Portfolio----")
print(round(data_change.values[-1].sum(),3))

plt.show()

print("----My Portfolio--start--")
data_weight=data_weight.sort_values(by=data_weight.index[0], axis=1, ascending=True, inplace=False)
plt.pie(data_weight.iloc[0].tolist(), autopct="%1.1f%%",labels=data_weight.columns,startangle=90)
plt.show()
print("----My Portfolio--end--")
data_weight=data_weight.sort_values(by=data_weight.index[-1], axis=1, ascending=True, inplace=False)
plt.pie(data_weight.iloc[-1].tolist(), autopct="%1.1f%%",labels=data_weight.columns,startangle=90)
plt.show()

3.実行結果

下記の様に結果が出力されます。

画像2

1行目:ベンチマークのリターン
2行目:ポートフォリオのリターン
赤線:ベンチマーク
積み上げ:ポートフォリオの推移

画像3

上段パイチャート:開始時のポートフォリオ
下段パイチャート:終了時のポートフォリオ

自分のポートフォリオの年初来のパフォーマンスってどれくらいだったのか少し気になったので、作成してみました。

何かの参考になれば幸いです。

おつかれさん「缶コーヒー1杯ぐらい、ご馳走してあげよう」という太っ腹な方がいれば、よろしくお願いします!
参考になったら「ハートボタン、フォロー、リツイート」をお願いします。
読まれる可能性があがるので、次の記事を書くやる気が出ます。

では!

ここから先は

24字

¥ 100

この記事が気に入ったらサポートをしてみませんか?