首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R的PortfolioAnalytics中创建组约束

在R的PortfolioAnalytics中创建组约束
EN

Stack Overflow用户
提问于 2020-05-05 22:04:42
回答 1查看 226关注 0票数 1

我正在使用R中的PortfolioAnalytics软件包对11只证券进行投资组合优化。在这11只证券中,5只是股票基金,2只是优先股基金,3只是固定收益基金,1只是货币市场基金。我希望将我的资产类别配置为55%的股本、10%的优先股、30%的固定收益和5%的货币市场,以便在没有杠杆和营业额的情况下进行充分投资。我希望看到的输出是投资组合的各种排列,而不是静态的资产类别配置。

我尝试使用add.constraint函数来实现这一点,我使用了以下代码:

代码语言:javascript
复制
 port <- add.constraint(portfolio = port, type="group",
                        groups= list(c(1:5),(6:7),c(8:10),c(11)),
                        group_min=c(0.55, 0.1, 0.3, 0.05),
                        group_max=c(0.55, 0.1, 0.3, 0.05),
                        group_pos= c(1,1,1,1))

当我尝试生成随机投资组合时,收到以下错误消息:

代码语言:javascript
复制
rportfolios <- random_portfolios(port, permutations = 5000, rp_method = "sample")
Error in rp_transform(w = tmp_group_w, min_sum = cLO[j], max_sum = cUP[j],  : 
  Infeasible portfolio created, perhaps increase max_permutations and/or adjust your parameters.

对我的错误之处有什么看法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-16 01:48:00

William,我认为问题是由硬性组约束和包的随机投资组合生成器的工作方式引起的。由于投资组合是随机创建的,因此生成器很少能生成与您的标准完全匹配的投资组合,因为尝试的排列数量很少(即5000个)。

这对于你的问题可能并不理想,但如果你在每个组的最小-最大值中提供一点回旋余地,那么随机生成器更有可能创建一个落在该范围内的投资组合。例如,不设置min=max=0.55,而是尝试min=0.5495和max=0.555,同时将排列增加到10k或更多。我也遇到了同样的问题,用这种方式解决了它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61615010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档