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,这是使用矩阵代数进行投资组合优化的拉格朗日值。
我有一个关于这个算法的问题需要回答,因为我正在审核我的模型并且这种不一致是令人担忧的。
我正在进行均值-方差优化,约束总和必须为 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,这是使用矩阵代数进行投资组合优化的拉格朗日值。