1 votos

Simulación del valor en riesgo con $t$ rendimientos distribuidos

Quiero entender cómo el valor en riesgo y la simulación del VaR con el método simple de Monte Carlo. Pero quiero sólo una confirmación y son bienvenidos los comentarios, ya que no tengo la imagen completa de estos cálculos.

Digamos que tengo un activo anual con un periodo de riesgo de margen:

library(quantmod) 
getSymbols("WILL5000IND",src="FRED") 
wilsh <- na.omit(WILL5000IND)
wilsh <- wilsh["2016-01-01/2016-12-31"] 
names(wilsh) <- "TR"
y = wilsh
n=length(y)
logret <- diff(log(wilsh))[-1]

Ahora calculo el VaR empírico con $\alpha = 0.05$

alpha <- 0.05
rvec <- as.vector(logret)
quantile(rvec,alpha)

Con resultado:

        5% 
-0.01253343 

Ajustar los datos en un $t$ -y calcular mediante el método de máxima verosimilitud los parámetros:

t.fit <- fitdistr(rvec, "t")
round(t.fit$estimate,6)
mu = t.fit$estimate[1]
sd = t.fit$estimate[2]
df = t.fit$estimate[3]

Ahora el valor en riesgo del $t$ -retornos distribuidos es

q = qt(alpha,df=df)
varfit = as.numeric(mu + sd *sqrt((n-2)/n)*q)
varfit

con resultado:

-0.01183847

ahora si tengo tanta razón, quiero simular el valor en riesgo para un día adelante así que estoy haciendo:

rvecs <- rep(0,100000) 
library(metRology)
for (i in 1:2) {
  rvecs <- rvecs+rt.scaled(100000,
                         mean=t.fit$estimate[1],
                     sd=t.fit$estimate[2],
                         df=t.fit$estimate[3]) }

VaRsim =  quantile(rvecs,alpha);VaRsim

Con resultado:

        5% 
-0.01659703 

No sé si mi simulación es correcta ya que el resultado (de Monte Carlo no es exactamente el mismo). Tampoco sé si mi metodología es correcta.

¿Alguna ayuda?

2voto

xrost Puntos 129

De su declaración,

ahora si estoy tan a la derecha, quiero simular el valor en riesgo para un día antes por lo que estoy haciendo:

parece que quieres pronosticar el Valor en Riesgo y no sólo estimarlo a partir de la simulación de una distribución t de los estudiantes. Si desea prever su VaR paramétrico de Monte Carlo, puede seguir el marco descrito a continuación.

En general Estoy confundido acerca de su bucle for, ya que parece redundante. Si quiere verificar que ha hecho sus cálculos correctamente y así volver a simular los retornos de un $t$ -distribución mediante rt.scaled Si no es así, es necesario simular un número mucho mayor de muestras, por ejemplo, alrededor de 2 millones de muestras.


Previsión del VaR paramétrico de Monte Carlo:

La idea de prever el VaR paramétrico de Monte Carlo sobre la base de un modelo $f(\theta)$ se encuentra en la simulación de una gran muestra de rendimientos ( o pérdidas logarítmicas ) del modelo "previsto", $f(\theta_{t\vert t-1})$ y luego estimar el $\alpha$ -cuantil en sus datos simulados. Aquí $\theta_{t\vert t-1}$ denota los parámetros condicionales para el tiempo $t$ dada la información disponible en el momento $t-1$ y es ( generalmente ) lo único que cambia recursivamente de un día para otro. A continuación se describe un marco general.

Marco de trabajo:

1. Convierta sus series de precios en logaritmos de retorno ( o pérdidas logarítmicas ).

