最大化 return -- 投资组合优化
Maximize return -- Portfolio optimization
又一个投资组合优化问题...
我正在尝试使用 quadprog 在 sum(P) = 1、MaxW <= 0.55 和 MinW >= 0.05 的限制下最大化四种资产组合的 return。
这段时间的平均 return 秒是
avgR <- c(0.0008990382, 0.0002285502, 0.0001120934, 0.0001540948)
而协方差矩阵是
covM <- matrix(c(2.876044e-04, 6.758444e-05, 4.382673e-05, 1.167429e-04,
6.758444e-05, 2.331315e-04, 5.797771e-05, 1.087006e-04,
4.382673e-05, 5.797771e-05, 2.568974e-04, 8.544499e-05,
1.167429e-04, 1.087006e-04, 8.544499e-05, 2.085108e-03), ncol=4)
我已经走到这一步了
require(quadprog)
nAssets <- length(avgR)
Dmat <- 2 * covM
upperB <- 0.55
lowerB <- 0.05
ub <- rep(upperB, nAssets)
lb <- rep(lowerB, nAssets)
dvec <- avgR
Amat <- rbind(1, diag(nAssets), -diag(nAssets))
bvec <- c(1, lb, -ub)
solve <- solve.QP(Dmat = Dmat, dvec = dvec, Amat = t(Amat), bvec = bvec, meq = 1)
solve$solution
哪个returns
0.55000000 0.33032755 0.06967245 0.05000000
作为最佳分配。
在 Excel 中使用相同的数据,我得到了另一个解决方案(具有更高的 return);
0.55 0.35 0.05 0.05
然而,将R的上限设置为0.65 Excel return相同的解决方案;
0.65 0.25 0.05 0.05
我错过了什么?
我通过设置解决了
dvec <- avgR * 100
所以这似乎是一些舍入错误...
又一个投资组合优化问题...
我正在尝试使用 quadprog 在 sum(P) = 1、MaxW <= 0.55 和 MinW >= 0.05 的限制下最大化四种资产组合的 return。
这段时间的平均 return 秒是
avgR <- c(0.0008990382, 0.0002285502, 0.0001120934, 0.0001540948)
而协方差矩阵是
covM <- matrix(c(2.876044e-04, 6.758444e-05, 4.382673e-05, 1.167429e-04,
6.758444e-05, 2.331315e-04, 5.797771e-05, 1.087006e-04,
4.382673e-05, 5.797771e-05, 2.568974e-04, 8.544499e-05,
1.167429e-04, 1.087006e-04, 8.544499e-05, 2.085108e-03), ncol=4)
我已经走到这一步了
require(quadprog)
nAssets <- length(avgR)
Dmat <- 2 * covM
upperB <- 0.55
lowerB <- 0.05
ub <- rep(upperB, nAssets)
lb <- rep(lowerB, nAssets)
dvec <- avgR
Amat <- rbind(1, diag(nAssets), -diag(nAssets))
bvec <- c(1, lb, -ub)
solve <- solve.QP(Dmat = Dmat, dvec = dvec, Amat = t(Amat), bvec = bvec, meq = 1)
solve$solution
哪个returns
0.55000000 0.33032755 0.06967245 0.05000000
作为最佳分配。
在 Excel 中使用相同的数据,我得到了另一个解决方案(具有更高的 return);
0.55 0.35 0.05 0.05
然而,将R的上限设置为0.65 Excel return相同的解决方案;
0.65 0.25 0.05 0.05
我错过了什么?
我通过设置解决了
dvec <- avgR * 100
所以这似乎是一些舍入错误...