我正在使用R中的PortfolioAnalytics软件包对11只证券进行投资组合优化。在这11只证券中,5只是股票基金,2只是优先股基金,3只是固定收益基金,1只是货币市场基金。我希望将我的资产类别配置为55%的股本、10%的优先股、30%的固定收益和5%的货币市场,以便在没有杠杆和营业额的情况下进行充分投资。我希望看到的输出是投资组合的各种排列,而不是静态的资产类别配置。
我尝试使用add.constraint函数来实现这一点,我使用了以下代码:
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))当我尝试生成随机投资组合时,收到以下错误消息:
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.对我的错误之处有什么看法吗?
发布于 2020-07-16 01:48:00
William,我认为问题是由硬性组约束和包的随机投资组合生成器的工作方式引起的。由于投资组合是随机创建的,因此生成器很少能生成与您的标准完全匹配的投资组合,因为尝试的排列数量很少(即5000个)。
这对于你的问题可能并不理想,但如果你在每个组的最小-最大值中提供一点回旋余地,那么随机生成器更有可能创建一个落在该范围内的投资组合。例如,不设置min=max=0.55,而是尝试min=0.5495和max=0.555,同时将排列增加到10k或更多。我也遇到了同样的问题,用这种方式解决了它。
https://stackoverflow.com/questions/61615010
复制相似问题