Quant500 Academy

6. Heterocedasticidad condicional y modelos ARCH(p)

Nivel 9: Series Temporales - ARIMA y GARCH

Llegamos a la parte que de verdad importa en finanzas. Todo lo anterior modela la media condicional de la serie. Ahora vamos a modelar su varianza condicional.

Un conjunto de variables aleatorias es heterocedástico si existen subgrupos dentro del conjunto con una varianza distinta de la del resto. La motivación principal para estudiar la heterocedasticidad condicional en finanzas es la volatilidad de los retornos de los activos.

El mecanismo económico que describe el profesor es concreto: en renta variable, un incremento de la varianza puede estar correlacionado con un incremento posterior de la varianza. En un día en el que la bolsa cae con fuerza se disparan órdenes automáticas de gestión de riesgo en carteras que solo están largas; esas ventas provocan nuevas caidas de precio en esas mismas carteras, generando una volatilidad bajista significativa.

Estos periodos de liquidación producen una heterocedasticidad que está correlacionada en serie y por tanto condicionada a periodos de varianza elevada. A eso lo llamamos series condicionalmente heterocedásticas.

Y aquí está el aspecto más traicionero: la ACF de una serie con volatilidad cambiante puede parecer perfectamente la de un ruido blanco estacionario, a pesar de que su varianza condicional cambia de forma sistemática en el tiempo: la serie puede seguir siendo estacionaria en sentido débil, con varianza incondicional constante, y presentar aun así heterocedasticidad condicional. Si solo miras la ACF de los retornos, no ves nada. La solución es mirar la ACF de los retornos al cuadrado.

Para incorporar la heterocedasticidad condicional creamos un modelo que aplica un proceso autorregresivo a la varianza misma, usando valores pasados de la varianza. Esa es la base del modelo autorregresivo con heterocedasticidad condicional, o ARCH.

Un ARCH(p) puede entenderse como un AR(p) aplicado a la varianza de una serie temporal:

# ARCH(p), en palabras y como codigo:
#
# varianza en t = alpha_0 + alpha_1*(e[t-1]**2) + ... + alpha_p*(e[t-p]**2)
#
# y la serie observada es:
# e[t] = w[t] * sqrt(alpha_0 + alpha_1*e[t-1]**2 + ... + alpha_p*e[t-p]**2)
#
# Para ARCH(1):
# e[t] = w[t] * sqrt(alpha_0 + alpha_1*e[t-1]**2)

Simulación de un ARCH(1):

np.random.seed(13)

a0 = 2
a1 = 0.5

y = w = np.random.normal(size=1000)
for t in range(len(y)):
    y[t] = w[t] * np.sqrt(a0 + a1 * y[t-1]**2)

tsplot(y, lags=30)      # parece ruido blanco puro
tsplot(y**2, lags=30)   # la ACF y la PACF del cuadrado son significativas en el retardo 1

Esta es la lección visual central del módulo: la serie parece ruido blanco, pero al graficar su cuadrado, la ACF y la PACF muestran significación en el retardo 1, lo que indica que un AR(1) sobre la varianza puede ser apropiado.

¿Cuándo aplicar un ARCH(p)? Igual que decidíamos el orden de un AR mirando el decaimiento de la ACF de la serie, aplicamos la misma lógica al cuadrado de los residuos. Si podemos ajustar un AR(p) a esos residuos al cuadrado, tenemos indicio de que un proceso ARCH(p) es apropiado.

Tres condiciones que no son opcionales:

Ese orden (primero la media con ARIMA, luego la varianza con ARCH o GARCH) es el esqueleto de la estrategia del último módulo.

Para ampliar esta lección

El resto de Quant500

Lo que estás aprendiendo, aplicado al índice todos los días:

La cartera del modelo, cada semana en tu correo

Cada sábado, su semana en un minuto: cómo fue, lo mejor y lo peor, y qué directivos compraron con su dinero. Y el día que el modelo se rehace, qué entra y qué sale. Es una simulación, no un consejo. Como mucho un correo a la semana, sin publicidad y sin cuenta; te das de baja con un clic. Lo hace una persona: Pol Gracia.

Cartera modelo con resultados simulados, no una recomendación personalizada. Tu correo se usa solo para esto: privacidad.

Detrás de la Academia y del resto de Quant500 hay una sola persona: Pol Gracia Serrahima.