2 votos

Evaluación del modelo GARCH fuera del tiempo

He ajustado dos modelos GARCH que compiten entre sí, uno GARCH(1,2) modelo y otro EGARCH(1,1,1) ambos con errores distribuidos en t, sobre los rendimientos logarítmicos de EquinorASA (acciones de gas noruegas). No voy a realizar las comprobaciones preliminares, pero los supuestos de GARCH(1,2) aguantar.

He utilizado el conocido libro de Kevin Shepard arco biblioteca. Para seleccionar el modelo, me gustaría dividir la serie temporal en tren/prueba (esto se hace fácilmente con TimeSeriesSplit de sklearn ).

Para simplificar, vamos a considerar sólo el GARCH(1,2) modelo.

Esto es un extracto del código:

logr_train, logr_test = logr[train_index], logr[test_index]
N_train = len(train_index)
N_test = len(test_index)

specs = {
            'mean':'zero',
            'vol':'GARCH',
            'p':1,
            'q':2,
            'dist':'t',
            'rescale':True
}

model = arch_model(y=logr_train, **specs)
res = model.fit(first_obs=0, last_obs=len(logr_train))
forecast = res.forecast(horizon=N_test, method='simulation', simulations=1000, reindex=False)

Esta es la impresión del resumen:

Fit Summary

El dilema : qué ¿comparamos realmente entre el tren y la prueba?

¿Qué he considerado hasta ahora?

  1. Volatilidad empírica de los rendimientos logarítmicos de prueba frente a la expectativa de volatilidad simulada Esto sería simplemente:

    forecast.variance.shape # second dimension is the same as size of test time-series (1, 499) np.sqrt(forecast.variance.values[0][-1]) # this is slicing the last value of the simulations (when it converges) 1.6180795243550963 np.std(logr_test) 100 1.1331922351104446 error = np.sqrt(forecast.variance.values[0][-1]) - np.std(logr_test) 100 error 0.4848872892446516

  2. ¿Hay alguna forma de recuperar de alguna manera los retornos de los registros?

Desde GARCH(1,2) se define como: $$ X_{t} = \sigma_{t}Z_{t} \\ Z_{t} \sim N(0,1) \\ \sigma_{t}^{2} = \alpha_{0} + \alpha_{1}X^{2}_{t-1} + \beta_{1}\sigma^{2}_{t-1} + \beta_{2}\sigma^{2}_{t-2} $$

Dados los parámetros estimados, ¿podría haber una forma de calcular previsto $\hat{X_{t+n}}^{2}$ y luego calcular el error entre éste y los rendimientos logarítmicos de $X_{t+n}$ de la muestra de ensayo?

Ya he revisado las preguntas y respuestas aquí para " evaluación de los modelos garch " y " Modelo GARCH, ¿expectativa de volatilidad? ", en vano.

2voto

TweakFix Puntos 449

Supongamos que usted observa $T$ retornos, entonces elija algún $T_1<T$ y haz lo siguiente:

  1. Estime su modelo en $r_1,\dots,r_{T_1}$ y utilizar sus parámetros estimados para predecir $\hat{\sigma}_{T_1+1}^2=E(\epsilon_{T_1+1}^2\vert \mathcal F_{T_1})$ .
  2. Estime su modelo en $r_1,\dots,r_{T_1+1}$ y utilizar sus parámetros estimados para predecir $\hat{\sigma}_{T_1+2}^2=E(\epsilon_{T_1+2}^2\vert \mathcal F_{T_1+1})$ .

$\quad \vdots$

  1. Estime su modelo en $r_1,\dots,r_{T_1+h-1}$ y utilizar sus parámetros estimados para predecir $\hat{\sigma}_{T_1+h}^2=E(\epsilon_{T_1+h}^2\vert \mathcal F_{T_1+h-1})$ .

Se termina con una serie temporal de $h$ previsiones con un paso de antelación. Ahora, se quiere comparar estas previsiones con los correspondientes valores "verdaderos" de $\sigma_t^2$ . Sin embargo, $\sigma_t^2$ no es directamente observable, ya que sólo se observan los precios o los rendimientos que se pueden calcular a partir de ellos. Por lo tanto, para hacer un backtest de su modelo, tiene que pensar en una estimación de $\sigma_t^2$ . Resulta que hay varias formas de hacerlo, pero depende en gran medida de los datos disponibles.

Por ejemplo, el enfoque más fácil -pero también problemático- es utilizar los errores al cuadrado $\epsilon_t^2$ como una estimación para $\sigma_t^2$ , es decir, comparas $\epsilon_{t+h}^2$ avec $\hat{\sigma}_{t+h}^2$ . Aunque este estimador es insesgado, resulta que es un estimador muy ruidoso de la "verdadera" volatilidad. El uso de este estimador suele llevar a la conclusión de que los modelos GARCH tienen un mal rendimiento fuera de la muestra. Una explicación intuitiva de este caso es la siguiente. Supongamos que \begin{align} r_t&=\mu_t+\epsilon_t\\ \epsilon_t&=\sigma_tu_t \quad, u_t \overset{iid}{\sim} \mathcal N (0,1) \end{align} entonces \begin{align} P\left(\epsilon_t^2 \notin \left[\frac{1}{3}\sigma_t^2,\frac{2}{3}\sigma_t^2\right]\right)&=P\left(\sigma_t^2u_t^2 \notin \left[\frac{1}{3}\sigma_t^2,\frac{2}{3}\sigma_t^2\right]\right)\\ &=1-P\left(\sigma_t^2u_t^2 \in \left[\frac{1}{3}\sigma_t^2,\frac{2}{3}\sigma_t^2\right]\right)\\ &=1-P\left(u_t^2 \in \left[\frac{1}{3},\frac{2}{3}\right]\right)\\ &=0.7411 \end{align} Donde la última línea se desprende del hecho de que $u_t^2 \sim \chi^2(1)$ . Es decir, con una probabilidad del 74% su estimador de $\sigma_t^2$ estará fuera del intervalo $\left[\frac{1}{3}\sigma_t^2,\frac{2}{3}\sigma_t^2\right]$ .

