开始使用免费开始使用

添加约束

使用 add.constraint() 函数可将约束添加到投资组合规范对象中。每一个添加的约束都是一个独立对象,并存储在投资组合对象的 constraints 槽中。通过这种方式,约束是模块化的,您可以轻松在投资组合对象中添加、移除或修改约束。add.constraint() 的必需参数包括要添加约束的 portfolio、约束的 type,以及通过 ... 传递给该约束类型构造函数的具名参数。

基础约束类型:

  • 指定权重之和的约束
    • weight_sumweightleverage
    • full_investment 是特殊情形,设置 min_sum = max_sum = 1
    • dollar_neutral 是特殊情形,设置 min_sum = max_sum = 0
  • 指定单个资产权重的约束
    • box
    • long_only 是特殊情形,设置 min = 0max = 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

编辑并运行代码