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

Portfolio Optimization Constraints wrong using quadprog in JavaScript

我无法弄清楚我在 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);

感谢任何提示。谢谢

我认为您的约束没有正确指定并且 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]

这是我得到的:

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