Sobreoptimización en sistemas de trading

¿Qué significa sobreoptimización en trading?

Sobreoptimizar, en inglés curve-fitting, se produce cuando un sistema está tan adaptado a las condiciones de los datos históricos que funciona perfectamente en un backtest, pero no funciona en real.

Estos sistemas sobreoptimizados se caracterizan porque parecen dejar de funcionar tan pronto como comenzamos a operarlos en real con nuestra cuenta.

Cuando tenemos una idea de trading y queremos desarrollar un sistema a partir de esta idea, lo habitual es testear cómo ha funcionado esta idea en el pasado.  Para esto hacemos lo que se llama backtest. En el backtest testeamos cómo hubieran sido los resultados de nuestro sistema si lo hubiéramos operado en el pasado. Generalmente no estamos conformes con el primer resultado, así que ajustamos las condiciones y los parámetros para mejorar los resultados del sistema. Con un software de trading automático resulta muy fácil hacer 1000 backtest en menos de 10 minutos y obtener muchas combinaciones posibles para el mismo sistema. El problema viene cuando nos pasamos y se termina sobreoptimizando.

Causas del curve-fitting o sobreoptimización en trading

La sobreoptimización o curve-fitting puede estar causada por:

  • Demasiadas reglas, parámetros, filtros, stops y otras restricciones en el sistema.
  • No tener suficientes datos históricos como para poder sacar conclusiones sobre la rentabilidad del sistema.

La cantidad de datos históricos necesaria para evaluar el sistema depende de que tan frecuentemente opere. Lo que cuenta es en número de trades, no la cantidad de años de datos que tengamos.

¿Cuántos trades son suficientes para que la muestra de datos sea válida? Hay muchos expertos en trading que argumentan que se deben tener al menos 30 trades para validar estadísticamente los resultados del sistema. A mi me gusta más la postura de Keith Fitschen, que sostiene que cuanto más grande sea la desviación estándar en los resultados del back-test, mayor deberá ser la muestra in-sample.

Cómo evitar una sobreoptimización del sistema de trading

La idea básica para no sobreoptimizar un sistema de trading es aplicar condiciones que funcionen de la forma más realista posible. Aquí van unos consejos prácticos para darse cuenta de cuándo nos estamos pasando en la optimización de nuestro sistema:

  • La base comienza por utilizar argumentos lógicos y razonables en el diseño del sistema.
  • Evitar que sea una única combinación de parámetros la que resulte ideal. Evitar los picos de ganancia en los que si sólovariamosmínimamente un parámetro el resultado se deteriora de forma notable. Con un mapa de optimización puedes ver cuándo tu sistema se basa en un pico de ganancia y así poder evitarlo.

    Optimizacion sistemas de trading. Ejemplo pico de ganancia.sobreoptimización en trading
    Pico de ganancia al sobreoptimizar un sistema de trading.
  • Hay que ser realistas e incluir los costes de comisiones y posibles deslizamientos. Esto yo lo suelo hacer en la segunda etapa del diseño del sistema: en un primer momento analizo los resultados con un tamaño fijo de posición y sin incluir comisiones para después ver el impacto de las comisiones sobre la rentabilidad.
  • Cuando desarrollamos un sistema tenemos que pensar en si podremos llevar a cabo las operaciones tan cual las señala. Pongo un ejemplo personal: tenía un «sistema» muy bueno que daba entrada de largo con orden stop-limit en el máximo del día anterior, a condición de que el precio de cierre fuera superior a llamemosle X. El backtest era impresionante. ¿Qué pasaba si el precio superaba el máximo anterior pero el cierre no llegaba a superar X?, pues que era una entrada falsa. Estas entradas falsas sólo las tenía yo en mi cuenta real ejecutadas por la orden stop pero no en mi software de trading donde no existían, ya que como el precio de cierre no cumplía las condiciones el software no contaba esta entrada.
  • Analiza la curva de capital del sistema. En especial aquellas operaciones que mas ganancia dieron en el backtest. Aquí te puedes encontrar con casos en los que una sola operación era la que hacía rentable al sistema. Eso no es un sistema, es un pelotazo y lo más posible es que no se vuelva a dar.
  • Utilizar un proceso de optimización que separe periodos in-sample y out-of-sample como por ejemplo el proceso de walk-forward
  • Busca tener un numero suficiente de trades para poder confiar en los resultados del back-test.
  • Desconfía cuando los resultados de los back-test sean demasiado buenos para ser ciertos. Al estilo de esos robots de trading que ofertan por Internet donde duplicas tu capital en 3 meses.
  • Si añadir una nueva condición al sistema o tan solo cambiar las fechas del backtest provoca que los resultados mejoran de forma exagerada, lo mejor es examinar detenidamente este nuevo cambio para asegurarse de no estar sobreoptimizando.
  • Intentar mantener el sistema tan sencillo como sea posible.

Cuando un sistema de trading no funciona tan bien en real como en simulado puede haber un gran porcentaje de posibilidades que le sistema esté sobreoptimizado. Pero también pueden haber otros motivos, como por ejemplo puede ser que simplemente cambiaron las condiciones del mercado.

La sobreoptimización en trading es como una delgada línea que no hay que traspasar. El problema es que esta línea es tan delgada que a veces es difícil verla con claridad.

Saludos y buen trading!

4 comentarios en «Sobreoptimización en sistemas de trading»

Deja un comentario

ESTRATEGIAS DE TRADING