关于quadprog中solve.qp输出中"value"分量的定义或算法,R

About the definition or algorithm of the "value" component in the output of solve.qp in quadprog, R

我正在使用 R 的 quadprog 包中的 solve.QP 来解决经典的均值方差优化问题。在我的理解中,输出组件 "value" 表示优化投资组合的方差,网上发布的许多均值-方差优化代码也表明 sqrt(sol$value) 是优化投资组合的标准差。

然而,当我使用 solve.QP 解决简单的均值方差优化时,sol$value 为我提供了一个负值,该值也不同于使用投资组合方差函数计算的值:w%*%covariance%*%t(w)。我试图在网上搜索 sol$value 的定义或算法,但不幸的是我找不到详细的描述。 quadprog 的 R 文档仅声明 "value" 是 "scalar, the value of the quadratic function at the solution".

所以熟悉solve.QP的人可以告诉我sol$value的确切定义或算法吗?如果我对它的理解是正确的,即优化投资组合的方差,那么 solve.QPsol$value.

提供负值的可能原因是什么

solve.QP 是一个 general 二次优化问题求解器。所以你必须知道你实际解决的是哪个二次问题。由于您正在处理均值方差投资组合优化,因此您的可能是

 wopt=argmax_w(t(w)%*%r-lambda*t(w)%*%C%*%w)

其中 rwlambdaC 是预期的 return、投资组合权重、风险规避参数和协方差矩阵, 分别。 wopt 是最佳权重向量。 sol$value 将在 wopt.

处为您提供 objective 函数的值

其他一些均值-方差公式试图在限制风险(即方差)的情况下最大化 t(w)%*%r。 对于这两个公式,sol$value 不会是方差 t(wopt)%*%C %*%wopt。也许您一直在研究最小方差投资组合优化?你的差异将是 objective 函数。

无论如何,您将通过

获得均值-方差优化的方差
t(sol$solution)$%*%C%*%sol$solution

因为wopt=sol$solution.