代码之家  ›  专栏  ›  技术社区  ›  chriscross

投资组合优化约束在JavaScript中使用quadprog错误

  •  0
  • chriscross  · 技术社区  · 8 年前

    我无法理解我在使用numeric.js中的quadprog进行投资组合优化(找到最优权重)时犯了什么错误

    我的投资组合限制很简单:权重总和应为1,所有权重(3种资产中的每一种)应在0和1之间(无卖空,无杠杆)。约束不被识别,权重变得非常高(也是负值)。

        var constraintsmatrix = [[0,0,0,0], [1,0,1,0], [1,0,0,0]]; 
        var covmatrix = [[0.00020817,0.00016281,0.00009747],[0.00016281,0.00026680,0.00009912],[0.00009747,0.00009912,0.00019958]]; 
        var returnsmatrix = [0.1,0.05,0.1];
        var bvec = 1; // [1,0,0,0,0,0,0,1,1,1];
        var result = numeric.solveQP(covmatrix, returnsmatrix, constraintsmatrix, bvec);
    

    感谢任何提示。谢谢

    1 回复  |  直到 8 年前
        1
  •  1
  •   Erwin Kalvelagen    8 年前

    我认为您的约束没有正确指定,rhs也没有传递。我们需要以下约束(首先相等):

    x1+x2+x3 = 1
    x1 >= 0
    x2 >= 0
    x3 >= 0
    

    这对应于

    A=[[1,1,0,0],[1,0,1,0],[1,0,0,1]]
    b=[1,0,0,0]
    

    下面是我得到的:

    enter image description here

    请注意,该模型的目标是 0.5*x'Dx-d'x 。请注意,我将5个参数传递给 solveQP .