Casi toda estrategia rinde peor en real que en simulación, y la brecha suele atribuirse a la mala suerte o a un cambio de condiciones. Ambas explicaciones están disponibles y ambas suelen ser falsas: la brecha tiene fuentes mecánicas, y se pueden enumerar.
Cuando una estrategia probada rinde por debajo en real, la primera hipótesis ofrecida es que el mercado cambió. Esa hipótesis es infalsable a corto plazo y por tanto inútil, y además suele ser innecesaria, porque la diferencia entre una simulación y un extracto de cuenta tiene causas que no exigen en absoluto que el mercado haya cambiado.
El encuadre útil es que un backtest es un modelo, y todo modelo difiere de la realidad en sitios concretos. La pregunta no es si el modelo estaba mal sino dónde, y esa pregunta tiene respuestas que puedes ir a comprobar en lugar de especular.
Hay seis fuentes recurrentes, y en la práctica la mayor parte de la brecha en una estrategia dada viene de una o dos de ellas. Identificar cuáles es un ejercicio de diagnóstico, y merece hacerse antes de concluir nada sobre si la idea de fondo funciona.
El mercado no necesariamente cambió. Un backtest es un modelo, y los modelos difieren de la realidad en sitios concretos que puedes ir a comprobar.
La más común y la mayor. Una simulación suele suponer que una orden colocada a un precio se ejecuta cuando el mercado toca ese precio. En realidad, tocar un precio significa que alguien operó ahí, no que lo hicieras tú: tu orden espera en una cola detrás de todos los que colocaron antes en ese nivel, y el mercado puede tocar, ejecutar la cabeza de la cola, y marcharse sin alcanzarte.
Esto afecta a las estrategias de forma asimétrica y en la peor dirección posible. Tus operaciones ganadoras, donde el precio tocó tu nivel y se alejó, son exactamente aquellas donde la cola quizá no se vació. Tus perdedoras, donde el precio tocó y atravesó, son las que ciertamente se ejecutaron. La simulación te da ambas; la realidad te da la segunda de forma fiable y la primera a veces.
El diagnóstico es directo: cuenta la proporción de tus ejecuciones simuladas que ocurrieron en un nivel que el mercado solo tocó y no atravesó. Si es alta, esa es tu brecha principal, y la corrección honesta es exigir que el mercado atraviese tu nivel con cierto margen antes de contar una ejecución.
Muchas simulaciones corren sobre una única serie de precios, típicamente el cierre de cada intervalo, y entran y salen a ese precio. Pero no existe un precio único: hay una compra y una venta, y compras a uno y vendes al otro. Usar un punto medio o un cierre para ambos lados quita un coste entero de cada ida y vuelta.
La magnitud de esa omisión es proporcional a la frecuencia con que opera la estrategia, y por eso destruye las de alta frecuencia y apenas toca las de horizonte largo. Una estrategia que toma una posición al mes puede absorber la omisión; una que toma veinte al día no, y la diferencia de resultado entre ambas es enteramente un artefacto de la elección de modelado.
La corrección es modelar ambos lados explícitamente: comprar a la venta, vender a la compra, usando el diferencial real que existía entonces y no un valor típico. Donde no haya histórico de diferenciales, usar una constante prudente es infinitamente mejor que no usar ninguna, porque ninguna es una suposición de cero y cero es el único valor ciertamente falso.
Los errores de modelado de comisiones son comunes y casi siempre van en la misma dirección. La versión frecuente es aplicar una única tasa a cada operación cuando la estructura real distingue entre órdenes que aportan liquidez y órdenes que la toman, y suponer que tus órdenes se comportan como la categoría más barata más a menudo de lo que lo hacen.
También está el coste de financiación de las posiciones apalancadas, que no es una comisión de trading y no figura en ninguna tarifa. Una simulación de una estrategia que mantiene contratos de un día para otro sin contar los pagos periódicos de financiación mide otra cosa que lo que la cuenta habría hecho, y la omisión se acumula con el tiempo de tenencia.
La corrección es aritmética y merece hacerse con precisión: aplicar la tasa correcta por tipo de orden según lo que cada orden realmente fue, y sumar los costes periódicos de cualquier posición mantenida a través de los intervalos en que se cobran. Es la fuente menos interesante de la brecha y de las más fáciles de eliminar.
El sesgo de anticipación es el sutil y se esconde en código ordinario. Todo cálculo que usa información de una vela para decidir dentro de esa vela usa el futuro, y la versión clásica es decidir en la apertura de un periodo a partir de un valor calculado sobre su cierre.
También entra por la revisión de datos. Algunas series se corrigen tras publicarse, y una serie descargada hoy contiene esas correcciones; una estrategia probada sobre la serie corregida tenía un conocimiento que nadie tenía entonces. Esto afecta a las entradas fundamentales y macro mucho más que a los precios, pero las series de precios no son inmunes donde una plaza ha republicado datos.
La prueba de anticipación es correr la estrategia de un modo que estructuralmente no pueda ver el futuro: procesar los datos una observación a la vez, tomando cada decisión solo con lo que la precedía. Si los resultados se derrumban, tenías anticipación, y la magnitud del derrumbe es exactamente la parte de tu resultado hecha de información de la que no disponías.
Decidir en la apertura de un periodo con un valor calculado sobre su cierre es la anticipación clásica. Es invisible en una hoja de cálculo y fatal en un resultado.
Una estrategia probada sobre los activos que existen hoy se ha probado sobre un conjunto seleccionado por haber sobrevivido. Los activos que se listaron, se negociaron y desaparecieron están ausentes de tus datos, y la estrategia nunca tuvo que gestionarlos, lo que halaga el resultado exactamente en lo que esos fracasos habrían costado.
En activos digitales este efecto es inusualmente grande, porque la tasa de fracaso de los activos listados es alta y las desapariciones no son graduales. Una estrategia que opera un universo amplio y solo se probó sobre el universo actual lleva un optimismo incorporado que no es visible en ninguna de sus estadísticas.
La corrección exige datos históricos que incluyan activos retirados y muertos, lo que es más difícil de obtener y merece obtenerse si tu estrategia opera un conjunto amplio. Para una estrategia que opera un número pequeño de activos grandes y antiguos, el efecto es menor, y saber en qué situación estás es más útil que suponer una u otra.
La última fuente no es un error de modelado sino uno estadístico, y es la más difícil de ver. Cada parámetro que probaste y descartaste, cada variante que probaste y abandonaste, cada rango de fechas que miraste, es una prueba, y el mejor resultado de muchas pruebas supera la verdad en una cantidad que crece con el número de pruebas.
El mecanismo es el mismo que fabrica los patrones de calendario, y no exige deshonestidad alguna. Quien prueba cien variantes y se queda la mejor no ha hecho trampa; simplemente ha producido un número que refleja la búsqueda tanto como la estrategia, y el resultado real revierte hacia lo que la estrategia sola produce.
La defensa es reservar datos y contar. Aparta un periodo que la estrategia nunca haya tocado, prueba la versión final sobre él una sola vez, y trata ese único número como la estimación. Y lleva la cuenta de cuántas variantes probaste, porque esa cuenta es la medida del optimismo a esperar y es un número que nadie anota.
Una secuencia de diagnóstico útil, por orden de magnitud típica. Comprueba primero las ejecuciones: qué proporción dependía de un nivel tocado y no atravesado. Comprueba después si se modelaron ambos lados del diferencial. Verifica luego la aritmética de comisiones, que es rápida. Esas tres explican la mayor parte de la brecha en casi todas las estrategias activas.
Luego las tres difíciles. Prueba la anticipación procesando secuencialmente. Pregúntate si tu universo de activos fue seleccionado por supervivencia. Y cuenta las variantes que probaste, honestamente, incluidas las que abandonaste en el primer minuto.
El orden importa porque las tres primeras son corregibles y las tres últimas en su mayoría no. Una estrategia cuya brecha viene de la aritmética de comisiones se puede arreglar; una cuyo resultado vino de probar doscientas variantes no se puede arreglar, solo reestimar, y la reestimación es el número que siempre fue cierto.
El propósito de quitar estas seis fuentes no es producir un número que coincida con el rendimiento real, porque no coincidirá. El propósito es producir un número que no sea sistemáticamente optimista, para que las comparaciones entre estrategias tengan sentido y la decisión de asignar capital se tome sobre algo que no sea un artefacto.
Un backtest corregido también cambia lo que aprendes de una divergencia en real. Si la simulación fue honesta con ejecuciones, diferencial y comisiones, y los resultados reales aun así difieren sustancialmente, eso es información auténtica sobre un cambio de condiciones, que es justo la señal que la versión sin corregir nunca podría darte porque iba a divergir de todos modos.
Ese es el verdadero coste de un backtest optimista. No solo exagera el resultado; destruye tu capacidad de detectar cuándo algo ha ido realmente mal, porque una brecha permanente e inexplicada hace que cada brecha nueva pase desapercibida.
Corre la estrategia en real a un tamaño lo bastante pequeño para que el resultado no importe, el tiempo suficiente para acumular un número significativo de operaciones, y compara cada operación individual con lo que la simulación decía que esa operación habría sido. No el agregado, las operaciones individuales.
La comparación es mucho más informativa que el agregado porque localiza la diferencia. Si las entradas coinciden y las salidas no, ese es un problema. Si las ejecuciones coinciden y el coste por operación es sistemáticamente mayor, ese es otro. El agregado te dice que existe una brecha; la comparación operación a operación te dice dónde vive.
Casi todos se saltan este paso porque no es emocionante y retrasa el despliegue. También es el único paso que distingue un error de modelado que puedes arreglar de una idea que no funciona, y confundir ambos sale caro en las dos direcciones: abandonar una idea sólida, o escalar una rota.
Normalmente ni mala suerte ni un cambio de mercado. Seis fuentes mecánicas producen la brecha: ejecuciones que no habrías recibido, un diferencial no modelado, aritmética de comisiones incompleta, sesgo de anticipación, un universo de activos seleccionado por supervivencia, y el número de variantes que probaste antes de quedarte la mejor.
Las ejecuciones supuestas. Las simulaciones suelen ejecutar una orden colocada cuando el mercado toca su precio, pero tocar significa que alguien operó ahí, no que lo hicieras tú. Tus operaciones ganadoras son justo aquellas donde la cola quizá no se vació; las perdedoras ciertamente se ejecutaron.
Muchas simulaciones usan una sola serie de precios y entran y salen a ese precio, quitando un coste entero de cada ida y vuelta. La magnitud es proporcional a la frecuencia de operación, y por eso la omisión destruye las estrategias de alta frecuencia y apenas toca las de horizonte largo.
Usar información que no estaba disponible cuando se tomó la decisión. La versión clásica es decidir en la apertura de un periodo a partir de un valor calculado sobre su cierre. También entra por series revisadas que contienen correcciones que nadie tenía entonces.
Corre la estrategia de modo que estructuralmente no pueda ver el futuro: procesa una observación a la vez, cada decisión solo con lo que la precedía. Si los resultados se derrumban, tenías anticipación, y la magnitud del derrumbe es la parte del resultado hecha de información indisponible.
Probar sobre los activos que existen hoy es probar sobre un conjunto seleccionado por haber sobrevivido. Los activos listados, negociados y desaparecidos están ausentes, así que la estrategia nunca tuvo que gestionarlos. El efecto es inusualmente grande aquí porque la tasa de fracaso es alta y las desapariciones abruptas.
Sí, y es la fuente más difícil de ver. El mejor resultado de muchas pruebas supera la verdad en una cantidad creciente con el número de pruebas, sin necesidad de deshonestidad. La defensa es un periodo reservado probado una vez, y una cuenta honesta de cuántas variantes se probaron.
Opera en real a un tamaño que no importe y compara cada operación individual con lo que la simulación decía que sería. El agregado te dice que existe una brecha; la comparación operación a operación la localiza, distinguiendo un error de modelado arreglable de una idea que no funciona.