Estoy tratando de resolver un portafolio de optimización en R en el que hago las siguientes restricciones:
- Fijar la suma de peso dentro de un límite
- Establecer el retorno a un cierto valor
- Poner la beta de la cartera a 0
El propósito es entonces reducir al mínimo el riesgo con sujeción a las limitaciones antes mencionadas.
Aunque no tengo problemas en hacer eso, mi problema es el siguiente. Quiero hacer las ponderaciones de tal manera que la exposición total del portafolio a un factor sea 0. Imaginen que el activo a tiene una beta de 0.3, el activo b tiene 0.7 y el activo c -0.3. ¿Cómo puedo establecer esta restricción? Mi problema es que usando quadprog sólo puedo añadir un vector de parámetros externos (en este caso, retornos medios). ¿Hay alguna manera de evitar este problema o estoy viendo las cosas de manera equivocada?
El código que tengo hasta ahora es el siguiente:
6 activos y 6 retornos medios. También, una matriz de 6*6 var-cov. El límite superior del peso es lev_ub y el límite inferior es lev_lb. Returns_full es el vector con retornos.
dvec = matrix(colMeans(returns_full),ncol = 1)
Dmat = cov(returns_full)
A.Constraint1 <- matrix(c(1,1,1,1,1,1), ncol=1)
A.Constraint2 = matrix(c(1,1,1,1,1,1), ncol=1)
Amat <- cbind(A.Equality1,A.Equality2, dvec)
bvec <- c(-lev_ub,lev_lb,target_return)
qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=0)
Mi problema viene ahora del hecho de que asumo que tengo otro vector de longitud 6 con una beta para cada activo. Quiero que la suma del producto de los pesos y las betas sea cero o, en otras palabras, poner la beta total de la cartera a 0. ¿Cómo puedo añadir esta restricción?