单期优化
用于运行优化的函数有两个: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。
在本练习中,我们将定义一个投资组合优化问题:在满足全部资金投资且仅做多约束下,最大化平均收益并最小化投资组合标准差,同时加入标准差风险预算目标,其中最小风险占比为 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