Максимизация прибыли - оптимизация портфеля

Еще один вопрос оптимизации портфеля...

Я пытаюсь максимизировать доходность портфеля из четырех активов, учитывая сумму ограничений (P) = 1, MaxW <= 0,55 и MinW >= 0,05, используя quadprog.

Средняя доходность за период

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

Который возвращается

0.55000000 0.33032755 0.06967245 0.05000000

как оптимальное распределение.

Используя те же данные в Excel, я получаю другое решение (с более высокой доходностью);

0.55 0.35 0.05 0.05

Однако, установив верхнюю границу 0,65, R и Excel возвращают одно и то же решение;

0.65 0.25 0.05 0.05

Что мне не хватает?

1 ответ

Решение

Я решил это, установив

dvec <- avgR * 100

так что, похоже, какая-то ошибка округления...

Другие вопросы по тегам