solve.QP() $value 与数值计算不一致

solve.QP() $value inconsistent with numerical calculation

我有一个关于这个算法的问题需要回答,因为我正在审核我的模型并且这种不一致是令人担忧的。

我正在进行均值-方差优化,约束总和必须为 1,并且权重必须在我指定的范围内。我的输入如下:

Dmat = Sigma
dvec = rep(0, ncol(Sigma))
Amat = rbind(rep(1, ncol(Sigma)), diag(ncol(Sigma)), -diag(ncol(Sigma)),    
    ncol=ncol(Sigma))
bvec = c(1, MinWeights, -MaxWeights) 

那我运行:

Out = solve.QP(Dmat, dvec, t(Amat), bvec, meq=1)
Weights = Out$solution
Var = t(Weights) %*% Sigma %*% Weights
Var == Out$value

问题是最后一条命令的结果是 FALSE。这不是四舍五入问题,它们相差将近 20%。

有人知道问题出在哪里吗?

我找到问题了。

Sigma 应为 2*Sigma,这是使用矩阵代数进行投资组合优化的拉格朗日值。