Estoy ajustando numéricamente un proceso AR(1)/GARCH(1,1) a los retornos logarítmicos de índices y acciones, rt=log(Pt/Pt−1) , donde Pt 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: rt=μ+ϕ(rt−1−μ)+ϵt
Rachev et al: rt=μ+ϕrt−1ϵt=σtδt(δt is an innovation)σt=√α0+α1ϵ2t−1+β1σ2t−1
Brummelhuis & Kaufman: Xt=μt+σtϵtμt=λXt−1σt=√α0+α1(Xt−1−μt−1)2+β1σ2t−1
Jalal & Rockinger: μt=ϕXt−1ϵt=Xt−μtσt=√α0+α1ϵ2t−1+β1σ2t−1
Mi enfoque:
μt=μ+ϕrt−1ϵt=rt−μtσt=√α0+α1ϵ2t−1+β1σ2t−1
Dadas las múltiples descripciones anteriores, mi interpretación para un algoritmo sería:
Algoritmo para AR(1)/GARCH(1,1):
-
Inicializar μ=0 , σ1=1 , ϵ1=0 , μ=ϕ=α0=α1=β1=U(0,1)∗0.01
-
Para t = 2 a T :
-
μt=μ+ϕrt−1(Log-returns lag-1 input here)
-
ϵt=rt−μt(Log-returns lag-0 input here)
-
σt=√α0+α1ϵ2t−1+β1σ2t−1
-
ˆrt=ϕμt−1+σtϵtOR:ˆrt=μ+ϕμt−1+σtϵt???
-
Siguiente t
-
Calcula el residuo, et=rt−ˆrt
-
Determinar MSE=1T∑te2t
El algoritmo propuesto anteriormente es esencialmente la parte recursiva para calcular los rendimientos logarítmicos previstos ˆrt a partir de los rendimientos observados de entrada rt . Innovaciones o cuantiles aleatorios de una distribución de probabilidad [como N(0,1) o t(ν) 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=1T∑tet 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 (μ,ϕ,α0,α1,β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= μ
ar1= ϕ
garch0= α0
garch1= α1
garch2= β1
No estoy seguro de si la media incondicional μ 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.
2 votos
¿Alguien sabe por casualidad cómo puedo codificar este loglike en MATLAB, hay alguna función que pueda utilizar, etc.?
0 votos
Tendrías que implementar algún tipo de método de maximización en MATLAB, quizás un método libre de derivadas. O eso, o tomar las derivadas parciales de loglik por ejemplo σt y ϵt , poner a cero, y luego iterar. Busque maximización de funciones sin derivadas en MATLAB. Si puede acceder a los métodos de algoritmo genético (AG) para MATLAB, entonces trate loglik como la aptitud, y asegurarse de que aumenta con el aumento de iteraciones.