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

时间:2016-03-09 12:30:54

标签: r optimization finance portfolio

我想找到3个风险资产的最小方差投资组合,其中所有资产的权重总和= 2,资产1的权重设置为+1(即问题是通过仅调整来最小化投资组合资产资产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]

谢谢,

1 个答案:

答案 0 :(得分: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