我正在运行一个模型,该模型可以识别这三笔交易中的三笔交易,两笔多头和一笔空头,我正在尝试优化实现以下目标的权重组合。我需要做空,但需要组合购买以实现以下目标。
市场中性 - 第一行(在下表中)
多头和空头必须等于 1/-1% - 第二行和第三行
预期回报等于 0.2% - 第四行
美元中性(对于这个例子,我假设每笔交易的总价值是 100,000 美元),即空头的价值等于多头的价值 - 第 5 行
它在我将 MEQ 设置为 4 时有效,但是当我将其更改为 5 以包括美元中性线时它失败了。
非常感谢任何建议。
谢谢
omega <- cov(data.frame(z=rnorm(200), p=rnorm(200), q=rnorm(200)))
N <- 3
maxw <- 1
minw <- -1
dvec <- c(0.1335845, -0.5044753, -.40098906)
dvec <- sort(dvec, decreasing=TRUE)
dmat <- omega
amat <- rbind(1, c(1,1,0), c(0,0,1),
c(0.1335845, -0.5044753, -.40098906),c(100000, 100000, 100000), diag(N), -diag(N))
bvec <- c(0,1,-1,.2,0, rep(-1,N), -rep(1, N))
meq <- 5
w_opt <- solve.QP(Dmat=dmat, dvec=dvec, Amat=t(amat), bvec=bvec, meq=meq)$solution```
bvec
[1,] 1.000000e+00 1.000000e+00 1.000000e+00 0
[2,] 1.000000e+00 1.000000e+00 0.000000e+00 1
[3,] 0.000000e+00 0.000000e+00 1.000000e+00 -1
[4,] 1.335845e-01 -5.044753e-01 -4.009891e-01 0
[5,] 1.000000e+05 1.000000e+05 1.000000e+05 0
[6,] 1.000000e+00 0.000000e+00 0.000000e+00 -1
[7,] 0.000000e+00 1.000000e+00 0.000000e+00 -1
[8,] 0.000000e+00 0.000000e+00 1.000000e+00 -1
[9,] -1.000000e+00 0.000000e+00 0.000000e+00 -1
[10,] 0.000000e+00 -1.000000e+00 0.000000e+00 -1
[11,] 0.000000e+00 0.000000e+00 -1.000000e+00 -1