單期最佳化
有兩個函式可用來執行最佳化,optimize.portfolio() 與 optimize.portfolio.rebalancing()。本練習著重於單期最佳化,下一個練習將使用 optimize.portfolio.rebalancing() 來進行定期再平衡的最佳化。optimize.portfolio() 支援單期最佳化。主要參數包含:R(資產報酬)、portfolio(投資組合規格物件),以及 optimize_method(指定用來求解問題的最佳化方法)。在許多情況下,將 trace = TRUE 指定為儲存每次迭代/嘗試的額外資訊會很有幫助。
支援的最佳化方法如下:
DEoptim:差分進化random:隨機投資組合GenSA:廣義模擬退火pso:粒子群最佳化ROI:R Optimization Infrastructure,提供線性與二次規劃求解器
你選擇的最佳化方法應依你要解的問題類型而定。例如,可表述為二次規劃的問題應使用二次規劃求解器;而非凸問題則應使用如 DEoptim 這類的全域求解器。
在本練習中,我們將定義投資組合最佳化問題:在滿足完全投資與僅做多(long only)限制下,同時最大化平均報酬並最小化投資組合報酬的標準差,且設定標準差風險預算,其中最小百分比風險為 5%,最大百分比風險為 10%。由於風險預算目標需要全域求解器,我們將使用隨機投資組合來解此問題。隨機投資組合集合 rp 在本練習中以 500 個排列所產生。
本練習屬於課程
R 中級投資組合分析
練習說明
投資組合規格已建立並命名為 port_spec。你的工作空間中也有資產報酬 asset_returns。
- 使用
"random"作為最佳化方法,並將trace設為TRUE,執行單期最佳化。將最佳化輸出指定給名為opt的變數。 - 列印最佳化的輸出。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)
# Print the output of the single-period optimization