20 de octubre de 2026 · research

La estrategia funcionó hasta que le cobramos por renovar una posición de futuros

La estrategia funcionó hasta que le cobramos por renovar una posición de futuros

El martes por la mañana, nuestra estrategia de seguimiento de tendencia en futuros de crudo tenía una posición larga en el contrato que estaba por vencer. La señal hacía exactamente lo que le habíamos pedido: mantener la posición mientras la tendencia siguiera siendo positiva. El backtest mostraba una ganancia modesta. La cuenta de prueba registraba una venta, una compra del siguiente contrato, 2 comisiones y una entrada peor de lo que sugería el gráfico.

La señal no había hecho nada misterioso. El backtest había tratado «el precio de los futuros» como una sola serie continua. La cuenta tuvo que cerrar un contrato y abrir otro, en 2 libros de órdenes distintos y a 2 precios diferentes.

Detectamos la discrepancia al revisar una posición que atravesó la ventana de renovación. La estrategia usaba un contrato líquido del mes próximo y lo mantenía hasta que una regla de calendario lo pasaba al mes siguiente. La regla era razonable. La contabilidad que la acompañaba, no.

Nuestra serie continua se había ajustado retroactivamente para eliminar la diferencia entre contratos. Eso hacía que el gráfico fuera útil para calcular una tendencia. También significaba que la serie no contenía ningún precio real al que pudiéramos cerrar el contrato antiguo o abrir el nuevo. El backtest había usado el nivel ajustado para valorar la operación durante la renovación y luego había reanudado la operativa como si la posición simplemente hubiera continuado.

Para generar una señal, una serie continua puede ser una medida útil. Para ejecutar una orden, es ficción. Una renovación son 2 operaciones, y el diferencial entre contratos forma parte de la estructura del mercado; no es un salto estético que se pueda suavizar y eliminar.

2 tramospara cerrar y reabrir una posición de futuros
2 libros de órdenescada uno con su propia demanda, oferta y profundidad
1 señalque quizá no tenga que cambiar en absoluto

Recreamos el evento con los 2 contratos cotizados. El mes antiguo tenía una demanda de 79.98 y una oferta de 80.00. El mes siguiente tenía una demanda de 80.42 y una oferta de 80.45. Nuestra posición larga tenía que vender el contrato antiguo a su demanda y luego comprar el nuevo a su oferta. El diferencial de calendario era de 44 centavos entre esos lados ejecutables.

Esa cifra no implicaba automáticamente una pérdida de 44 centavos. Los contratos correspondían a meses de entrega distintos, y el diferencial reflejaba el coste de mantener la posición, el almacenamiento, la financiación y las expectativas sobre la oferta. Una posición que se mantiene durante la renovación conserva la exposición a la trayectoria del precio del nuevo contrato; no paga todo el diferencial cotizado como comisión. Pero la estrategia debe contabilizar la salida del contrato antiguo y establecer la entrada en el nuevo. Si el cálculo de rentabilidad compara esos precios como si fueran del mismo instrumento, puede inventar o borrar P&L.

En la reproducción, separamos esas funciones. La serie continua siguió generando la señal de tendencia. Los precios específicos de cada contrato se usaron para valoraciones y órdenes. En la renovación, el simulador envió una orden de cierre para el mes que vencía y una orden de apertura para el mes siguiente, aplicó las comisiones de cada contrato y tuvo en cuenta el diferencial y la profundidad disponible de cada libro.

La primera reproducción aún no coincidía con la cuenta de prueba. Habíamos sincronizado ambas ejecuciones en la misma marca de tiempo, aunque las órdenes se enviaron en secuencia. Se ejecutó el cierre del mes antiguo, pero la oferta del mes siguiente cambió antes de que la compra llegara al libro. La renovación se puede ejecutar como un diferencial de calendario si el mercado lo permite, o como 2 tramos con exposición entre ambos. Son supuestos de ejecución distintos. Para la comparación, usamos la secuencia real de órdenes de la cuenta de prueba.

Después advertimos que la propia regla de calendario no estaba bien especificada. «Renovar 5 días antes del vencimiento» parece preciso hasta que un festivo altera el calendario bursátil, la liquidez se desplaza antes o la convención de vencimiento varía según el contrato. En un lugar habíamos programado un recuento de días naturales y en otro, de días hábiles. La estrategia de prueba renovó en la quinta sesión anterior al último día de negociación; el backtest lo hizo 5 días naturales antes.

La fecha de renovación es una regla de negociación. Especifica el calendario de la bolsa y el evento que la activa, o tarde o temprano el backtest y la cuenta discreparán sobre qué contrato tienes.

Cambiamos la instrucción de renovación para que especificara la última fecha de negociación del contrato, contara las sesiones según el calendario de su bolsa y exigiera una comprobación mínima de liquidez antes del cambio. Ese umbral era una salvaguarda práctica, no una garantía de mejor ejecución: el volumen y el interés abierto son indicadores imperfectos de lo que puede ejecutar nuestra orden. Registramos el contrato seleccionado y los precios de ambos tramos para que cada reproducción pudiera explicar el traspaso.

Después de esos cambios, la rentabilidad histórica de la estrategia bajó. La diferencia no se debió a una pérdida enorme en una sola renovación. Surgió de muchas correcciones pequeñas: el contrato correcto, la sesión de negociación correcta, comisiones reales en ambos tramos y salidas y entradas valoradas en sus propios libros. Una renovación con poca liquidez fue especialmente costosa, así que la dejamos visible en vez de ocultarla al promediar.

Si tu backtest de futuros usa un gráfico continuo, pregúntate qué puede hacer ese gráfico. Puede ofrecer una entrada coherente para una señal. No puede representar un contrato que podrías haber comprado o vendido. Para cada posición que llega al vencimiento, el registro de investigación debería identificar el contrato antiguo, el nuevo, el detonante de la renovación, el modelo de ejecución y los 2 flujos de caja resultantes.

Aquella operación del martes no fue un fracaso sofisticado. Era una línea de aspecto rentable en un gráfico que omitía el momento en que la cuenta tuvo que cambiar lo que poseía. Al reincorporar ese momento a la reproducción, el resultado fue menos halagador y mucho más útil.

futuroscostes de renovaciónbacktestingmicroestructura del mercadocostes de transacción
← Todos los artículos