開始使用免費開始

驅動因子 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)
編輯並執行程式碼