2 votos

Estimación del VaR con simulación de Monte Carlo

Quiero verificar el VaR teórico del 99% para la siguiente Variable Aleatoria:

\begin {align*} X= \epsilon + \nu , \end {align*} $\epsilon \sim \mathcal{N}(0,1)$ , \begin {align*} \nu = \begin {casos} \begin {array}{ll}0 & \text {con probabilidades} \enspace 0.991 \\ -10& \text {con probabilidades} \enspace 0.009 \end {array} \end {casos}. \end {align*} Así que pensé que el VaR teórico del 99% es de 3,088. Luego corrí algunas simulaciones monte carlo en excel( $\epsilon$ como normal estándar y $\nu$ como un bernoulli y así sucesivamente y se utiliza la función cuantil). Ahora llegué hasta 20000 simulaciones en excel, pero la estimación del VaR era muy sensible a las diferentes simulaciones, variando de 2 a 8, pero ya vi que la mayoría de las estimaciones estaban cerca de la teórica. Codifiqué la misma simulación monte carlo en MATLAB y tuve que aumentar la cantidad de simulaciones a 500000 para obtener una estimación muy estable y precisa.

Ahora estoy interesado en la razón, 500000 me parece muy alto, nunca he experimentado una situación en la que fuera necesario ejecutar más de 10000 simulaciones. ¿Será porque X es una mezcla de Variable Aleatoria continua y discreta? Gracias.

4voto

BMundell Puntos 101

Para responder a su pregunta "es porque X es una mezcla de una Variable Aleatoria continua y discreta" La respuesta es no. Las razones medias son (1) el tamaño de la muestra (que es limitado / contable) (2) el hecho de que usted está tratando de obtener el valor de la cola y (3) la forma de la KDE (distribución).El valor teórico de 3,088 será emprirically calculado si y sólo si usted tiene el tamaño de la muestra lo suficientemente grande.

(@Jack JackGuRae dice Se trata de que las simulaciones no son realmente aleatorias lo cual no es exactamente cierto, ya que los generadores de números pseudoaleatorios utilizan algoritmos que sí garantizan que las muestras lo suficientemente grandes se distribuyan adecuadamente, es decir, la simulación de 1000 tiradas de dados le dará p=1/6 para cada lado a digamos 3 p.d.)

(@msitt da en el clavo con el comentario de la cola)

Como ha mencionado antes, es cierto que para algunas de las simulaciones, necesitaba considerablemente más pequeño tamaño de la muestra, pero en este caso se está tratando de muestrear de un altamente distribución sesgada a la izquierda. Considere el siguiente código para trazar la KDE:

sims   <- 10e6
errors <- rnorm(sims)
v      <- ifelse(runif(sims) <= 0.009, -10.0, 0.00)
x      <- v + errors
plot(density(x), col = 2, lwd = 2)
abline(v=unname(quantile(x,probs=c(0.01))))

enter image description here

donde la línea vertical es el cuantil del 1%. Las posibilidades de tener una muestra pequeña con este valor particular para el cuantil del 1% son muy pequeñas.

Otro ejemplo en el que se parametriza el cálculo de los cuantiles en función del número de simulaciones y del modo Bernoulli y se representan los cuantiles en función del número de simulaciones:

set.seed (3134)

quant <- function(sims, tailmode)
{
  errors <- rnorm(sims)
  v      <- ifelse(runif(sims) <= 0.009, tailmode, 0.00)
  x      <- v + errors
  return(unname(quantile(x,probs=c(0.01))))
}

sims <- seq(100, 20000, len=20)

par(mfrow=c(2,2))
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims,-10), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="-10")
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims,-5 ), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="-5")
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims,-1 ), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="-1")
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims, 0 ), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="0")

da

enter image description here

que muestra claramente que cuanto menos sesgada es su distribución (es decir, el modo Bernoulli aumenta), más rápido converge el cuantil calculado del 1% a su valor modelo.

1voto

Joel Martinez Puntos 165

La razón por la que necesita realizar tantas simulaciones es porque está tratando de estimar una propiedad de cola que tiene una probabilidad muy pequeña de ocurrir.

Hagamos un rápido cálculo al revés: El VaR del 99% se producirá el 1% de las veces. Con la forma en que está configurada su variable binomial, supongamos que sólo $\nu=-10$ contribuye al VaR. Esto ocurre con una probabilidad de 0,009. Si se realiza un 1% * 0,009 = 11.111 simulaciones, sólo se espera obtener un evento de cola. Con 500.000 simulaciones, se obtienen 45 eventos de cola, que es más o menos lo que yo esperaría para conseguir la convergencia.

-1voto

agc93 Puntos 216

No se trata de una mezcla de una Variable Aleatoria continua y discreta.

Se trata de que las simulaciones no son realmente aleatorias, ni siquiera utilizando 50.000 ensayos. Por eso se obtienen resultados variables. (Presenta una gran discrepancia)

Al simular una variable aleatoria a partir de un generador de funciones pseudoaleatorias, se necesitan simulaciones muy grandes para garantizar la convergencia.

Prueba a utilizar el método cuasi-Monte Carlo. Utiliza secuencias casi aleatorias. Además, está disponible en MATLAB. mira aquí

En realidad, con QMC, es posible que sólo necesite unos pocos miles de simulaciones.

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