开始使用免费开始使用

最大化二次效用函数

在关于投资组合优化挑战的视频中,您看到如何使用 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")
编辑并运行代码