1

我正在使用 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.

关于我要去哪里错的任何想法?

4

1 回答 1

1

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

这可能不是您的问题的理想选择,但是如果您在每个组的最小值-最大值中提供一点摆动空间,那么随机生成器更有可能创建一个落在所述范围内的投资组合。例如,不要设置 min=max=0.55,而是尝试 min=0.5495 和 max=0.555,同时将排列增加到 10k 或更多。我有同样的问题并以这种方式解决。

于 2020-07-15T17:47:59.533 回答