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

时间:2016-09-30 23:36:55

标签: r optimization quadprog

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

我正在使用约束进行均值 - 方差优化,它们必须总和为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%。

任何人都知道问题是什么?

1 个答案:

答案 0 :(得分:1)

我想出了这个问题。

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