驅動因子 2:投資組合權重的選擇
投資人可以最佳化權重的選擇,以取得最高的風險調整後報酬,這通常以投資組合的 Sharpe 比率來衡量。
在只投資於 2 種資產的特殊情況下,只需要決定 1 個權重,因為第二個資產的權重等於 1 減去第一個資產的權重。
我們以投資於美國股票與美國債券的投資組合為例來操作。這裡將使用暴力搜尋法,嘗試大量可能的權重組合,並保留能使投資組合 Sharpe 比率達到最高的那個權重(假設無風險利率為 0)。
本練習屬於課程
R 投資組合分析入門
練習說明
- 使用
seq()建立名為grid的向量,起始為 0、結束為 1、遞增 0.01。 - 以與
grid相同長度初始化空向量vsharpe。常見做法是用函式 rep() 建立包含 NA 的向量。稍後你會在迴圈中將這些 NA 替換掉。 - 在 for 迴圈中,為
grid中每個可能的權重計算 Sharpe 比率。迴圈的第一行會選取grid的第 i 個元素並存入物件weight,它會在每次迭代時改變。 - 你需要觀察當權重改變時,投資組合報酬如何變化。建立物件
preturns,其值為weight乘上returns_equities,加上(1-weight)乘上returns_bonds。 - 接著,將
vsharpe中的 NA 替換為preturns的年化 Sharpe 比率(SharpeRatio.annualized())。 - 在繪圖函式中填入內容,讓潛在權重(
grid)作為 x 軸,Sharpe 比率作為 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)