始める無料で始める

ポートフォリオリターンの計算

ポートフォリオを構築してバックテストするには、複数資産のリターンを1つのオブジェクトで扱えることが重要です。

この演習では、すでに変数 StockReturns として用意されている pandasDataFrame オブジェクトを使い、複数資産のリターンを保持し、モデルポートフォリオのリターンを計算します。

モデルポートフォリオは、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%
Facebook 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()
コードを編集して実行