Optimización de cartera SOLVE.QP restricciones de desigualdad

Mi nombre es Grégory y estoy tratando de calcular una cartera de Variación mínima con las siguientes restricciones:

Suma de los pesos inferiores o iguales a 1 (la cartera puede invertirse por completo, pero no es una obligación)Suma de los pesos mayores o iguales a 0 (la cartera puede estar totalmente en efectivo, pero no es una obligación)

0 <= ponderación de activos <= 5% (no se permiten ventas en corto, y la ponderación máxima de activos es 5%)

MV<-function (Returns, percentage = TRUE, ...) { if (is.null(dim(Returns))) { stop("Argument for 'Returns' must be rectangular.\n") } call <- match.call() V <- cov(Returns, ...) V <- make.positive.definite(V) N <- ncol(Returns) a1 <- rep(-1, N) b1 <- -1 a2 <- diag(N) b2 <- rep(0, N) c1<- -diag(N) ## This has been added to the model (to say: min 5%) c2<-rep(-0.05,N) ## This has been added to the model (to say: min 5%) c3<- rep(1,N) c4<- 0 Amat <- cbind(a1,c3,a2,c1) ### Corresponds to the matrix defining the different constraints Bvec <- c(b1,c4,b2,c2) ### Corresponds to the vector of constraints Dvec <- rep(0, N) ### Set to 0 because the first term of the routine must be equal to 0 #meq<- c(1,1,rep(1,N), rep(1,N)) opt <- solve.QP(Dmat = 2 * V, dvec = Dvec, Amat = Amat, bvec = Bvec, meq =0) w_mv <- opt$solution names(w_mv) <- colnames(Returns) if (percentage) w_mv <- w_mv * 100 return(w_mv) }

Cuando miro los pesos de la cartera de MV, todos los pesos de los activos son iguales a 0, por lo que no sé de dónde viene el error.

Estaría muy agradecido si pudieras ayudarme.

Muchas gracias de antemano,

Saludos cordiales,

Grégory

Respuestas a la pregunta(1)

Su respuesta a la pregunta