En resumen, su pregunta se reduce a dos cuestiones:

  1. ¿Cómo puedo estimar $\sigma_t^2$ en un sentido razonable? La respuesta es a través de los estimadores de volatilidad realizada que se basan en datos intradía. Para más detalles, los documentos que se indican a continuación son muy útiles.
  2. ¿Qué método de evaluación de previsiones debo utilizar? No hay una respuesta general a esta pregunta, pero depende del objetivo de su análisis. Por ejemplo, puede utilizar el RMSE $$ RMSE=\sqrt{\frac{1}{h}\sum_{i=1}^h(\tilde{\sigma}_{t+i}^2-\hat{\sigma}_{t+i}^2)^2} $$ Donde $\tilde{\sigma}_{t+i}^2$ es el estimador elegido para $\sigma_t^2$ . Sin embargo, si la falta de predicción es una preocupación, una función de pérdida asimétrica tendría más sentido.

Más bibliografía

  1. Poon, Granger 2003: Forecasting Volatility in Financial Markets: A Review, Journal of Economic Literature
  2. Andersen, Bollerslev, Lange (2001): Previsión de la volatilidad de los mercados financieros: Muestra frecuencia de la muestra frente al horizonte de previsión, Journal of Empirical Finance
  3. Andersen, Bollerslev (1998): Answering the Skeptics Yes, Standard Volatility Models do Provide Accurate Forecasts, International Economic Review

2voto

Nilo Puntos 6

Un modelo GARCH es un modelo no sólo para la varianza condicional sino para toda la distribución condicional de una variable aleatoria de interés. Para evaluar el modelo adecuación estadística fuera de la muestra, se utilizaría la validación cruzada de series temporales a través de ventanas móviles o de expansión como se describe en la respuesta de Lars. A continuación, se observarán las innovaciones estandarizadas de un paso adelante $\hat z_{t+1}$ . Es decir, usted tomaría la realización real $x_{t+1}$ , reste la media condicional prevista $\hat\mu_{t+1}$ y luego dividir el resultado por la desviación estándar condicional prevista $\hat\sigma_{t+1}$ : $\hat z_{t+1} := \frac{ x_{t+1} - \hat\mu_{t+1} }{ \hat\sigma_{t+1} }$ . Deben ser i.i.d. con media=0 y varianza=1 y seguir la distribución que haya asumido al especificar el modelo (por ejemplo, la de Student $t$ distribución).
No creo que haya ninguna prueba que compruebe todas estas propiedades a la vez. Lo que se haría normalmente es examinarlas una por una. (Desgraciadamente, todas las pruebas que recuerdo dependen de que alguna de estas suposiciones sea cierta para comprobar una sola de ellas. Por lo tanto, estrictamente hablando, no hay forma de probarlas correctamente).

  • Para la i.i.d.'ness, usted miraría la función de autocorrelación y la función de autocorrelación parcial de los residuos estandarizados y sus cuadrados. Las pruebas formales podrían ser las de Ljung-Box (aunque véase ce ) y Li-Mak (no ARCH-LM en $\hat z_{t+1}$ y no Ljung-Box en $\hat z_{t+1}^2$ ).
  • Para la distribución asumida, se obtendría la transformada integral de probabilidad de los residuos estandarizados y se compararía con una distribución Uniforme[0,1] utilizando, por ejemplo, la prueba de Kolmogorov-Smirnov.

Para evaluar el modelo de rendimiento en económico o monetario términos, habría que idear una función de pérdida que se aplicara a los errores de predicción $e_{t+1}=\hat x_{t+1}-x_{t+1}$ (De manera más general, la pérdida podría definirse en el par de predicción $\hat x_{t+1}$ y la correspondiente realización real $x_{t+1}$ en lugar de $e_{t+1}$ pero a menudo puede bastar con fijarse en la diferencia entre ambos). Tendría que asegurarse de que las predicciones de puntos se realizan de acuerdo con la función de pérdida de evaluación. Por ejemplo, si la función de pérdida de evaluación es la pérdida absoluta, no se predeciría la media condicional, sino la mediana condicional.

Para más detalles sobre la adecuación estadística y los resultados económicos/monetarios, consulte Elliott & Timmermann "Previsión económica" (2016), especialmente los capítulos 2, 13 y 18. (También he escrito algunas respuestas relacionadas en Cross Validated; empezar aquí e introduzca frases de búsqueda adicionales para afinar la búsqueda).

*En el caso de que realmente esté interesado directamente en la varianza condicional en lugar de la realización de la variable aleatoria (es decir, el rendimiento real), utilizaría $(\sigma_{t+1}^2,\hat\sigma_{t+1}^2)$ en lugar de $(x_{t+1},\hat x_{t+1})$ y definir los errores de predicción en consecuencia.

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