我正在使用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.
有没有想过我哪里出了问题?
William,我认为问题是由硬组约束和包的随机投资组合生成器的工作方式引起的。由于投资组合是随机创建的,在尝试了少量排列(即5000(的情况下,生成器很少生成与您的标准完全匹配的投资组合。
这可能不适合你的问题,但如果你在每组的最小-最大值中提供一点回旋空间,那么随机生成器更有可能创建一个在所述范围内的投资组合。例如,不设置最小值=最大值=0.55,而是尝试最小值=0.5495和最大值=0555,同时将排列增加到10k或更大。我也遇到了同样的问题,就这样解决了。