4 votos

Optimización analítica de la cartera para el VaR bajo normalidad multivariante

Dado un conjunto de activos con rendimientos que siguen una distribución normal multivariante con un vector de media y una matriz de covarianza conocidos, $$ r \sim N(\mu,\Sigma), $$ Quiero encontrar las ponderaciones óptimas de la cartera $w^*$ que maximicen el valor en riesgo (VaR), siempre que las ponderaciones sumen 1 y sean no negativas: $$ w^*:=\arg \max_{w} F^{-1}(q) \\ \text{subject to} \\ \quad w^{\top}e=1 \quad \text{and} \quad w>0 $$ donde $F(\cdot)$ es la FCD de la rentabilidad de la cartera, $q$ es el cuantil de interés, $e$ es un vector de unos y $>$ se mantiene para cada elemento de $w$ . $F$ es una FCD normal con expectativa $w^{\top}\mu$ y la varianza $w^{\top} \Sigma w$ siendo los parámetros funciones de $w$ .

¿Tiene este problema una solución analítica?

Los elementos del vector de la media no son necesariamente iguales; de lo contrario, se dispone de una solución que equivale a la conocida solución de minimización de la varianza de la cartera.

Nota: No me importa la plausibilidad de la normalidad multivariante para los rendimientos de los activos; lo necesito para probar y comparar una rutina de optimización numérica para el VaR.


Editar: actualizado para incluir fórmulas y para restringir la pregunta al caso de pesos no negativos (en la pregunta original esta última restricción era opcional).

1voto

BigCanOfTuna Puntos 210

Si se define el VaR como un cuantil de la distribución de los distribución de los rendimientos de la cartera en torno a la media de esos rendimientos, entonces la cartera de mínima varianza es lo que se busca minimiza la volatilidad en torno a la media, sea cual sea esta media. Cuando los rendimientos son conjuntamente normal, la maximización del VaR, tal como se acaba de definir, hace lo mismo.

En cuanto a mi segundo comentario: los procedimientos numéricos para el VaR suelen maximizar directamente una estadística de orden dada en una muestra de los rendimientos de la cartera. Pero entonces no hay garantía que en la muestra la cartera óptima de VaR sea la misma cartera óptima de VaR sea la misma que la cartera de varianza mínima. Por lo tanto, para probar un procedimiento numérico conocer la verdadera distribución y generar datos a partir de ella puede no ser suficiente. Ejemplo (utilizando R):

Creo 2000 escenarios para 10 activos; cada uno puede tener un peso entre 0 y 25%. Los rendimientos utilizan rendimientos medios ridículamente altos de manera que la distribución se aleja de cero. cero.

library("NMOF")        ## https://github.com/enricoschumann/NMOF
library("neighbours")  ## https://github.com/enricoschumann/neighbours

set.seed(32923)

## create random data
na <- 10              ## number of assets
ns <- 2000            ## number of scenarios
k <- ceiling(ns*0.1)  ## order statistic to maximise
R <- randomReturns(na = na, ns = ns,
                   mean = runif(na, 200/100/255, 300/100/255),
                   sd = runif(na, 0.005, 0.02),
                   rho = 0.6)

## minimum-variance solution
x.qp <- minvar(cov(R), wmin = 0, wmax = 0.25)

La optimización del VaR. El algoritmo que utilizo minimiza, por lo que pongo un menos delante del VaR.

### 1) objective function
of_var <- function(x, R, k, ...)
    -(sort(R %*% x, partial = k)[k] - sum(R %*% x)/nrow(R))

### 2) optimisation with Threshold Accepting
x.ta <- TAopt(
    OF = of_var,                    ## SETTINGS
    list(nI = 20000,                ### number of iterations
         neighbour = neighbourfun(  ### neighbourhood function
             min = 0,
             max = 0.25,
             stepsize = 1/100),
         x0 = rep(1/na, na)         ### initial solution: equal weights
         ),
    R = R, k = k)$xbest

Podemos comparar las carteras resultantes y sus rendimientos y sus distribuciones: las carteras son muy similares.

## compare weights
data.frame(MV  = round(100*x.qp, 2),
           VaR = round(100*x.ta, 2))

## compare returns distributions under given sample
plot(ecdf(R %*% rep(1/na, na)),
     main = "distribution of portfolio returns")
lines(ecdf(R %*% x.qp), col = "blue")
lines(ecdf(R %*% x.ta), col = "darkgreen")

Por último, evalúo la función objetivo VaR en la cartera de de mínima varianza y en la cartera de mínimo VaR.

of_var(rep(1/na, na), R, k)  ## equal weight
## [1] 0.01316127
of_var(x.qp, R, k)           ## minimum variance
## [1] 0.008222392
of_var(x.ta, R, k)           ## minimum VaR
## [1] 0.008178637

Como puede ver, la aceptación del umbral encontró una cartera que proporciona una pequeña ventaja sobre la cartera de mínima varianza en esta muestra en particular. (Esto probablemente podría ser mejorado, pero sólo sirve para hacer el punto aquí). En la verdadera distribución, ambas carteras deberían ser iguales.


También se puede definir el VaR como un cuantil de la distribución de los rendimientos sin centrarlo. No se puede maximizar cualquier cuantil de la distribución de de la distribución de los rendimientos. Piense en la mediana: si puede utilizar apalancamiento y la cartera tiene una rentabilidad positiva, se puede puede aumentar la mediana (que es lo mismo que la media en la distribución gaussiana) sin límite. Así que es mejor definir el VaR como un cuantil inferior. cuantil inferior. Maximizarlo es, en un mundo gaussiano gaussiana, equivale a maximizar

$$\mu'x - \lambda \sqrt{x' \Sigma x}$$

en el que $\lambda$ es un multiplicador apropiado para la desviación estándar, como por ejemplo 1.645 para el VaR del 5%:

> qnorm(0.05)
## [1] -1.644854

Este modelo no debería plantear muchas dificultades a un solucionador numérico numérico. (Para la mediana, $\lambda$ sería cero).

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