关于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.QP
为 sol$value
.
提供负值的可能原因是什么
solve.QP
是一个 general 二次优化问题求解器。所以你必须知道你实际解决的是哪个二次问题。由于您正在处理均值方差投资组合优化,因此您的可能是
wopt=argmax_w(t(w)%*%r-lambda*t(w)%*%C%*%w)
其中 r
、w
、lambda
和 C
是预期的 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
.
我正在使用 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.QP
为 sol$value
.
solve.QP
是一个 general 二次优化问题求解器。所以你必须知道你实际解决的是哪个二次问题。由于您正在处理均值方差投资组合优化,因此您的可能是
wopt=argmax_w(t(w)%*%r-lambda*t(w)%*%C%*%w)
其中 r
、w
、lambda
和 C
是预期的 return、投资组合权重、风险规避参数和协方差矩阵, 分别。 wopt
是最佳权重向量。 sol$value
将在 wopt
.
其他一些均值-方差公式试图在限制风险(即方差)的情况下最大化 t(w)%*%r
。
对于这两个公式,sol$value
不会是方差 t(wopt)%*%C %*%wopt
。也许您一直在研究最小方差投资组合优化?你的差异将是 objective 函数。
无论如何,您将通过
获得均值-方差优化的方差t(sol$solution)$%*%C%*%sol$solution
因为wopt=sol$solution
.