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
}