始める無料で始める

ドライバー2:ポートフォリオ比率の選択

投資家は、ポートフォリオのシャープレシオで測られるリスク調整後リターンが最大になるように、比率の選択を最適化できます。

ポートフォリオ全体を2資産のみに投資する特別な場合、決めるべき比率は1つだけです。2つ目の資産の比率は、1つ目の資産の比率を1から引いた値になるからです。

ここでは、米国株式と米国債券に投資するポートフォリオでこれを行います。多数の候補となる比率を総当たりで試し、ポートフォリオのシャープレシオ(無リスク金利を0と仮定)を最大にする比率を採用するというブルートフォースのアプローチを用います。

この演習はコースの一部です

Rで学ぶポートフォリオ分析入門

コースを見る

演習の手順

  • seq() を使って、0から始まり1で終わり、増分0.01のベクトル grid を作成します。
  • grid と同じ長さの空のベクトル vsharpe を初期化します。一般的な方法は、関数 rep() を使って NA を含むベクトルを作成することです。次に作成するループの中で、これらの NA を置き換えます。
  • for ループでは、grid にあるすべての候補比率についてシャープレシオを計算します。for ループの最初のコマンドは、grid の i 番目の要素を選んでオブジェクト weight に保存します。これは各イテレーションで変化します。
  • 比率が変わるとポートフォリオのリターンがどう変化するかを確認します。weight × returns_equities と、(1-weight) × returns_bonds の和に等しいオブジェクト preturns を作成します。
  • 次に、vsharpe の NA を、preturns の年率換算シャープレシオ(SharpeRatio.annualized())で置き換えます。
  • 候補比率(grid)を x 軸、シャープレシオを y 軸にとってプロットする関数を完成させましょう。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create a grid
grid <- seq(from = ___, to = ___, by = ___)

# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )

# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
    weight <- ___[i]
    preturns <- ___ * ___ + (1 - ___) * ___
    vsharpe[i] <- SharpeRatio.annualized(___)
}

# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)
コードを編集して実行