我想找到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]
谢谢,
答案 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