2 votos

Optimización del portafolio - Cero beta del portafolio

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?

2voto

wyatt Puntos 126

Utilizar PortfolioAnalytics

Véase mi respuesta anterior aquí: https://quant.stackexchange.com/a/16002/2154 En esta página encontrará enlaces a la documentación.

Puede utilizar la función de restricción para añadir una restricción de exposición al factor de 0.

use add.constraint(your_portfolio_name,type='factor_exposure',B = your_vector_of_betas,lower=0,upper=0)

0voto

paulAl Puntos 178

Digamos que tenemos $n$ activos. Supongamos que la matriz de covarianza es $\Sigma$ . Supongamos ahora que $x$ es el vector de pesos de sus activos, $\mu$ es el vector de rendimientos medios de los activos, $\mathbb{1}$ es el vector de todos los unos, $B$ es el vector de betas de cada activo, y $\tau$ su rendimiento objetivo. Usted quiere resolver el siguiente programa cuadrático $$Min_x\;\; \frac{1}{2}x^T\Sigma x$$ Con las limitaciones $$x^T \mathbb{1}=1$$ $$\mu^Tx \geq \tau$$ $$B^Tx=0$$ La restricción $B^Tx=0$ garantizará que la beta de las carteras sea cero.

0 votos

Claro que lo sé, pero ¿cómo puedo resolver este problema?

0voto

ARKBAN Puntos 1388

Se tiene la restricción de presupuesto en la suma de pesos, la restricción de que la rentabilidad de la cartera sea igual a la rentabilidad objetivo, y la restricción de beta. Con tres restricciones de igualdad, puede establecer una fila en Amat para cada restricción, y luego tomar la transposición para pasar a solve.QP. bvec se establece en el lado derecho de las ecuaciones de la restricción y el parámetro meq es igual al número de restricciones de igualdad. A continuación se muestra un ejemplo para su problema:

target_return <-  0.0002
num_assets <- 6
dvec <- rep(0,num_assets)                        #  dvec = 0 when minimizing only the variance
Dmat <- cov(return_full)
Amat <- matrix(rep(1, num_assets), ncol=num_assets)      #  budget constraint: sum of wts = 1
Amat <- rbind(Amat, c(.3, .7, -.3, 1, 1.1, 1.3) )        #  beta constraint: sum of wt*beta = 0
Amat <- rbind(Amat, colMeans(return_full) )              #  portfolio return = target_return
# Amat <- rbind(Amat, diag(1,nrow=num_assets, ncol=num_assets) )    #  would be used for long-only solutions: wts >= 0
Amat <- t(Amat)
bvec <- c(budget = 1, beta = 0, return = target_return )         # rhs of constraint eqns
# bvec <- c(bvec, rep(0,num_assets) )       # would be used with long-only constraint
qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=3)

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X