假设我们有一个简单的长期问题,有四个资产和几个约束。以下是我通常如何通过一些基本约束来优化投资组合权重,例如权重总和为1,没有卖空且没有杠杆。
# set the covariance matrix:
cov <- cbind(c(0.1486, 0.0778, -0.0240, -0.0154),
c(0.0778, 0.1170, 0.0066, 0.0029),
c(-0.0240, 0.0066, 0.0444, 0.0193),
c(-0.0154, 0.0029, 0.0193, 0.0148)
)
# expected returns:
dvec <- c(0.0308, 0.0269, 0.0145, 0.0130)
# constraints:
# 1) weights to sum to 1
# 2) minimum weight for each asset = 0
# 3) maximum weight for each asset = 1
Amat <- cbind(c(1, 1, 1, 1), diag(1,4,4), diag(-1,4,4))
bvec <- c(1, 0, 0, 0, 0, -1, -1, -1, -1)
meq = 1
# The solution for portfolio weights is as follows:
round(solve.QP(cov, dvec=dvec, Amat=Amat, bvec=bvec, meq=meq)$solution,4)
现在,我想添加一个约束,即第一个资产小于或等于前三个资产的60%。我怎么能将这个约束添加到上面的投资组合?很容易将资产的上限设置为整个投资组合的百分比,但我不知道如何将资产的上限设置为某个组资产的百分比
任何想法都会非常感激。