始める無料で始める

ウェイト制約を課す

投資家はしばしば、ポートフォリオの各資産のウェイトに上限を設ける制約を受けます。これらの制約は実はメリットにもなります。最大ウェイトの制約があると、その後のポートフォリオは特定の資産に過度に集中しにくくなります。ただしデメリットもあります。同じ目標リターンが達成できなくなる、あるいは達成できてもボラティリティ(変動性)が高くなる可能性があることです。

前の演習で見たように、portfolio.optim() 関数では reshigh 引数でウェイト制約を設定できます。reshigh には各資産の最大ウェイトを並べたベクトルを渡します。

この演習では、最大ウェイト制約の異なる3つのポートフォリオを作成します。ここでは portfolio.optim() 関数の出力を理解しておくことが重要です。この関数は4つの要素からなるリストを返します。(i) $pw: ポートフォリオのウェイト、(ii) $px: ポートフォリオ全体のリターン、(iii) $pm: 期待リターンのポートフォリオ、(iv) $ps: ポートフォリオ・リターンの標準偏差です。

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

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

コースを見る

演習の手順

  • rep() 関数を使って、returns の各資産(列)に対応する最大ウェイトのベクトルを3つ作成します。最初のベクトルは最大100%、次は10%、最後は5%とし、それぞれ max_weights1max_weights2max_weights3 と名付けます。
  • 最大ウェイト100%の最適ポートフォリオを作成し、opt1 と名付けます。
  • 最大ウェイト10%の最適ポートフォリオを作成し、opt2 と名付けます。
  • 最大ウェイト5%の最適ポートフォリオを作成し、opt3 と名付けます。
  • 各ポートフォリオについて、ウェイトが1%を超える資産の数を計算します。ウェイトには、ポートフォリオ名の後に $pw を付けてアクセスします。
  • 作成した3つのポートフォリオのボラティリティ(標準偏差 $ps)を出力してください。

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

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

# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___

# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)

# Create an optimum portfolio with max weights of 10%


# Create an optimum portfolio with max weights of 5%


# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)

# Print portfolio volatilites 
opt1$ps
___$__
___$__

コードを編集して実行