はじめに
今回の記事では、ポートフォリオの利益率算出方法について解説したいと思います。
ポートフォリオとは、金融商品の組み合わせのことです。この組み合わせの結果のトータルのリターンの算出方法をpythonで解説したいと思います。
この記事のゴール
- ポートフォリオの利益率を算出することができるようになること
ポートフォリオの利益率算出方法
開発環境
今回は、Jupyter Notebookで計算をしていきます。Jupyter Notebookのインストール方法等がわからない方は、こちらを参考にしてみてください。Anacondaをインストールすることで、Jupyter Notebookも合わせてインストールすることが可能です。
コード
ライブラリのインポート
pandas_datareaderだけは、Anacondaには含まれていないので、こちらは、別途インストールしてください。
インストール方法は、以下のコマンドを入力することで可能です。
- Mac:ターミナル
- Windows:コマンドプロンプト
pip install pandas_datareader
以下のライブラリをインポートします。
- numpy
- pandas
- pandas_datareader
- matplotlib
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
株価の取得
今回は、以下4社の株価を取得し、ポートフォリオを組んだ結果得られる年間のリターンを算出していきたいと思います。
- P&G
- Apple
- Microsoft
- General Electric
tickers = ['PG', 'AAPL', 'MSFT', 'GE']
mydata = pd.DataFrame()
for t in tickers:
mydata[t] = wb.DataReader(t, data_source='yahoo', start='1995-1-1')['Adj Close']
投資利益率の算出
投資利益率の算出方法の詳細は、以下の記事を参考にしてください。
returns = (mydata / mydata.shift(1)) - 1
returns.head()
対数利益率の場合は、以下のコードで算出可能です。詳細は、以下の記事を参考ください。
returns = np.log(mydata / mydata.shift(1))
returns.head()
年間リターンの算出
annual_returns = returns.mean() * 250
ポートフォリオのウエイト設定と算出
仮に銘柄を25%ずつ保有した場合のリターンを計算してみましょう。
weights = np.array([0.25, 0.25, 0.25, 0.25])
pfolio_1 = str(round(np.dot(annual_returns, weights), 5) * 100) + ' %'
print (pfolio_1)
np.dotはドット積を算出します。ドット積とは、以下です。
つまり、各年間リターンと保有ウエイトをかけ、総和を取ることでトータルリターンを算出しています。
2つのベクトル A = [A1, A2, …, An] と B = [B1, B2, …, Bn] のドット積は下記のように定義されます。
また、以下の割合で保有した場合のリターンを計算して、比較してみましょう。
- P&G:0.4
- Apple:0.4
- Microsoft:0.15
- General Electric:0.05
weights_2 = np.array([0.4, 0.4, 0.15, 0.05])
pfolio_2 = str(round(np.dot(annual_returns, weights_2), 5) * 100) + ' %'
print (pfolio_1)
print (pfolio_2)
計算結果は、以下です。
- pfolio_1: 19.459 %
- pfolio_2: 22.388 %
ポートフォリオ2の方が、トータルリターンが大きいことがわかります。
ポートフォリオ2の方がトータルリターンが大きい理由
(mydata / mydata.iloc[0] * 100).plot(figsize = (15, 6));
plt.show()
実行結果は、以下です。
何をしているかというと、1995年1月3日(一つ目)の各銘柄の株価を1として、プロットしたものです。
このグラフから、アップルの利益率が最も高いことがわかります。
つまり、アップルの保有割合が大きい方が、トータルのリターンは大きくなるということです。
なので、ポートフォリオ2の方がリターンが大きいのです。
まとめ
今回の記事では、ポートフォリオの利益率算出方法について解説しました。
各年間リターンと保有ウエイトをかけ、総和を取ることでトータルリターンを算出することができます。
pythonでは以下のように表します。
- np.dot(annual_returns, weights)
- annual_returns:年間リターン
- weights:ポートフォリオの割合
Pythonをもっと勉強したいという方は、以下を参考にしてみてください。私が、勉強に使っている本や勉強方法などを解説しています。
ファイナンス理論に関しては、以下の記事を参照ください。
今回の記事は、以上です。
最後までお読みいただきありがとうございました。
コメント
[…] ポートフォリオの利益率算出方法 […]