Lección 422 min60 XPGratis
Vencimientos, rollover y la serie continua
Al terminar sabrás
- Explicar por qué un futuro caduca y qué es rolar una posición
- Distinguir contango y backwardation y saber qué le cuestan a una posición
- Construir una serie continua ajustada y entender qué rompe si no la ajustas
Antes de esta conviene haber hecho Margen y apalancamiento: controlar 270.000 $ con 15.000.
El tercer viernes de marzo, el contrato de ES que llevas semanas operando deja de existir. Si no has hecho nada, tu posición se liquida. Y si haces un backtest pegando el contrato de marzo con el de junio, el día del cambio tu estrategia "gana" 30 puntos que nadie ganó nunca. Este detalle administrativo es una de las fuentes de backtests falsos más comunes que existen.
El problema
Los futuros no son una serie de precios continua. Son una sucesión de contratos distintos, cada uno con su fecha de caducidad, que cotizan a precios ligeramente diferentes a la vez. "El precio de ES" es una ficción útil que hay que construir a mano, y cada forma de construirla tiene consecuencias.
Tres capas
Intuición
Un futuro es un billete de tren con fecha. El billete de marzo te sirve hasta marzo; después no vale. Si quieres seguir "en el tren", tienes que vender el billete de marzo y comprar el de junio antes de que caduque el primero. Eso es rolar.
Y aquí viene el detalle: el billete de junio no cuesta lo mismo que el de marzo. Normalmente cuesta un poco más, porque quien te lo vende tiene que "guardar" el asiento tres meses más y eso tiene un coste (intereses, almacenamiento). A esa diferencia se la llama contango. A veces es al revés, el de junio es más barato: backwardation, típico cuando hay escasez ahora mismo (petróleo en crisis) o cuando el activo paga rentas (dividendos altos).
Si tienes una posición larga y ruedas de marzo a junio en contango, pagas esa diferencia. No como comisión: la pagas porque vendes barato y compras caro. Y si estás corto, la cobras. A lo largo de un año, esa suma es real y en algunos mercados se come la mitad de la tendencia.
Para un gráfico o un backtest, alguien tiene que pegar los billetes uno detrás de otro. Si los pegas tal cual, el día del cambio aparece un salto que no existió. Si los pegas bien (desplazando todo el pasado para que encaje), la serie es continua pero los precios antiguos ya no son los que aparecieron en pantalla. No hay forma perfecta; hay que elegir sabiendo.
Ejemplo numérico
Últimos días del contrato de marzo, con el de junio cotizando 30 puntos por encima (contango: en índices, los tipos de interés superan a los dividendos).
| Día | Marzo | Junio | Serie pegada sin ajustar | Serie ajustada (back-adjust) |
|---|---|---|---|---|
| Roll − 1 | 5.361,91 | 5.391,91 | 5.361,91 | 5.391,91 (= marzo + 30) |
| Roll | — | 5.376,79 | 5.376,79 | 5.376,79 |
- El día del roll, la serie sin ajustar pasa de 5.361,91 a 5.376,79: +0,28 %. Parece un día alcista.
- El contrato de junio ese día pasó de 5.391,91 a 5.376,79: −0,28 %. Fue un día bajista.
- La serie ajustada (sumando 30 a todo el pasado) da también −0,28 %. Correcta.
Una estrategia larga que se apoyara en la serie sin ajustar se anotaría un +0,28 % falso cada trimestre: +1,1 % al año regalado. Con backwardation sería al revés y el error castigaría. En cualquier caso, es ficción.
Y el coste real de rolar un largo de 1 ES ese día: vendes marzo a 5.361,91 y compras junio a 5.391,91. Pagas 30 puntos = 1.500 $ por contrato. No aparece como comisión en ningún sitio, pero es dinero.
Formal
Un futuro sobre un subyacente con vencimiento cotiza, bajo no arbitraje y para activos almacenables o financieros, a con el tipo libre de riesgo, el rendimiento del subyacente (dividendos, convenience yield) y el coste de almacenamiento. Si , para : contango. Si : backwardation. La diferencia entre vencimientos consecutivos es el calendar spread, y su evolución hasta el vencimiento () es el roll yield: negativo para largos en contango, positivo en backwardation. En materias primas el roll yield puede ser del mismo orden que el retorno del spot.
Serie continua. Sea el precio del contrato y las fechas de roll. Tres construcciones habituales:
- Sin ajustar (unadjusted): para . Conserva los precios históricos reales; introduce un salto en cada roll que no es un retorno. Inutilizable para calcular retornos, señales basadas en diferencias de precio o P&L.
- Back-adjusted (ajuste por diferencia): se suma acumulativamente a todo el pasado la diferencia en cada roll, de modo que el precio actual coincide con el contrato vigente y los retornos en dinero son correctos. Los precios históricos pueden volverse negativos en series largas con mucho contango (petróleo). Es la elección estándar para backtests de P&L en futuros.
- Ratio-adjusted: se multiplica el pasado por . Conserva los retornos porcentuales; distorsiona los retornos en dinero. Útil si la estrategia opera en porcentajes.
La regla de roll también es una decisión: por fecha fija (n días antes del vencimiento), por volumen (cuando el siguiente supera al actual) o por open interest. Cada regla produce una serie distinta y una estrategia puede ser sensible a ello: es uno de los tests de la batería del Nivel 3.
Look-ahead en el roll. Si la regla de roll usa el volumen del día para decidir en , hay look-ahead. Decide con datos de . Y si compras la serie continua a un proveedor, pregunta con qué regla y con qué ajuste se construyó; si no lo sabes, no sabes qué estás backtesteando.
Ejemplo trabajado con código
# numpy 2.4 · pandas 3.0 — Rollover: dos contratos, un hueco, y la serie continua ajustada
import numpy as np, pandas as pd
rng = np.random.default_rng(42)
dias = pd.bdate_range("2026-02-02", periods=40) # 40 sesiones alrededor de un vencimiento
r = rng.normal(0, 0.008, len(dias))
marzo = 5400 * np.exp(np.cumsum(r)) # contrato de marzo (front)
junio = marzo + 30.0 # junio cotiza 30 pts por encima (contango: tipos > dividendos)
roll = 25 # el día 25 pasamos de marzo a junio
sin_ajustar = np.concatenate([marzo[:roll], junio[roll:]])
hueco = junio[roll - 1] - marzo[roll - 1] # diferencia el día del roll
ajustada = np.concatenate([marzo[:roll] + hueco, junio[roll:]]) # back-adjust: sumamos el hueco al pasado
print(f"Último día en marzo: {marzo[roll-1]:.2f} | junio ese día: {junio[roll-1]:.2f} | hueco: {hueco:+.2f} pts")
print(f"'Retorno' del día del roll en la serie sin ajustar: {sin_ajustar[roll]/sin_ajustar[roll-1]-1:+.3%}")
print(f"Retorno real de ese día (mismo contrato): {junio[roll]/junio[roll-1]-1:+.3%}")
print(f"Retorno del día del roll en la serie ajustada: {ajustada[roll]/ajustada[roll-1]-1:+.3%}")
print(f"Coste de rolar una posición larga: vendes marzo a {marzo[roll-1]:.2f} y compras junio a {junio[roll-1]:.2f} -> pagas {hueco:.2f} pts = {hueco*50:,.0f} $/ES")Último día en marzo: 5361.91 | junio ese día: 5391.91 | hueco: +30.00 pts
'Retorno' del día del roll en la serie sin ajustar: +0.278%
Retorno real de ese día (mismo contrato): -0.280%
Retorno del día del roll en la serie ajustada: -0.280%
Coste de rolar una posición larga: vendes marzo a 5361.91 y compras junio a 5391.91 -> pagas 30.00 pts = 1,500 $/ESEn este ejemplo el hueco es constante (30 puntos) para que se vea claro. En la realidad el spread entre vencimientos se mueve cada día, y en materias primas puede cambiar de signo.
Figura

