添加约束
使用 add.constraint() 函数可将约束添加到投资组合规范对象中。每一个添加的约束都是一个独立对象,并存储在投资组合对象的 constraints 槽中。通过这种方式,约束是模块化的,您可以轻松在投资组合对象中添加、移除或修改约束。add.constraint() 的必需参数包括要添加约束的 portfolio、约束的 type,以及通过 ... 传递给该约束类型构造函数的具名参数。
基础约束类型:
- 指定权重之和的约束
weight_sum、weight、leveragefull_investment是特殊情形,设置min_sum = max_sum = 1dollar_neutral是特殊情形,设置min_sum = max_sum = 0
- 指定单个资产权重的约束
boxlong_only是特殊情形,设置min = 0且max = 1
- 按组(行业、区域、资产类别等)指定资产权重之和的约束
group
- 指定目标平均收益率的约束
return
在本练习中,您将添加几种更常见的约束类型。除了上述基础约束类型,PortfolioAnalytics 还支持持仓上限、换手率、多样化、因子暴露以及杠杆暴露等约束类型。若您对其他约束类型感兴趣,请查看相应约束构造函数的帮助文档。帮助文档包含对约束类型的说明以及示例代码。
本练习是课程的一部分
R 中级投资组合分析
练习说明
- 添加一个
weight_sum约束,使权重之和的最小值为 1、最大值为 1。 - 添加一个
box约束,使前 5 个资产的最小权重为 10%,其余资产的最小权重为 5%。所有资产的最大权重为 40%。 - 添加一个
group约束,使资产 1、5、7、9、10、11 为第 1 组,资产 2、3、4、6、8、12 为第 2 组。将每组的最小权重设为 40%、最大权重设为 60%。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Add the weight sum constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min_sum = ___, max_sum = ___)
# Add the box constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min = c(___), max = ___)
# Add the group constraint
port_spec <- add.constraint(portfolio = ___, type = ___, groups = list(c(___), c(___)), group_min = ___, group_max = ___)
# Print the portfolio specification object