---
title: "1.6.2 Hechos estilizados de las rentabilidades"
description: "Colas gruesas, agrupamiento de volatilidad, autocorrelación débil y efecto apalancamiento: cómo medirlos en Python y qué implican para un sistema."
url: "https://pythonparatrading.com/curso-python-trading/nivel-1/hechos-estilizados-de-los-mercados/"
lang: "es"
image: "https://pythonparatrading.com/og/curso-python-trading/nivel-1/hechos-estilizados-de-los-mercados.png"
---

# 1.6.2 · Hechos estilizados: colas gruesas, agrupamiento, autocorrelación y apalancamiento

> Las rentabilidades de casi cualquier mercado comparten unas pocas regularidades: días extremos mucho más frecuentes de lo que dice la normal, calma y agitación que vienen en rachas, casi ninguna memoria en la dirección y más volatilidad después de las caídas. Esta lección las mide una a una y explica qué rompen en un backtest.

- Curso: [Nivel 1: Datos financieros, mercados y análisis](https://pythonparatrading.com/curso-python-trading/nivel-1/)
- Módulo: 1.6 · Análisis exploratorio financiero
- Duración: 55 min
- Requisitos: [0.7.2 · Probabilidad y distribuciones, correlación frente a causalidad y regresión simple](https://pythonparatrading.com/curso-python-trading/nivel-0/probabilidad-distribuciones-y-regresion/), [1.6.1 · Rentabilidades, volatilidad, correlaciones móviles y drawdown](https://pythonparatrading.com/curso-python-trading/nivel-1/volatilidad-correlaciones-y-drawdown/)

## Al terminar esta lección

- Medir las colas de una serie de rentabilidades: curtosis, frecuencia de días extremos frente a la normal, cuantiles e índice de cola de Hill.
- Distinguir la autocorrelación de las rentabilidades (débil) de la de su valor absoluto (fuerte y persistente) con la ACF y el contraste de Ljung-Box.
- Medir el efecto apalancamiento: la volatilidad futura según el signo y el tamaño de la rentabilidad de hoy.
- Saber qué parte de cada hecho sale del modelo que generó los datos y qué implica cada uno para el riesgo y la validación.

## Cuatro regularidades

Un **hecho estilizado** es una regularidad estadística que aparece en las rentabilidades de muchos activos, mercados y
épocas, aunque los detalles cambien. Cont (2001) los recoge en un catálogo que es la referencia clásica[^1]. Esta
lección mide los cuatro que más condicionan un sistema de trading:

```mermaid
flowchart TB
  H[Hechos estilizados] --> C[Colas gruesas]
  H --> A[Agrupamiento]
  H --> D[Autocorr. débil]
  H --> L[Apalancamiento]
  C --> R1[VaR y stops]
  A --> R2[Sizing por vol]
  D --> R3[Señales frágiles]
  L --> R4[Riesgo asimétrico]
```

La lección 0.7.2 ya comparó las colas de un ETF ficticio con la normal y con una t de Student. Aquí se usan los dos
índices del nivel 1, ISX y FIX, con siete años de sesiones de la NYSE, y se mide cada hecho con la herramienta que le
corresponde.

<aside class="callout" data-kind="aviso">

Los datos son sintéticos. ISX y FIX salen de un modelo (un GJR-GARCH con innovaciones t de Student sobre una
tendencia con fechas fijas) que **incluye a propósito** estos cuatro hechos. Que aparezcan aquí no prueba nada sobre los
mercados: enseña a medirlos. En un activo real, las cifras serán otras y hay que calcularlas en sus datos.

</aside>

```python
import numpy as np
import pandas as pd
from scipy import stats

isx = pd.read_csv("etf_indice_diario.csv", parse_dates=["fecha"],
                  index_col="fecha")["indice"]
fix = pd.read_csv("fix_indice_diario.csv", parse_dates=["fecha"],
                  index_col="fecha")["indice"]
r = np.log(pd.DataFrame({"ISX": isx, "FIX": fix})).diff().dropna()

xsn = pd.read_parquet("xsn_1h.parquet").set_index("ts")["spot"]
r_xsn = np.log(xsn.resample("D").last()).diff().dropna()
uni = pd.read_parquet("universo_precios.parquet").pivot(
    index="fecha", columns="ticker", values="cierre")
ru = np.log(uni).diff()

def resumen(s):
    return {"n": s.count(), "asimetria": s.skew(),
            "curtosis_exceso": s.kurt()}

tabla = {c: resumen(r[c]) for c in r}
tabla["XSN (cripto, diario)"] = resumen(r_xsn)
tabla["Universo (mediana de 57)"] = {
    "n": ru.count().median(), "asimetria": ru.skew().median(),
    "curtosis_exceso": ru.kurt().median()}
pd.DataFrame(tabla).T.round(2)
```
```output
                               n  asimetria  curtosis_exceso
ISX                       1759.0       0.19             6.65
FIX                       1759.0      -0.28             8.54
XSN (cripto, diario)       730.0      -0.01             2.43
Universo (mediana de 57)  2765.0       0.02             0.59
```

ISX y FIX tienen una curtosis en exceso de 6,7 y 8,5: muy lejos del 0 de la normal. Las otras dos filas son la
advertencia del aviso: el token XSN y los 57 valores del universo salen de otros modelos del generador del curso, con
colas más finas (2,4 en XSN) o casi normales (0,6 de mediana en el universo). Los hechos estilizados de unos datos sintéticos son
los que su autor decidió poner. En el resto de la lección se usan ISX y FIX.

## Colas gruesas

La curtosis resume las colas en un número, y es un número inestable (se verá más abajo). Lo que importa para el riesgo
es más directo: cuántos días extremos hay frente a los que predice una normal con la misma media y desviación típica.

```python
filas = {}
for c in r:
    z = (r[c] - r[c].mean()) / r[c].std()
    for k in (3, 4, 5):
        esperados = len(z) * 2 * stats.norm.sf(k)
        filas[(c, k)] = {"observados": int((z.abs() > k).sum()),
                         "normal": esperados,
                         "veces": (z.abs() > k).sum() / esperados}
pd.DataFrame(filas).T.round(3)
```
```output
       observados  normal     veces
ISX 3        35.0   4.749     7.370
    4        14.0   0.111   125.651
    5         8.0   0.001  7933.043
FIX 3        24.0   4.749     5.054
    4        12.0   0.111   107.701
    5         9.0   0.001  8924.674
```

En ISX hay 35 días a más de tres desviaciones típicas de la media donde la normal espera 4,7; 14 a más de cuatro donde
espera 0,11, y 8 a más de cinco donde espera una milésima. Cuanto más lejos en la cola, mayor el error de la normal:
siete veces en ±3σ, más de cien en ±4σ, miles en ±5σ.

Los **cuantiles** lo enseñan de otra forma. Si las rentabilidades fueran normales, el cuantil del 1 % de las
estandarizadas sería −2,33; el del 0,1 %, −3,09:

```python
z = (r["ISX"] - r["ISX"].mean()) / r["ISX"].std()
p = [0.001, 0.01, 0.05, 0.25, 0.5, 0.75, 0.95, 0.99, 0.999]
pd.DataFrame({"normal": stats.norm.ppf(p),
              "ISX": z.quantile(p).to_numpy()},
             index=[f"{100 * q:g} %" for q in p]).round(2)
```
```output
        normal   ISX
0.1 %    -3.09 -5.56
1 %      -2.33 -2.62
5 %      -1.64 -1.46
25 %     -0.67 -0.44
50 %      0.00 -0.01
75 %      0.67  0.41
95 %      1.64  1.50
99 %      2.33  3.25
99.9 %    3.09  5.44
```

La figura de la cabecera dibuja esta comparación completa (un gráfico cuantil-cuantil): si ISX fuera normal, los puntos
estarían sobre la diagonal. En el centro casi lo están; en los extremos se separan. Y hay un detalle menos visible: en
el centro, los cuantiles del 25 y el 75 % de ISX están **más cerca** de cero que los de la normal (−0,44 y 0,41 frente a
±0,67), mientras que el del 0,1 % está en −5,56 en lugar de −3,09. Una distribución de colas gruesas con la misma desviación típica tiene más días tranquilos y más días extremos;
le faltan los intermedios.

### El índice de cola

Las colas de las rentabilidades se parecen más a una ley de potencia que a la cola exponencial de la normal: la
probabilidad de una pérdida mayor que x cae como x^(−α). El **estimador de Hill** estima α con las k pérdidas más
grandes:

$$
\hat{\alpha} = \left(\frac{1}{k}\sum_{i=1}^{k} \ln\frac{x_{(i)}}{x_{(k+1)}}\right)^{-1}
$$

donde x₍₁₎ ≥ x₍₂₎ ≥ … son las pérdidas ordenadas de mayor a menor.

```python
def hill(perdidas, k):
    x = np.sort(perdidas[perdidas > 0])[::-1]
    return 1 / np.mean(np.log(x[:k] / x[k]))

for c in r:
    est = {k: round(float(hill(-r[c].to_numpy(), k)), 2)
           for k in (25, 50, 100, 200)}
    print(c, est)
```
```output
ISX {25: 2.99, 50: 2.69, 100: 2.25, 200: 1.97}
FIX {25: 2.47, 50: 3.05, 100: 2.45, 200: 1.73}
```

Con estas muestras, α sale entre 1,7 y 3,1, y depende de cuántas pérdidas se usen (k): el estimador es sensible a esa
elección y conviene mirar varios valores. La interpretación importa más que la cifra exacta: con una cola de potencia
de índice α solo existen los momentos de orden menor que α. Con α por debajo de 4, la curtosis teórica no es finita y
la muestral no se estabiliza nunca:

```python
r.groupby(r.index.year).kurt().round(2).T
```
```output
fecha  2019  2020  2021  2022  2023  2024  2025
ISX    1.40  3.07  3.24  5.31  2.88  5.39  6.39
FIX    5.07  2.84  6.87  5.46  4.34  2.24  6.00
```

De 1,4 a 6,4 en ISX y de 2,2 a 6,9 en FIX según el año. Un único número de curtosis para describir un activo dice
menos de lo que parece: un año sin días extremos tiene curtosis baja y el siguiente, con dos, altísima.

### Agregar no siempre normaliza

Al sumar rentabilidades diarias en semanales o mensuales, el teorema central del límite empuja hacia la normal y la
curtosis debería bajar. Ocurre, pero despacio y con ruido:

```python
filas = {}
for h, nombre in [(1, "diaria"), (5, "semanal"), (21, "mensual")]:
    agg = np.log(pd.DataFrame({"ISX": isx, "FIX": fix})).diff(h)
    agg = agg.dropna().iloc[::h]
    filas[nombre] = {"n": len(agg), **agg.kurt().round(2)}
pd.DataFrame(filas).T
```
```output
              n   ISX    FIX
diaria   1759.0  6.65   8.54
semanal   351.0  2.89  12.69
mensual    83.0  9.95   5.84
```

En ISX la curtosis cae de 6,7 en diario a 2,9 en semanal, pero vuelve a subir a 9,9 en mensual: con 83 meses, uno
solo (el desplome de marzo de 2020) basta para disparar la estimación. En FIX pasa al revés: sube a 12,7 en semanal y
baja a 5,8 en mensual. La agregación reduce las colas, pero las muestras
cortas de horizontes largos no permiten medirlo bien. Por eso los riesgos de cola se estudian con datos diarios o
intradía y luego se agregan con un modelo.

## Agrupamiento de volatilidad y autocorrelación débil

El segundo y el tercer hecho van juntos. La **autocorrelación** (ACF) de una serie en el retardo k es la correlación
entre la serie y ella misma k sesiones antes. Para las rentabilidades es casi nula: la dirección de ayer apenas dice
nada de la de hoy. Para su valor absoluto, que mide el tamaño del movimiento, es claramente positiva y decae despacio.

```python
from statsmodels.tsa.stattools import acf

n = len(r)
banda = 1.96 / np.sqrt(n)
res = {}
for c in r:
    a, b = acf(r[c], nlags=20), acf(r[c].abs(), nlags=20)
    res[c] = {"r_k1": a[1], "|r|_k1": b[1], "|r|_k5": b[5],
              "|r|_k10": b[10], "|r|_k20": b[20],
              "r_fuera_banda": int((np.abs(a[1:]) > banda).sum()),
              "|r|_fuera_banda": int((np.abs(b[1:]) > banda).sum())}
print(f"Banda del 95 %: ±{banda:.3f}")
pd.DataFrame(res).round(3)
```
```output
Banda del 95 %: ±0.047
                    ISX     FIX
r_k1              0.045   0.020
|r|_k1            0.248   0.294
|r|_k5            0.253   0.242
|r|_k10           0.198   0.273
|r|_k20           0.180   0.148
r_fuera_banda     3.000   4.000
|r|_fuera_banda  20.000  20.000
```

*Fig. — Autocorrelación de las rentabilidades diarias de ISX (arriba) y de su valor absoluto (abajo), retardos de 1 a 20 sesiones, con la banda del 95 % para ruido.* Dos paneles de barras. Arriba, la autocorrelación de las rentabilidades: barras pequeñas alrededor de cero, casi todas dentro de la banda sombreada de ±0,047; la del retardo 1 es 0,045. Abajo, la del valor absoluto: todas las barras entre 0,15 y 0,26, muy por encima de la banda, y la del retardo 20, destacada, todavía en 0,18.

La autocorrelación de las rentabilidades de ISX en el retardo 1 es de 0,045, justo dentro de la banda de ruido
(±0,047), y solo 3 de los 20 primeros retardos se salen de ella en ISX (4 en FIX). La de |r| está fuera de la
banda en los 20 retardos de las dos series: 0,25 en el retardo 1 y todavía 0,18 a 20 sesiones en ISX. Es el
**agrupamiento de volatilidad**: los días agitados vienen en rachas. Es lo que hace que la EWMA de la lección 1.6.1
funcione y la base de los modelos GARCH (lección 2.1.4).

El contraste de **Ljung-Box** resume los primeros retardos en un solo p-valor (hipótesis nula: ninguna
autocorrelación hasta el retardo 10):

```python
from statsmodels.stats.diagnostic import acorr_ljungbox

lb = {f"{c} {serie}": acorr_ljungbox(x, lags=[10]).iloc[0]
      for c in r for serie, x in [("r", r[c]), ("|r|", r[c].abs())]}
pd.DataFrame(lb).T.round(4)
```
```output
           lb_stat  lb_pvalue
ISX r      22.2468     0.0139
ISX |r|   808.6959     0.0000
FIX r      47.3878     0.0000
FIX |r|  1222.0450     0.0000
```

Para |r| el p-valor es cero a efectos prácticos: el agrupamiento es inequívoco. Para r, el contraste rechaza la
ausencia de autocorrelación al 5 % en las dos series. ¿Hay entonces algo que predecir en la dirección? Poco: con
autocorrelaciones de 0,05-0,10, una regla que siga la dirección de ayer se comería esa ventaja en costes (lección
1.1.5), y en estos datos esa autocorrelación sale del propio modelo (la tendencia entre fechas fijas cambia la rentabilidad
media de un tramo a otro). En datos reales pasa algo parecido: autocorrelaciones pequeñas, que cambian de signo entre periodos y que
los costes suelen anular. Un contraste significativo no es una estrategia.

El agrupamiento también se ve sin ACF, en probabilidades:

```python
x = r["ISX"]
extremo = x.abs() >= x.abs().quantile(0.9)    # decil superior
p_base = extremo.mean()
p_tras = extremo[extremo.shift(1, fill_value=False)].mean()
print(f"P(día extremo) = {p_base:.1%}")
print(f"P(día extremo | ayer extremo) = {p_tras:.1%}")
```
```output
P(día extremo) = 10.0%
P(día extremo | ayer extremo) = 24.4%
```

Uno de cada diez días está en el decil de movimientos más grandes por definición; después de uno de ellos, la
probabilidad de otro se multiplica por más de dos.

Una forma útil de pensarlo es como dos estados que persisten: el mercado pasa largos periodos en calma, un choque lo
lleva a un estado agitado y de ahí sale poco a poco. La EWMA y los GARCH son maneras de estimar en qué punto de ese
ciclo está hoy.

```mermaid
stateDiagram-v2
  state "Agitación" as Agitacion
  [*] --> Calma
  Calma --> Calma: día tranquilo
  Calma --> Agitacion: choque
  Agitacion --> Agitacion: más choques
  Agitacion --> Calma: se disipa
```

## Efecto apalancamiento

El cuarto hecho es una asimetría: la volatilidad tiende a subir más después de una caída que después de una subida del
mismo tamaño. Se llama **efecto apalancamiento** por una explicación clásica (cuando cae la cotización, sube el
apalancamiento financiero de la empresa), aunque en índices y en otros activos se atribuye también a la reacción de
los inversores ante las pérdidas. Se mide relacionando la rentabilidad de hoy con la volatilidad **futura**:

```python
fut = np.sqrt(252 * x.pow(2).rolling(10).mean().shift(-10))
decil = pd.qcut(x, 10, labels=range(1, 11))
tabla = pd.DataFrame({
    "r_media_%": 100 * x.groupby(decil, observed=True).mean(),
    "vol_futura_%": 100 * fut.groupby(decil, observed=True).mean()})
tabla.round(2)
```
```output
     r_media_%  vol_futura_%
ISX
1        -2.26         26.90
2        -0.94         18.63
3        -0.52         15.86
4        -0.27         15.45
5        -0.06         13.27
6         0.14         14.12
7         0.33         15.14
8         0.58         14.79
9         1.00         17.88
10        2.51         23.82
```

*Fig. — ISX, 2019–2025: volatilidad anualizada de las 10 sesiones siguientes según el decil de la rentabilidad de hoy.* Diez barras en forma de U asimétrica. Tras los días del peor decil (destacado), la volatilidad de las diez sesiones siguientes es del 26,9 %; baja hasta un mínimo del 13,3 % en el decil 5 y sube hasta el 23,8 % tras el mejor decil. Los dos extremos anuncian más volatilidad, las caídas más que las subidas.

Los dos extremos tienen más volatilidad futura que el centro: es otra vez el agrupamiento (un día grande, de cualquier
signo, anuncia más días grandes). La asimetría está en los extremos: tras el decil de las peores sesiones, la
volatilidad de las diez siguientes es del 26,9 % anual; tras el de las mejores, del 23,8 %. El mínimo, 13,3 %, está en
el decil 5, el de los días casi planos.

La forma más limpia de medirlo elimina el efecto del nivel de volatilidad: estandariza cada día por su volatilidad
prevista (EWMA, lección 1.6.1) y compara lo que viene después de un día de z < −1 con lo que viene después de uno de
z > +1.

```python
sig = np.sqrt(x.pow(2).ewm(alpha=0.06, adjust=False).mean().shift(1))
z = (x / sig).iloc[63:]
z2_siguiente = z.shift(-1) ** 2
for nombre, filtro in [("z < -1", z < -1), ("-1 <= z <= 1",
                       z.abs() <= 1), ("z > 1", z > 1)]:
    print(f"{nombre:>13}: E[z² de mañana] = "
          f"{z2_siguiente[filtro].mean():.2f}  (n = {filtro.sum()})")
print(f"Curtosis de r: {x.kurt():.2f}; de z: {z.kurt():.2f}")
```
```output
       z < -1: E[z² de mañana] = 1.84  (n = 194)
 -1 <= z <= 1: E[z² de mañana] = 1.05  (n = 1264)
        z > 1: E[z² de mañana] = 1.28  (n = 238)
Curtosis de r: 6.65; de z: 6.87
```

Si la volatilidad prevista recogiera todo, el cuadrado de mañana estandarizado valdría 1 de media en las tres filas.
Después de un día tranquilo vale casi exactamente eso (1,05); después de una caída de más de una desviación típica,
1,84; después de una subida de la misma magnitud, 1,28. Las caídas mueven la volatilidad bastante más que las
subidas, y más de lo que la EWMA, que es simétrica, ya ha incorporado.

La última línea responde a una pregunta pendiente de la lección 1.6.1: estandarizar por una volatilidad cambiante **no**
quita las colas. La curtosis de z sigue en torno a 7. En estos datos es así por construcción: la distribución de cada
día es una t de Student, con colas gruesas por sí misma, y la volatilidad cambiante añade más colas a la serie
completa. En datos reales también suele quedar curtosis después de estandarizar, y por eso los modelos de riesgo usan
distribuciones t o históricas en lugar de la normal.

## Lo que cada hecho cambia en un sistema

| Hecho | Lo que rompe | Qué hacer |
|---|---|---|
| Colas gruesas | VaR y stops calculados con la normal; ratios basados en la desviación típica | Cuantiles históricos o t de Student; pruebas de estrés con los peores días reales |
| Agrupamiento | Sizing con volatilidad fija; métricas que mezclan regímenes | Volatilidad móvil (EWMA) en el sizing; analizar resultados por régimen |
| Autocorrelación débil | Señales basadas en la dirección de ayer | Contrastar con costes y fuera de la muestra; desconfiar de p-valores pequeños |
| Apalancamiento | Riesgo simétrico supuesto en opciones y coberturas | Modelos asimétricos (GJR, EGARCH, lección 2.1.4); prever más riesgo tras las caídas |

Una consecuencia común a los cuatro: los datos sintéticos que se usen para probar un sistema (nivel 2, lección 2.5.7)
tienen que reproducir estos hechos. Un paseo aleatorio con rentabilidades normales e independientes, el modelo más
sencillo, no tiene ninguno de ellos, y un sistema probado solo con él no ha visto nunca un mercado de verdad.

## Ejercicios

1. Repite la tabla de días extremos con las rentabilidades estandarizadas por la EWMA (`z` de la última celda). ¿Se
   acercan a la normal?

**Solución.**

```python
ze = (z - z.mean()) / z.std()
for k in (3, 4, 5):
    esperados = len(ze) * 2 * stats.norm.sf(k)
    print(f"|z| > {k}: {int((ze.abs() > k).sum())} observados, "
          f"{esperados:.3f} esperados")
```
```output
|z| > 3: 23 observados, 4.579 esperados
|z| > 4: 11 observados, 0.107 esperados
|z| > 5: 4 observados, 0.001 esperados
```

Se acercan algo en ±3σ, pero en ±4σ y ±5σ siguen muy por encima de lo que predice la normal. La volatilidad cambiante
explica una parte de las colas; el resto está en la distribución de cada día. Un VaR que use una volatilidad EWMA con
una normal sigue infravalorando las pérdidas extremas.

2. Calcula la correlación entre la rentabilidad de hoy y la volatilidad de 10 sesiones de los días siguientes, en
   ISX y en FIX. ¿Qué signo tiene y qué tamaño?

**Solución.**

```python
for c in r:
    f10 = r[c].pow(2).rolling(10).mean().shift(-10)
    print(f"{c}: {r[c].corr(np.sqrt(f10)):.3f}")
```
```output
ISX: -0.066
FIX: -0.083
```

Negativa y pequeña en los dos: más caída hoy, algo más de volatilidad después. Es pequeña porque la correlación lineal
mezcla los dos efectos de la tabla por deciles: el agrupamiento, simétrico, hace que los dos extremos tengan más
volatilidad futura y diluye la correlación; la asimetría solo se ve bien separando caídas de subidas.

3. Un colega te enseña un backtest de una estrategia de reversión que «gana en 9 de cada 10 operaciones» probada con
   rentabilidades simuladas normales e independientes. ¿Qué hechos estilizados faltan en esa simulación y qué
   pueden cambiar?

**Solución.**

Faltan los cuatro. Sin colas gruesas, nunca aparece el día de −8 % que se lleva en una operación las ganancias de
muchas. Sin agrupamiento, las pérdidas no vienen en rachas y el drawdown es más corto de lo que será. Sin efecto
apalancamiento, las caídas no traen más volatilidad, justo cuando una estrategia de reversión suele estar comprada. Y
la autocorrelación nula de la simulación puede no ser la del activo real. Una estrategia que gana 9 de cada 10 veces y
pierde mucho la décima es exactamente la que una simulación normal hace parecer segura. Hay que probarla con datos
reales o con simulaciones que reproduzcan estos hechos (bootstrap, GARCH con t; lección 2.5.7).

[^1]: R. Cont, «Empirical properties of asset returns: stylized facts and statistical issues», *Quantitative Finance*
    1(2), 2001, 223-236, <https://doi.org/10.1080/713665670>.

## Autoevaluación

1. En ISX hay 8 días con rentabilidad a más de cinco desviaciones típicas de la media. ¿Cuántos esperaría una normal en 1.759 días?

   - A. Unos 8
   - B. Unos 0,001: uno cada varios miles de años de sesiones
   - C. Unos 88
   - D. Ninguno, la normal no tiene colas

   *Respuesta B: Unos 0,001: uno cada varios miles de años de sesiones.* P(|Z| > 5) ≈ 5,7 × 10⁻⁷; por 1.759 días, 0,001. Ocho días así son incompatibles con la normal: las colas reales son gruesas, y cualquier medida de riesgo que suponga normalidad infravalora los días extremos.

2. La autocorrelación de las rentabilidades diarias de ISX en el retardo 1 es 0,045 y la de su valor absoluto, 0,248. ¿Qué significa?

   - A. Que se puede predecir la dirección del día siguiente
   - B. Que la dirección casi no tiene memoria, pero el tamaño del movimiento sí: a un día agitado le suele seguir otro agitado
   - C. Que la serie no es estacionaria
   - D. Que hay un error en los datos

   *Respuesta B: Que la dirección casi no tiene memoria, pero el tamaño del movimiento sí: a un día agitado le suele seguir otro agitado.* Es el agrupamiento de volatilidad. Saber que mañana será un día movido no dice si será al alza o a la baja, pero sí cuánto riesgo se corre: es lo que explotan la EWMA y los modelos GARCH.

3. ¿Qué es el efecto apalancamiento?

   - A. Que las cuentas con margen ganan más
   - B. Que la volatilidad tiende a subir más después de una caída que después de una subida del mismo tamaño
   - C. Que los ETFs apalancados pierden valor con el tiempo
   - D. Que las acciones con más deuda suben más

   *Respuesta B: Que la volatilidad tiende a subir más después de una caída que después de una subida del mismo tamaño.* El nombre viene de una explicación clásica (al caer el precio, sube el apalancamiento financiero de la empresa y su riesgo), pero el fenómeno se mide en la relación entre la rentabilidad de hoy y la volatilidad futura. En ISX, tras un día de z < −1 el cuadrado estandarizado del día siguiente vale 1,84 de media; tras uno de z > +1, 1,28.

4. El índice de cola de Hill de ISX sale entre 2 y 3 según cuántas pérdidas se usen. ¿Qué implica un índice de cola α?

   - A. Que la serie tiene α días extremos al año
   - B. Que la probabilidad de una pérdida mayor que x cae como x elevado a −α: con α bajo, los momentos de orden α o mayor (como la curtosis si α < 4) no son estables
   - C. Que la volatilidad se duplica cada α días
   - D. Nada: es un número sin interpretación

   *Respuesta B: Que la probabilidad de una pérdida mayor que x cae como x elevado a −α: con α bajo, los momentos de orden α o mayor (como la curtosis si α < 4) no son estables.* Una cola de potencia con índice α tiene momentos finitos solo de orden menor que α. Con α por debajo de 4, la curtosis muestral no converge: por eso cambia tanto de un año a otro (de 1,4 a 6,4 en ISX).

5. Los datos del curso son sintéticos. ¿Qué conclusión de esta lección NO puedes trasladar a un mercado real?

   - A. Que las colas gruesas se miden con la frecuencia de días extremos frente a la normal
   - B. Que el índice de cola de un activo real valga exactamente lo mismo que el de ISX
   - C. Que la ACF de |r| detecta agrupamiento de volatilidad
   - D. Que la volatilidad futura se mide con datos posteriores al día

   *Respuesta B: Que el índice de cola de un activo real valga exactamente lo mismo que el de ISX.* Los métodos son los mismos en datos reales; las cifras de ISX y FIX salen de los parámetros del generador (un GJR-GARCH con innovaciones t de Student). Las del activo que operes tienes que medirlas en sus propios datos.

## Ideas clave

- Colas gruesas: en ISX hay 35 días a más de 3 desviaciones típicas donde la normal espera 4,7, y 8 a más de 5 donde espera 0,001.
- La dirección casi no tiene memoria (ACF de r de 0,045 en el retardo 1); el tamaño sí (ACF de |r| de 0,25 que sigue en 0,18 a 20 sesiones): la volatilidad viene en rachas.
- Efecto apalancamiento: la volatilidad futura sube más tras las caídas. En ISX, tras el peor decil de días, 26,9 % anual; tras el mejor, 23,8 %.
- Estandarizar por una volatilidad cambiante no quita todas las colas: el resto está en la distribución de cada día.
- Los datos del curso tienen estos hechos porque el generador los incluye. Mide siempre los del activo real que operes; Cont (2001) es la referencia clásica del catálogo.

## Recursos

### Research

- [Procesos Estocásticos - Paseos Aleatorios](https://pythonparatrading.com/procesos-estocasticos/) · Research-0005 · 12 min
- [Introducción a la Volatilidad - Liquidez](https://pythonparatrading.com/introduccion-a-la-volatilidad-liquidez/) · Research-0001 · 6 min

### Documentación

- [statsmodels: acf](https://www.statsmodels.org/stable/generated/statsmodels.tsa.stattools.acf.html) · statsmodels.org

### Libros

- [Cont, R. (2001): Empirical properties of asset returns: stylized facts and statistical issues. Quantitative Finance 1(2), 223-236](https://doi.org/10.1080/713665670) · doi.org

### Datos

- [Datos del nivel 1: índice de precios FIX, 2019-2025 (CSV)](https://pythonparatrading.com/curso/datos/nivel-1/fix_indice_diario.csv) · Descarga · fix_indice_diario.csv

Lección anterior: [1.6.1 · Rentabilidades, volatilidad, correlaciones móviles y drawdown](https://pythonparatrading.com/curso-python-trading/nivel-1/volatilidad-correlaciones-y-drawdown/)

Lección siguiente: [1.6.3 · Estacionalidad: día de la semana, mes, cambio de mes y sesiones intradía](https://pythonparatrading.com/curso-python-trading/nivel-1/estacionalidad-y-efectos-calendario/)