2. A partir de esto, estimar los parámetros del modelo $\theta_{t\vert t-1}$ utilizando la información disponible hoy en día (aka. $\mathcal{F}_{t-1}$ ) a través de, por ejemplo, una ventana móvil o una ventana en expansión. A continuación se dan ejemplos:

  • Ventana móvil: Con una longitud de ventana de 1.000 y una serie de retorno logarítmico de $r_1,\ldots, r_{2000}$ Utiliza los primeros 1000 puntos de datos para estimar $\hat{\theta}_{1001 \vert 1000}$ y utilice los parámetros estimados en su modelo, $f(\hat{\theta}_{1001 \vert 1000})$ para simular una gran muestra de rendimientos logarítmicos. En el momento $t=1001$ estimar los parámetros de la serie $\{r_2,\ldots,r_{1001}\}$ manteniendo así la longitud de la ventana fija y utilizar estos parámetros para simular una gran muestra de rendimientos logarítmicos. Esto se hace de forma recursiva.

  • Ventana expansiva: Sigue casi la misma idea que un ventana móvil en lugar de fijar la longitud de la ventana, la aumentamos gradualmente: para el tiempo $t=1000$ estimación de $\{r_1,\ldots,r_{1000}\}$ , para $t=1001$ hacer $\{r_1,\ldots, r_{1001}\}$ y así sucesivamente.

3. Para cada día, encuentre el día de antelación $VaR_{t\vert t-1}(\alpha)$ previsión como la $\alpha$ -cuantil en los datos simulados , es decir. $VaR_{t\vert t-1}(\alpha) = F^{-1}_\alpha(\theta_{t \vert t-1})$ . En su caso, $F^{-1}_\alpha(\mu_{t \vert t-1}, \sigma_{t\vert t-1})$ es la función cuantil de una distribución t de Student, donde $\mu$ y $\sigma$ denota, respectivamente, el parámetro de escala y de localización.


Si desea evaluar el rendimiento del VaR fuera de la muestra puede utilizar los índices de fracaso o las pruebas de cobertura incondicional y condicional ( véase, por ejemplo, la sección de previsiones de este documento ).

Ilustración de código para mover y expandir la ventana:

El código siguiente ilustra el movimiento y la expansión de la ventana . En ambos bucles for estimamos los parámetros de la distribución t de Students, donde el primer bucle for ( la ventana móvil ) mantiene la longitud de la ventana fija en 500 y la segunda ( la ventana en expansión ) aumenta la longitud de la ventana en 1 en cada iteración. Te animo a que lo mires y te hagas una idea de cómo funciona. Espero que sea de ayuda.

#your own code, extended data from 2016 till 2019
library(quantmod) 
getSymbols("WILL5000IND",src="FRED") 
wilsh <- na.omit(WILL5000IND)
wilsh <- wilsh["2016-01-01/2019-12-31"] 
n=length(wilsh)
logret <- diff(log(wilsh))[-1] * 100

#initialize window length and matrices:
win_length <- 500
est_pars_moving <- matrix(0, ncol = 3, nrow = n - window_length)
est_pars_expanding <- matrix(0, ncol = 3, nrow = n - window_length)

#Moving window estimation:
for(i in (win_length+1):n){

  est_pars_moving[(i-win_length), ]<-fitdistr(rvec[(i- win_length):(i-1)], "t")$estimate

}

#Expanding window estimation:
for(i in (win_length+1):n){

  est_pars_expanding[(i-win_length), ] <- fitdistr(rvec[1:(i-1)], "t")$estimate

}

0 votos

Tu respuesta es muy clara y útil.¿Puedes demostrar estas dos estimaciones de windons (en movimiento y en expansión) en R para tener una mejor comprensión de cómo se está implementando?

0 votos

@HungryHomer He añadido una sección adicional que ilustra la ventana en movimiento y en expansión en R . Es usted quien debe basarse en el código y en el marco anterior para obtener las previsiones del VaR.

0 votos

¿Para obtener el VaR en la previsión puedo simplemente codificar `` quantile(est_pars_moving ,alpha)``? Parece que estás haciendo una estimación tipo backtesting al modelo de Montecarlo, ¿estoy en lo cierto?

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