3 votos

Cartera De Optimización Con La Aversión Al Riesgo Parámetro R

Tengo este problema en R.

$$\max w^Tu - y w^T w$$ donde a es la covarianza varianza de la matriz, y la aversión al riesgo de parámetro. Es rigth si hago uso de la función de resolver.QP multiplicando la matriz de covarianza para lambda y configuración de dvec (vectores que aparecen en la función cuadrática a ser minimizado), igual a la del vector de la media de la renta de los activos? Con el fin de encontrar el máximo que tengo que cambiar el signo

weigth4<- matrix(0, nrow=15, ncol=15)
mu <- matrix(NA, nrow=15, ncol=15)
for ( i in 1:15){
  mu[i,]<- mean(c[[i]][2])
}
Amat<- cbind(1, diag(15), -diag(15))
bvec<- c(1, rep(0.01, 15), rep(-0.5,15))
for ( i in 1:15){
  result4<- solve.QP(Dmat=2*list[[i]], dvec=(-1)*mu[1,], Amat=Amat, bvec=bvec, meq=1)
weigth4[i,]<- result4$solution
  }

En el caso de la maximización de la utilidad esperada, yo también desee comprobar la impacto de los diferentes valores de y= 0, 1, 5, 10. En cualquier caso, por favor descartar cualquiera de las posiciones cortas. ¿Cómo puedo encontrar estas carteras?

2voto

scottishwildcat Puntos 146

Usted puede mirar en el ejemplo aquí.

He adaptado un poco. A continuación en primer lugar me muestra rendimiento de acciones, con el 20% vola pa. Entonces tengo que calcular la matriz de covarianza. En el quadprog (parte I) definir la matirx Amat diagonal y bvec como ceros. Entonces $$ Amat * w \ge bvec $$ le da la no-peso negativo de la restricción. Usted puede jugar y encontrar la restricción para los pesos que suman 1.

En la solución de golpe ves que el stock con el esperado negativo significa que no fue elegido y todos los pesos son no negativos.

library(quadprog)
rets = rnorm(20*3,mean=0, sd = 0.2/sqrt(250))
matrix(rets, ncol=3)

Dmat       <- cov(matrix(rets, ncol=3))
dvec       <- c(0.01,0.01,-0.01)
Amat       <-  diag(3)
bvec       <- c(0,0,0)
solve.QP(Dmat,dvec,Amat,bvec=bvec)
$solution [1] 34.39526 60.13777  0.00000
>     
>     $value [1] -0.4726651

$unconstrained.solution [1]   -5.189056  100.950539 -146.724093
>     
>     $iterations [1] 2 0

$Lagrangian [1] 0.00000000 0.00000000 0.01008373
>     
>     $iact [1] 3

Ok, el código de abajo le da las carteras de restricción así:

Dmat       <- cov(matrix(rets, ncol=3))
dvec       <- c(0.01,0.01,-0.01)
Amat       <-  diag(3)
Amat = cbind( c(1,1,1), Amat)
bvec       <- c(0,0,0)
bvec = c(1,bvec)
solve.QP(Dmat,dvec,Amat,bvec=bvec, meq = 1)
$solution
>     [1] 0.3638438 0.6361562 0.0000000
>     
>     $value
[1] -0.009947108

$unconstrained.solution
>     [1]   -5.189056  100.950539 -146.724093
>     
>     $iterations
[1] 3 0

$Lagrangian
>     [1] 0.009894217 0.000000000 0.000000000 0.019895103
>     
>     $iact
[1] 4 1

Usted necesita la meq con decirle a la quadprog que la primera restricción es la igualdad. Luego de traducir el $w_1 + w_2 + w_3 = 1$ en la Amat y bvec de ajuste.

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