加入權重限制
投資人常會受到投資組合權重上限的限制。這類限制其實可能是優點。設定單一資產的最大權重,可以降低投資組合集中於少數資產的程度。不過也有缺點:相同的目標報酬可能無法再達成,或需要承擔更高的波動度。
回想上一個練習,portfolio.optim() 函式可透過 reshigh 參數設定權重上限。reshigh 需要提供每個資產的最大權重向量。
在本練習中,你會建立三個具有不同最大權重限制的投資組合。為此,了解 portfolio.optim() 的輸出很重要。此函式會回傳一個包含四個成分的清單:(i)$pw:投資組合權重,(ii)$px:整體投資組合的報酬,(iii)$pm:投資組合的期望報酬,(iv)$ps:投資組合報酬的標準差。
本練習屬於課程
R 投資組合分析入門
練習說明
- 使用
rep()函式,為returns中每個資產(欄)建立三個最大權重向量。第一個向量的最大權重為 100%,第二個為 10%,第三個為 5%。分別命名為max_weights1、max_weights2、max_weights3。 - 建立一個最大權重為 100% 的最適投資組合,命名為
opt1。 - 建立一個最大權重為 10% 的最適投資組合,命名為
opt2。 - 建立一個最大權重為 5% 的最適投資組合,命名為
opt3。 - 針對每個投資組合,計算有多少資產的權重大於 1%。可在投資組合名稱後接
$pw以取得權重。 - 列印你建立的三個投資組合的波動度(標準差
$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
___$__
___$__