3 votos

Método paso a paso para calcular VaR utilizando simulaciones de MonteCarlo

Al intentar encontrar el VaR para 5 activos financieros con precios durante un largo período de tiempo (datos de 2000 días), ¿cómo haría lo siguiente:

  1. Llevar a cabo una simulación de Monte Carlo para encontrar un valor de VaR, asumiendo que los 5 activos siguen una distribución normal estándar.
  2. Llevar a cabo una simulación de Monte Carlo para los 5 activos para encontrar un valor de VaR, asumiendo que siguen una distribución t de Student con 10 grados de libertad?

Estoy tratando de hacer esto para los niveles de confianza del 95% y 90%, y simular los datos con 10,000 replicaciones. Cualquier ayuda sería muy apreciada. Ya he creado una matriz de descomposición de Cholesky pero no estoy seguro de cómo usar los datos en ella para obtener la cifra de VaR.

0 votos

¿Podría haber alguna manera de calcular esto usando Excel?

4 votos

Es bueno ver que el doctor está manejando prudentemente su futuro financiero.

1voto

user22326 Puntos 6

Hay varias formas diferentes de lograr tu objetivo. Una de ellas implicaría modelar cada serie temporal financiera y luego conectar estas distribuciones marginales usando una cópula. Monte Carlo es entonces cuestión de simular las distribuciones marginales y la cópula.

Al utilizar tu matriz de Cholesky, estás utilizando implícitamente una distribución elíptica (piensa en Gaussiana y Student t). Si quieres, por ejemplo, crear una simulación de MC Gaussiana en la que las distribuciones marginales son Gaussianas y la cópula es Gaussiana, entonces solo necesitas las desviaciones estándar de cada serie temporal para las distribuciones marginales y el enfoque estándar de simulación de MC.

En "pseudocódigo" los pasos son (asumo cero deriva por simplicidad)

1) Generar números aleatorios uniformes en el intervalo [0,1] (como Rand() en Excel)

2) Convertir cada uno de los aleatorios uniformes a aleatorios Gaussianos estándar (como NORMSINV)

3) Multiplicar la matriz de Cholesky por el vector aleatorio Gaussiano para crear un vector de aleatorios correlacionados para cada "fecha" de simulación

4) Para cada subyacente, multiplicar el nuevo "Gaussiano correlacionado" por la desviación estándar correspondiente a ese subyacente/activo

5) Utilizando tus pesos de cartera y los retornos de activos recién simulados, calcular el retorno de la cartera

6) Calcular tus estadísticas (como la función PERCENTILE en Excel)

La serie de pasos anterior puede convertirse en otras distribuciones marginales aparte de la Gaussiana, y se pueden utilizar cópulas más realistas que la cópula Gaussiana.

Al modelar tus distribuciones y cópula, estás haciendo suposiciones que conllevan riesgo de modelo. Esto no quiere decir que este sea un mal enfoque, pero uno simplemente necesita ser consciente de los errores de ajuste que surgen al realizar dicho ejercicio.

Hay otro método de simulación que podrías considerar que es muy fácil y que podría usarse como una verificación del método de MC: una especie de "simulación histórica de remuestreo".

Nuevamente en pseudocódigo:

1) Convertir las series de precios a series de rendimientos logarítmicos

2) Numerar las "fechas" de los datos del 1 al 2000 (el tamaño de tu serie temporal)

3) k = 1

4) Elegir un entero aleatorio i con igual probabilidad de ser de 1 a 2000 inclusive

5) Aplicar los retornos de la "fecha i" a los precios de hoy (el precio base que tenemos hoy)

6) Utilizando los pesos de cartera, calcular la fluctuación en el valor de la cartera y registrarla en un vector con índice k

7) k = k + 1

8) si K < 10,001 ve al paso 3) anterior

9) Calcular el VaR utilizando el vector de retornos de la cartera (como PERCENTILE en Excel)

Si este "VaR de remuestreo histórico" es extremadamente diferente de tu VaR de MC Gaussiano entonces probablemente necesitas utilizar un conjunto más realista de suposiciones de distribución marginal y cópula. Un buen primer paso sería intentar con las distribuciones Student t y la cópula.

0voto

dragonfly Puntos 1

¿Has echado un vistazo a las funciones del paquete R PerformanceAnalytics? Debería permitirte calcular el Var delta normal bastante fácilmente. Te recomiendo que consultes el manual de instrucciones, pero aquí tienes el código para ello:

VaR(R = NULL, p = 0.95, ..., method = c("modified", "gaussian",
"historical", "kernel"), clean = c("none", "boudt", "geltner"),
portfolio_method = c("single", "component", "marginal"), weights = NULL,
mu = NULL, sigma = NULL, m3 = NULL, m4 = NULL, invert = TRUE)

lo que necesitas mirar es el method, siendo gaussian la distribución n.

para recorrer todos tus activos (columnas) puedes utilizar un bucle for o funciones de apply

    setwd( introduce el nombre del archivo)
    data <- read.csv("nombrearchivo")

    for (i in ncol(data)) {

      stock_var <-  VaR(R = NULL, p = 0.95, ..., method = c("modified", "gaussian",
        "historical", "kernel"), clean = c("none", "boudt", "geltner"),
        portfolio_method = c("single", "component", "marginal"), weights = NULL,
        mu = NULL, sigma = NULL, m3 = NULL, m4 = NULL, invert = TRUE)

print(stock_var)
    }

te recomiendo que revises las funciones individuales por separado para entender su formato

0 votos

Puedes calcular la Varianza Delta normal manualmente en Excel usando la desviación estándar y 1.645 para el 5%, pero no podrás modelar la distribución. También, por favor, publica tus comentarios abajo y no como otra respuesta.

0voto

Max Maximus Puntos 529

También debes tener en cuenta que no estás limitado solo a una distribución normal. El marco de trabajo que tienes encajaría bien con una función copulativa en la que podrías elegir una amplia variedad de distribuciones y relaciones entre las variables. Sin embargo, si tu proyecto es para cumplimiento normativo o reguladores, es posible que te estés creando mucho trabajo adicional para educarlos sobre lo que hace ese método.

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