25 votos

Algoritmo para ajustar el modelo AR(1)/GARCH(1,1) de los rendimientos logarítmicos

Estoy ajustando numéricamente un proceso AR(1)/GARCH(1,1) a los retornos logarítmicos de índices y acciones, $r_t=\log(P_t/P_{t-1})$ , donde $P_t$ es el precio en el momento $t$ y hasta ahora no tengo claro dónde se utilizarían los rendimientos logarítmicos observados en un algoritmo. Varios grupos de autores han descrito (algunos en parte) los componentes del enfoque AR(1)/GARCH(1,1), por ejemplo:

E. Zivot: $$ r_t=\mu + \phi (r_{t-1} - \mu ) + \epsilon_t $$

Rachev et al: $$ \begin{split} r_t&=\mu+\phi r_{t-1}\\ \epsilon_t&=\sigma_t \delta_t \quad \quad (\delta_t \textrm{ is an innovation})\\ \sigma_t &= \sqrt{\alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2}\\ \end{split} $$

Brummelhuis & Kaufman: $$ \begin{split} X_t&=\mu_t+ \sigma_t \epsilon_t\\ \mu_t&=\lambda X_{t-1}\\ \sigma_t &= \sqrt{\alpha_0 + \alpha_1 (X_{t-1}-\mu_{t-1})^2 + \beta_1 \sigma_{t-1}^2}\\ \end{split} $$

Jalal & Rockinger: $$ \begin{split} \mu_t&=\phi X_{t-1}\\ \epsilon_t &=X_t - \mu_t\\ \sigma_t &= \sqrt{\alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2}\\ \end{split} $$

Mi enfoque:

$$ \begin{split} \mu_t&=\mu+\phi r_{t-1}\\ \epsilon_t&=r_t - \mu_t\\ \sigma_t &= \sqrt{\alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2}\\ \end{split} $$

Dadas las múltiples descripciones anteriores, mi interpretación para un algoritmo sería:

Algoritmo para AR(1)/GARCH(1,1):

  1. Inicializar $\mu=0$ , $\sigma_1 = 1$ , $\epsilon_1=0$ , $\mu=\phi=\alpha_0=\alpha_1=\beta_1=U(0,1)* 0.01$

  2. Para $t$ = 2 a $T$ :

  3. $\quad \mu_t = \mu + \phi r_{t - 1}\quad \quad (\textrm{Log-returns lag-1 input here})$

  4. $\quad \epsilon_t = r_t - \mu_t \quad \quad (\textrm{Log-returns lag-0 input here})$

  5. $\quad \sigma_t= \sqrt{\alpha_0 + \alpha_1 \epsilon_{t-1}^ 2 + \beta_1 \sigma_{t - 1} ^ 2}$

  6. $\quad \hat{r}_t = \phi \mu_{t - 1} + \sigma_t \epsilon_t \quad \quad \textrm{OR}: \hat{r}_t = \mu + \phi \mu_{t - 1} + \sigma_t \epsilon_t \quad \quad ???$

  7. Siguiente $t$

  8. Calcula el residuo, $e_t=r_t-\hat{r}_t$

  9. Determinar $MSE=\frac{1}{T}\sum_t e_t^2$

El algoritmo propuesto anteriormente es esencialmente la parte recursiva para calcular los rendimientos logarítmicos previstos $\hat{r}_t$ a partir de los rendimientos observados de entrada $r_t$ . Innovaciones o cuantiles aleatorios de una distribución de probabilidad [como N(0,1) o $t(\nu)$ no se emplearía aquí, ya que estamos ajustando un modelo, no simulando. Durante cada iteración, la bondad de ajuste basada en los parámetros propuestos para la función objetivo se basaría en $MSE=\frac{1}{T}\sum_t e_t$ que se minimizaría a través de una técnica de optimización mediante regresión no lineal, diferenciación finita o MLE. También podría utilizarse la metaheurística, en la que la inicialización de los valores de los cromosomas (partículas) para $(\mu,\phi,\alpha_0,\alpha_1,\beta_1)$ se produciría en la primera generación.

En términos de comparación de resultados basados en R, MATLAB, SAS, etc. la parametrización sería:

mu= $\mu$

ar1= $\phi$

garch0= $\alpha_0$

garch1= $\alpha_1$

garch2= $\beta_1$

No estoy seguro de si la media incondicional $\mu$ Sin embargo, sería necesario en la línea 6 del algoritmo. Por favor, comente si el algoritmo es correcto, y posiblemente sugiera cambios en la codificación. Una vez más, el objetivo es utilizar algoritmicamente métodos numéricos para resolver los parámetros, no R, MATLAB, o SAS, etc.

3 votos

Buen post Muy útil.

5 votos

Hola PEL, ¿podrías dividir este post en una pregunta y una respuesta? Ahora la pregunta parece no tener respuesta cuando en realidad sí la tiene.

3 votos

En la primera línea de la fórmula de Rachev parece faltar un término de error.

5voto

SOLUCIÓN: Sea $r_t$ sea el rendimiento logarítmico en el momento $t$ y $\hat{r}_t$ el rendimiento logarítmico previsto del modelo de regresión.

  1. Inicializar $loglik(0:T)=0$ , $\epsilon_1=0$ , $\sigma_1 = 0$ , $\mu=U(0,1)*0.0001,\phi=U(0,1)*0.01$ , $\alpha_0=U(0,1)*0.00002,\alpha_1=U(0,1)*0.01,\beta_1=0.9 + U(0,1)* 0.01$ , $B=10,000$
  2. Para $b$ = 1 a $B$
  3. $\quad$ Para $t$ = 2 a $T$ :
  4. $ \quad\quad \hat{r}_t = \mu + \phi r_{t - 1}$
  5. $ \quad\quad \epsilon_t = r_t - \hat{r}_t$
  6. $ \quad\quad \sigma^2_t = \alpha_0 + \alpha_1 \epsilon_{t-1} ^ 2 + \beta_1 \sigma_{t-1} ^ 2$
  7. $\quad$ Siguiente $t$
  8. $\quad loglik_b = \sum_t^T \left\{ - \frac{1}{2} \log(\sigma^2_t) - \frac{1}{2}\epsilon_t^2 / \sigma^2_t \right\} $
  9. Siguiente $b$

En cada iteración $b$ el valor de la función log-verosimilitud ( $loglik_b$ ), que debe maximizarse sobre el $B$ iteraciones, es decir, asegurarse de que aumenta durante las iteraciones.

Resultados de los parámetros tras $B=10,000$ iteraciones:

$\mu=0.000745264$

$\phi=-0.110093524$

$\alpha_0=0.00000401$

$\alpha_1=0.117396192$

$\beta_1=0.849342676$

A continuación se muestra un gráfico de la volatilidad ajustada del índice SP500 (Yahoo ^GSPC), $\sigma_t$ , para las fechas comprendidas entre el 1/2/2001 y el 31/10/2013. La crisis de las hipotecas subprime en 2008 y el techo de deuda en 2011 son muy visibles.

Fitted SP500 volatility, $\sigma_t$, from 2001 to 2013

Además, a continuación se muestra un gráfico de los rendimientos logarítmicos observados (de entrada) (azul), $r_t$ y los rendimientos previstos filtrados por GARCH (rojo), $\hat{r}_t$ que revela que se ha eliminado la agrupación por volatilidad. GARCH-filtered SP500 log-returns

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