始める無料で始める

最小分散ポートフォリオと最大シャープ・レシオのポートフォリオ

これまでの演習では、目標リターンのグリッドを使って効率的フロンティアを計算しました。計算の出力は、2つのベクトル vpm(ポートフォリオ平均のベクトル)と vpsd(標準偏差=ボラティリティのベクトル)、および mweights と呼ばれるウェイトの行列でした。ここでは、これらの出力を使って、ボラティリティが最も小さいポートフォリオとシャープ・レシオが最も高いポートフォリオを特定し、そのウェイト配分をプロットします。

参考までに、シャープ・レシオは、無リスク金利を差し引いた超過リターンをポートフォリオのボラティリティで割って求めます。

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

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

コースを見る

演習の手順

  • 標準偏差が最小になる行(vpsd == min(vpsd))に対応する mweights の行を取り出し、weights_minvar を作成します。
  • 無リスク金利が「0.75%」のときのポートフォリオ・リターンのシャープ・レシオを計算し、vsr と名付けます。
  • vsr の中でシャープ・レシオが最大となるポートフォリオに対応する mweights の行を取り出し、weights_max_sr を作成します。これは最初の指示と同様の方法で求められます。
  • weights_minvar ポートフォリオで重みが1%を超えるものの棒グラフを作成し、同様に weights_max_sr ポートフォリオでも重みが1%を超えるものの棒グラフを作成します。

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

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

# Create weights_minvar as the portfolio with the least risk
weights_minvar <- mweights[___ == min(___), ]

# Calculate the Sharpe ratio
vsr <- (___ - ___) / vpsd

# Create weights_max_sr as the portfolio with the maximum Sharpe ratio
weights_max_sr <- mweights[___ == max(___)]

# Create bar plot of weights_minvar and weights_max_sr
par(mfrow = c(2, 1), mar = c(3, 2, 2, 1))
barplot(weights_minvar[weights_minvar > 0.01])
barplot(___[___ > 0.01])
 
コードを編集して実行