r中的optiSolve包

r中的optiSolve包,r,solver,portfolio,r-portfolioanalytics,R,Solver,Portfolio,R Portfolioanalytics,我试图在5个约束条件下最大化投资组合回报: 1.-一定程度的投资组合风险 2.-上述相同,但有明显的标志(我需要风险正好是该数字) 3.-权重之和必须为1 4.-所有重量必须大于或等于cero 5.-所有重量不得超过一个 我使用optiSolve软件包是因为我没有找到任何其他软件包允许我编写这个问题(或者至少我知道如何使用它) 我这里有三个大问题,第一个是得到的权重向量和大于1,第二个问题是我不能在二次约束中声明t(w)%*%varcov_矩阵%*%w==0,因为它只允许“ 您的restricc

我试图在5个约束条件下最大化投资组合回报:

1.-一定程度的投资组合风险

2.-上述相同,但有明显的标志(我需要风险正好是该数字)

3.-权重之和必须为1

4.-所有重量必须大于或等于cero

5.-所有重量不得超过一个

我使用optiSolve软件包是因为我没有找到任何其他软件包允许我编写这个问题(或者至少我知道如何使用它)

我这里有三个大问题,第一个是得到的权重向量和大于1,第二个问题是我不能在二次约束中声明t(w)%*%varcov_矩阵%*%w==0,因为它只允许“
  • 您的
    restriccion2
    使x的加权和为1,如果您还想确保x的常规和为1,您可以修改约束,如下所示:

  • restricion2形式的约束

     x'Qx = a
    
    是非凸的(更一般:任何非线性等式约束都是非凸的)。非凸问题比凸问题更难解决,需要专门的全局解算器。对于凸问题,有相当多的解算器可用。非凸问题并非如此。大多数投资组合模型都表示为凸QP(二次规划,即风险——二次项——在目标中)或凸QCP/SOCP问题(约束中的二次项,但以凸方式)。因此,约束

    x'Qx <= a
    
    不幸的是,这并不能消除非凸性,因为
    -Q
    不是PSD。如果我们要最大化收益,我们通常只使用
    x'Qx=part。更流行的是将收益和风险都放在目标中(即标准的平均变量投资组合模型)


    在R下解决非凸二次问题的一个可能的解算器是Gurobi。

    非常感谢您的回答,我使用了您建议的约束条件,但我对我的输出有疑问,因为当我将PorFavour_函数和$x求和时,结果超过1,然后当我看到PorFavour_函数和$x向量时,我仍然有负值```Function_obj我误读了你在第一期上的最初帖子,所以现在的答案解释了如何解决这个问题。我还对第2部分和第3部分做了更好的解释。如果你不需要,请告诉我。谢谢你的帮助。也许最好的办法是限制风险,而不是设定某个值。
     x'Qx = a
    
    x'Qx <= a
    
    x'Qx <= a
    -x'Qx <= -a