Quant500 Academy

1. Splits y dividendos: por qué el precio de ayer cambia hoy

Nivel 3: Ajustes y operaciones societarias

Un precio de cierre parece el dato más duro que existe: se negoció de verdad, quedó impreso en la cinta y nadie puede reescribirlo. Y sin embargo, la serie histórica de casi cualquier acción se reescribe hacia atrás cada pocos años, hasta el primer día de cotización. No es una falsificación. Es que el número que se imprimió aquel día ha dejado de ser comparable con el de hoy.

Un split no cambia nada, y por eso lo cambia todo

En un desdoblamiento dos por uno, la empresa entrega una acción adicional por cada una que ya tenías y divide el precio entre dos. Si tenías 100 acciones a 80 euros, pasas a tener 200 acciones a 40 euros. Antes valías 8.000 euros y después vales 8.000 euros. No ha entrado ni salido un céntimo, no ha cambiado el porcentaje de la compañía que posees y no ha cambiado el beneficio por el que estás pagando.

Lo único que ha cambiado es la unidad de medida. Y ahí está el problema, porque una serie de precios es una serie de mediciones en una unidad que el split acaba de redefinir a mitad de camino. Comparar el cierre de la víspera (80) con el del día siguiente (40) es comparar una distancia medida en millas con la siguiente medida en kilómetros y concluir que el camino se ha acortado.

La aritmética del factor de ajuste

El arreglo consiste en dividir todos los precios anteriores al evento entre la razón del desdoblamiento. Con un dos por uno la razón es 2:

Comprueba que las rentabilidades no se mueven. Entre aquel día de hace un año y la víspera, sin ajustar: 80,00 / 62,50 menos uno, es decir un 28,0%. Ajustada: 40,00 / 31,25 menos uno, otra vez un 28,0%. Idéntica. Un ajuste correcto es exactamente eso: una operación que cambia el nivel de la serie y deja intactas todas las rentabilidades salvo la del día del evento, que era justo la que estaba mal.

Con el volumen ocurre lo simétrico: hay el doble de títulos, así que el volumen histórico se multiplica por 2. Si ajustas el precio y te olvidas del volumen, cualquier métrica que los mezcle (importe negociado, rotación, tu participación sobre el volumen medio) queda dividida entre dos en todo el histórico anterior sin que nada lo delate.

Lo que le hace a tu señal una serie sin ajustar

import pandas as pd

# Serie cruda alrededor de un split 2 por 1 con fecha efectiva 2024-06-10.
precios = pd.Series(
    [78.00, 79.50, 80.00, 40.60, 41.20, 40.90],
    index=pd.to_datetime([
        "2024-06-05", "2024-06-06", "2024-06-07",
        "2024-06-10", "2024-06-11", "2024-06-12",
    ]),
)

# La rentabilidad diaria sobre la serie cruda inventa un desplome.
print(precios.pct_change().round(4))
# 2024-06-10   -0.4925   <- no hubo tal caida: hubo un desdoblamiento

Ese menos 49,25% no es un dato erróneo aislado que puedas ignorar: es el peor tipo de dato erróneo, porque es plausible. Un filtro de momento a doce meses ve una caída del 49% y manda la acción al último decil. Un cruce de medias ve el precio muy por debajo de su media larga y vende. Un detector de valores atípicos lo marca como caída del 49% y, si tu limpieza recorta los movimientos extremos, lo recorta y lo deja en un menos 20% igual de falso. Y una medida de volatilidad se dispara para los doce meses siguientes, con lo que cualquier dimensionamiento de posición por riesgo reduce esa acción durante un año entero.

El dividendo también reescribe el pasado

Cuando una empresa reparte un dividendo, el día de la fecha ex-dividendo la acción arranca valiendo menos porque ese dinero ya no está dentro. El accionista no ha perdido nada: tiene el precio más bajo y el efectivo en la cuenta. Pero la serie de precios solo ve la caída. El factor habitual es uno menos el dividendo dividido entre el último cierre antes de la fecha ex, y se aplica a todos los precios anteriores.

serie = pd.Series(
    [41.00, 41.50, 42.00, 41.80],
    index=pd.to_datetime([
        "2024-09-16", "2024-09-17", "2024-09-18", "2024-09-19",
    ]),
)
dividendo, fecha_ex = 0.50, pd.Timestamp("2024-09-19")
cierre_previo = serie.loc[serie.index < fecha_ex].iloc[-1]   # 42.00
factor = (cierre_previo - dividendo) / cierre_previo          # 0.9880952

ajustada = serie.copy()
ajustada[serie.index < fecha_ex] *= factor

print(round(serie.pct_change().iloc[-1] * 100, 2))      # -0.48  falso
print(round(ajustada.pct_change().iloc[-1] * 100, 2))   # +0.72  correcto

La serie cruda dice que perdiste un 0,48% el día ex. La ajustada dice que ganaste un 0,72%, y eso es lo que de verdad ocurrió: cobraste 0,50 y el precio solo bajó 0,20. Con un dividendo trimestral pequeño la diferencia parece anecdótica; repetida cuatro veces al año durante veinte años deja de serlo, y en un valor con rendimiento alto se come la mitad de la rentabilidad que crees estar midiendo.

Caso real: Apple, 31 de agosto de 2020

Apple ejecutó un desdoblamiento cuatro por uno con efecto el 31 de agosto de 2020. El cierre anterior rondaba los 499 dólares y el primer cierre ya desdoblado quedó cerca de los 129. Sobre una serie sin ajustar eso es una caída de aproximadamente el 74% en una sesión, la mayor de la historia de la compañía, en un día en que ningún accionista perdió absolutamente nada.

Piensa qué le hace eso a una media móvil de 200 sesiones. La media seguía calculada sobre precios de tres cifras, del orden de los 300 dólares, mientras el precio pasaba a moverse por debajo de 130. La señal cruza a la baja el 31 de agosto y no puede volver a cruzar al alza hasta que la ventana de 200 sesiones haya renovado casi todo su contenido: meses de estar fuera del valor, no por una lectura del mercado, sino por un cambio de unidad de medida.

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.