ポートフォリオリターンの計算
ポートフォリオを構築してバックテストするには、複数資産のリターンを1つのオブジェクトで扱えることが重要です。
この演習では、すでに変数 StockReturns として用意されている pandas の DataFrame オブジェクトを使い、複数資産のリターンを保持し、モデルポートフォリオのリターンを計算します。
モデルポートフォリオは、2017年1月直前時点の世界有数の企業に対して、あらかじめ設定した以下のウェイトで構築されています。
| Company Name | Ticker | Portfolio Weight |
|---|---|---|
| Apple | AAPL | 12% |
| Microsoft | MSFT | 15% |
| Exxon Mobil | XOM | 8% |
| Johnson & Johnson | JNJ | 5% |
| JP Morgan | JPM | 9% |
| Amazon | AMZN | 10% |
| General Electric | GE | 11% |
| FB | 14% | |
| AT&T | T | 16% |
なお、ほとんどの場合、ポートフォリオのウェイトは合計で100%になるようにします。
この演習はコースの一部です
Pythonで学ぶポートフォリオ・リスク管理入門
演習の手順
- 上の表に従って、モデルの
portfolio_weightsを表す numpy 配列の値を完成させます。 .mul()メソッドを使って、StockReturnsの各行にportfolio_weightsを掛け、加重後の株式リターンを計算します。- 次に、
WeightedReturnsオブジェクトに対して行方向に.sum()メソッドを使い、ポートフォリオリターンを算出します。 - 最後に、時間の経過に伴う累積リターンのプロットを確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Finish defining the portfolio weights as a numpy array
portfolio_weights = np.array([0.12, 0.15, 0.08, 0.05, 0.09, 0.10, 0.11, ____, ____])
# Calculate the weighted stock returns
WeightedReturns = StockReturns.____(portfolio_weights, axis=____)
# Calculate the portfolio returns
StockReturns['Portfolio'] = WeightedReturns.____(axis=____)
# Plot the cumulative portfolio returns over time
CumulativeReturns = ((1+StockReturns["Portfolio"]).cumprod()-1)
CumulativeReturns.plot()
plt.show()