1. 学ぶ
  2. /
  3. コース
  4. /
  5. Rで学ぶポートフォリオ分析入門

Connected

演習

目標リターンのグリッドを使って効率的フロンティアを計算する

これまでに見たように、効率的フロンティアを計算する1つの方法は、まず目標リターンのグリッドを定義し、その後、各目標リターンごとに、期待リターンが目標リターンと等しく、分散が最小となるポートフォリオを求めるという流れです。

では、妥当な目標リターンのグリッドとは何でしょうか。最大の目標リターンは、各銘柄の平均リターンの最大値に設定します。最小の目標リターンは、本来であれば最小分散ポートフォリオのリターンに設定したいところですが、まだその値が分からないため、ここでは全銘柄の平均リターンの最小値を用いてグリッドを作成します。

この演習では、for ループを使って、ポートフォリオの平均、標準偏差、およびウェイトの候補グリッドを計算します。

指示

100 XP
  • returns の列平均(colMeans() を使用)を計算し、stockmu と名付けます。
  • 長さ 50 の数列(seq())を作成します。これは無リスク金利 1% から始まり、stockmu の最大値で終わるようにし、grid と名付けます。
  • rep() を使って、grid と同じ長さの空のベクトルを2つ初期化し、ポートフォリオの平均と標準偏差を格納します。これらをそれぞれ vpm と vpsd とします。
  • 50 行 30 列の空の行列を初期化し、mweights と名付けます。matrix() 関数を使用できます。
  • for ループを作成し、grid の最初の値から最後の値まで反復します。各反復で、returns を用い、目標リターンを grid の該当値に設定したポートフォリオ opt を作成します。
  • 各反復で、opt の値を使って、ベクトル vpm($pm)、vpsd($ps)をそれぞれ埋めていきます。
  • ポートフォリオのウェイト($pw)を mweights に行ごとに格納します。