El error típico
Descargar "ES continuo" de una fuente gratuita sin saber cómo está construido, y calcular retornos sobre él. Tres consecuencias: (1) cada trimestre un retorno inventado del tamaño del calendar spread; (2) cualquier indicador con memoria (medias móviles, ATR) queda contaminado durante semanas después del roll; (3) los stops calculados en puntos saltan solos el día del roll. El backtest puede salir espectacular o desastroso según el signo del contango, y en ambos casos es mentira. Regla: si no sabes la regla de roll y el tipo de ajuste de tu serie, no tienes una serie, tienes un problema.
Quiz
5 preguntas · se aprueba con 60 %
1.El contrato de junio de ES cotiza 30 puntos por encima del de marzo. Esto es:
2.Tienes un largo en un mercado en contango y ruedas cada trimestre. El roll yield es:
3.¿Qué serie continua conserva los retornos en dinero correctos a través de los rolls?
4.Una serie back-adjusted de crudo de 20 años muestra precios negativos en 2005. ¿Qué pasa?
5.Tu regla de roll es "cambiar de contrato el día en que el volumen del siguiente supera al actual", evaluada con el volumen de ese mismo día. ¿Problema?
0 de 5 respondidas
Ejercicio
Modifica el código: pon el hueco en −20 puntos (backwardation) y observa el signo del retorno falso el día del roll y el coste de rolar un largo. Después, implementa el ajuste por ratio (marzo * junio[roll-1]/marzo[roll-1]) y compara el retorno del día del roll con el de la serie back-adjusted.
Resultado verificable: con −20, el retorno falso de la serie sin ajustar es de unos −0,65 % (el real sigue siendo −0,28 %) y rolar un largo cobra 20 puntos = 1.000 $. El retorno del día del roll en la serie ratio-adjusted debe coincidir con el de la back-adjusted (−0,280 %) porque ese día ya estás en junio en ambas; las diferencias aparecen en los días anteriores al roll.
Qué te llevas
- Los futuros caducan; rolar es vender el que caduca y comprar el siguiente, y la diferencia de precio es un coste (o ingreso) real.
- Contango encarece los largos; backwardation los abarata. En materias primas, el roll yield es parte central del retorno.
- Una serie continua es una construcción. Sin ajustar, miente en cada roll; back-adjusted, sirve para P&L; ratio-adjusted, para porcentajes. Sabe cuál tienes.
Siguiente lección: Sesiones, horarios y por qué tus datos están en UTC. ES cotiza 23 horas al día, pero no todas las horas son iguales, y las prop firms cierran el día a una hora concreta.
