開始使用免費開始

最大化二次效用函式

在「投資組合最佳化的挑戰」這支影片中,你看到如何使用套件 quadprog 解一個二次效用最佳化問題。這個練習會示範如何用 PortfolioAnalytics 套件來解同樣的二次效用問題。回想一下,二次效用的形式包含兩個項:一個是投資組合的平均報酬,另一個是投資組合變異數,並搭配風險趨避參數 lambda。

本練習屬於課程

R 中級投資組合分析

檢視課程

練習說明

  • 使用 index_returns 資料集中的資產名稱建立投資組合規格物件,並將該物件命名為 port_spec
  • port_spec 物件中加入「全額投資」限制,使權重總和為 1。
  • port_spec 物件中加入「僅做多」限制,使單一資產權重介於 0 到 1 之間。
  • port_spec 物件中加入「最大化投資組合平均報酬」的目標。
  • port_spec 物件中加入「最小化投資組合變異數」的目標。風險趨避參數應設為 10。
  • 執行最佳化。此問題可由二次規劃求解器解決,因此我們指定 optimize_method = "ROI"

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)

# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)

# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)

# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")
編輯並執行程式碼