Acceder
Blog Juan M. Almodóvar
Blog Juan M. Almodóvar
Blog Juan M. Almodóvar

Sistemas que solo funcionan en backtest

¿Cuántas veces hemos visto un sistema que obtiene excelentes resultados en backtest y tras ponerlo a operar estrella la cuenta? ¿Sirven para algo los backtest y optimizaciones? ¿Son esos resultados ganadores una ilusión, producto del azar tal vez?

Muchos traders de sistemas se encuentran pronto con esta situación tan desconcertante y arrojan la toalla pensando que sus sistemas solo funcionan en backtest y siempre fallan en forwardtest. Seguramente están pasando por alto que cualquier resultado estadístico de un backtest ha de evaluarse teniendo en cuenta la influencia de la aleatoriedad y el sesgo de la sobreoptimización.

El problema del deterioro out-sample

En el siguiente gráfico vemos el deterioro de un sistema de trading que ha sido optimizado en un periodo de tiempo in-sample, hemos seleccionado los mejores resultados y probado de nuevo en un periodo out-sample distinto al de optimización.

Backtest

Como se ve en el esquema nuestro sistema de trading que prometía estupendos beneficios pero una vez probado en out-sample demuestra un comportamiento errático, propio de los sistemas que no tienen poder predictivo. Hay tres explicaciones muy comunes y en mi opinión erroneas, para explicar el deterioro de los resultados out-sample. 

La primera es que el deterioro se debe puramente al azar. Una vez ponemos el sistema en forward test el azar modifica los resultados obtenidos. Sin embargo, si esto fuera así tendríamos tantos resultados out-sample positivos como negativos... y sabemos por experiencia que el caso común es el segundo. Descartado por tanto el azar como principal culpable del deterioro.

La segunda explicación es que la dinámica del mercado cambia. Es cierto que los mercados son sistemas no estacionarios (es decir que sus propiedades estadísticas no se mantienen estables) pero de ahí a que cada vez que pasamos de nuestro backtest a forwardtest el mercado cambie va un mundo. Sería incluso grato para nuestro ego de trader pensar que el mercado está esperando a que conectemos nuestro flamante robot ganador de backtest para cambiar su dinámica y hacer saltar nuestros stops. Descartado por absurdo.

Una tercera explicación, también muy escuchada, es la de que muchos traders ya conocen la estrategia. Siempre que hablemos de trading de baja frecuencia y teniendo en cuenta la abrumadora cantidad de estrategias posibles, el volumen negociado en el total de mercados y la cantidad de agentes de mercado (cada uno con sus propios objetivos para participar en los mercados) me resulta extremadamente difícil pensar que el agotamiento out-sample se debe a la masificación en el uso del sistema.

Aleatoriedad y sobreoptimización

Una explicación más razonable se basa en la influencia de la aleatoriedad y el sesgo de la sobreoptimización. Ambos elementos combinados son, en mi opinión, los culpables del deterioro del backtest. Intentaré explicar cómo creo que funciona este proceso:

En primer lugar, podríamos entender la dinámica del mercado como la combinación de un comportamiento sistemático y de otro comportamiento aleatorio (ruido). Los buenos sistemas explotan el comportamiento sistemático, este comportamiento se seguirá observando en el out-sample y es la fuente de beneficios del sistema. Al contrario el comportamiento aleatorio no es recurrente y se mostrará diferente en cada muestra de datos. La mayor parte de la dinámica del mercado se debe al comportamiento aleatorio, así que podemos razonar que una parte de los resultados del sistema se deben a la suerte, una correspondencia accidental entre las señales del sistema y el ruido no recurrente del mercado. Estos beneficios debidos a la suerte no se volverán a repetir y es de esperar que el resultado futuro del sistema en out-sample sea inferior al del in-sample.

En segundo lugar, nuestro backtest ha sido elegido entre un gran número de optimizaciones para obtener la mejor combinación de parámetros. La optimización premia la combinación que mejores resultados da pero no es un proceso trivial realizar una optimización que clasifique los mejores resultados por el componente sistémico y no por el componente aleatorio, porque como ya hemos dicho éste es el mayor componente de la dinámica del mercado.

La sobreoptimización y la aleatoriedad combinadas son seguramente los responsables del deterioro de nuestros sistemas tras realizar el backtest. ¿Y cómo podríamos evitarlo? ¿cómo podríamos saber que nuestro backtest está correctamente realizado y que podemos confiar en él y operar el sistema? Existen procedimientos rigurosos de optimización de sistemas de trading y otros procedimientos diferentes para la validación de los resultados, espero poder hablar de ellos en próximos artículos en este blog, de momento os dejo con un video del método cross-validation para evitar la sobreoptimización. Y si queréis más información os recomiendo el capítulo Data-Mining Bias: The Fool's Gold of Objective TA del libro Evidence-Based Technical Analysis de David Aronson.

 

2
¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
Lecturas relacionadas
Optimización Walk Forward
Optimización Walk Forward
Pruebas para confirmar la validez de los sistemas de trading
Pruebas para confirmar la validez de los sistemas de trading
¿Por qué fallan los sistemas de trading?
¿Por qué fallan los sistemas de trading?
  1. en respuesta a Josep Hervas
    -
    #2
    23/10/12 18:44

    Gracias Josep.

    Sí, comparto contigo que no todos los momentos son aprovechables, especialmente no creo que un sistema concreto pueda aprovechar todo el tiempo. Los sistemas han de diseñarse para explotar ineficiencias puntuales del mercado.

  2. Nuevo
    #1
    26/07/12 12:56

    Muy buen artículo. Fácil de entender y al mismo tiempo impecablemente razonado y lleno de sentido común. Estoy de acuerdo contigo en que un gran componente del mercado es el ruido y esto afecta muy negativamente a las optimizaciones. Creo que no todos los momentos del mercado son aprovechables por sistemas, sólo unos momentos determinados (reacción después de un impulso causado por una noticia, un retroceso en una tendencia, ...) todo lo que opere en momentos de aparente calma y trate de aprovechar el ruido (grid trading, martingalas) creo que esta abocado al fracaso ya que el ruido como bien dices es aleatorio y no recurrente.


Te puede interesar...
  1. Cómo optimizar un sistema mediante minería de datos
  2. Torturando los datos hasta que confiesen. Sesgo de muestreo y espionaje de datos
  3. Trading con Inteligencia Artificial y GenBoX
  4. Sistemas que solo funcionan en backtest
  5. Detectando el Régimen de Mercado con redes neuronales
  1. Cómo optimizar un sistema mediante minería de datos
  2. Machine Learning aplicado al trading
  3. Selección de activos y sistemas mediante árboles de decisión
  4. Ensamblando robots de trading inteligentes
  5. Detectando el Régimen de Mercado con redes neuronales