R cran中参与约束下的最小方差组合

Minimum variance portfolio under participation constraint in R cran

我想找到 3 种风险资产的最小方差投资组合,其中所有资产的权重总和 = 2,资产 1 的权重设置为 +1(即问题是通过以下方式最小化投资组合 vol仅调整资产 2 和 3 的权重,前提是它们不超过 1 且 >=0。我发现以下代码片段可以最大限度地降低 3 资产组合的风险,但我不确定如何合并体重限制。欢迎任何帮助/建议。

 covmat <- matrix(c(3.235343e-02, -3.378191e-03, -1.544574e-05,
                  -3.378191e-03,  8.769166e-03,  1.951734e-06,
                  -1.544574e-05,  1.951734e-06,  2.186799e-06),3,3)

    mat <- rbind(cbind(2*covmat,rep(1, 3)), c(rep(1, 3), 0))
    vec <-  c(rep(0, 3),1)
    smat <-  solve(mat)%*%vec
    smat[1:3,1]

谢谢,

R 有一个专为这些类型的问题设计的 QP(二次规划)求解器:

library(quadprog)
covmat <- matrix(c(3.235343e-02, -3.378191e-03, -1.544574e-05,
                   -3.378191e-03,  8.769166e-03,  1.951734e-06,
                   -1.544574e-05,  1.951734e-06,  2.186799e-06),3,3)
# linear constraint matrix
A <- rbind(c(1,1,1),diag(3))
# rhs
b <- c(2,1,0,0)
# solve QP model
solve.QP(covmat,dvec=rep(0,3),Amat=t(A),bvec=b,meq=2)$solution

输出:

[1] 1.0000000 0.3835757 0.6164243