La optimización, la robustez y la elección de parámetros

1
Este contenido tiene casi 9 años

 

Si te gusta el artículo difúndelo por favor: ¡Compartir es ganar!

 

La optimización es un proceso controvertido dentro del Algorithmic Trading, tiene detractores y defensores por igual. La optimización consiste en la búsqueda de aquellos valores óptimos de determinadas variables o parámetros que satisfacen uno/s target/s prefijado/s (máximo beneficio, por ejemplo). ¿Por qué usamos un estocástico de 14 períodos y no de 21? La optimización puede ayudarnos a decidirlo. Es un proceso intensivo de prueba error que va comprobando qué resultado hubieran obtenido en los datos históricos una determinada combinación de parámetros. Hay varios tipos de optimización y diversos procedimientos para optimizar pero no son el objeto de este artículo.

Su peligro es que esta búsqueda obtenga un resultado que si bien satisfaga los targets que hemos prefijado en el histórico, éste no sea fruto de un pauta estadística sólida si no de una casualidad estadística. ¿Habéis oído aquello de que hasta un reloj estropeado es capaz de dar la hora correcta dos veces al día? Si el reloj está parado a las 6 y justo a esa hora miramos el reloj podemos pensar que el reloj funciona perfectamente. Pero no es así, sencillamente lo hemos mirado casualmente a la hora en que está parado. Algo parecido puede pasar con unos determinados parámetros de nuestro sistema. El optimizador nos dice que son los que mejor satisfacen nuestro target (por ejemplo los que más dinero han ganado en el histórico) pero lo que nosotros queremos saber realmente no es lo que han ganado en el pasado, si no si estos parámetros y nuestro sistema seguirán ganando dinero en el futuro. ¿Y cómo conseguimos esto? Pues siento deciros que es imposible saberlo con certeza, y este es el principal argumento de los detractores de la optimización para no usarla. La sobre-optimización o curve fittinges un riesgo real, es fácil ajustarse al a curva, y debemos trabajar para minimizar este riesgo lo máximo posible, pero en mi opinión, esto no justifica el no usarla ya que es una herramienta demasiado potente para prescindir de ella.

Los defensores de la optimización afirmamos que disponemos de diversas herramientas para evaluar la robustez, así como experiencia para fomentarla en el diseño. Defino robustez como la capacidad para mantener en el futuro los datos de performance obtenidos con datos históricos optimizados. Además, no optimizar es renunciar a que el sistema se adapte a la especificidad que tiene cada activo y time-frame. Esto ha hecho que con el paso del tiempo cada vez queden menos detractores de la optimización, centrándose más el debate en que tipo usar, con qué intensidad y sobre todo el procedimiento utilizado, que es donde radica realmente la clave.

A título de ejemplo voy a explicaros resumidamente el procedimiento de optimización que seguimos con SERSAN-ARTEMISA-IBEX-01. Este es un sistema de medio plazo (los grandes olvidados del mercado español) que funciona en el futuro del Ibex en barras diarias y hemos usado una penalización entre comisión y slippage de 60€ por trade (ida y vuelta). Esto implica que vamos a tener una muestra de trades relativamente pequeña, o lo es lo mismo, la significación estadística necesaria para verificar que la performance histórica es robusta va a ser realmente complicada de obtener. Pensar que desde el año 2000 tenemos solamente unas 3200 barras diarias. Aquí el riesgo de curve fitting es realmente alto por lo que hay que trabajar doblemente para minimizar al máximo ese riesgo.

Para conseguir la mayor significación estadística trabajamos con datos desde 1994, de esta forma la muestra es ya suficiente para utilizar la optimización Walk-Forward (WFO)

¿Pero qué es la optimización Walk Forward? Esta es la concepción clásica del proceso Walk-Forward:

1999

2000

2001

2002

2003

2004

2005

2006

2007

2008

3 años Optimizados

Externa1

Externa2

Externa3

       
 

3 años Optimizados

Externa1

Externa2

Externa3

     
   

3 años Optimizados

Externa1

Externa2

Externa3

   
     

3 años Optimizados

Externa1

Externa2

Externa3

 
       

3 años Optimizados

Externa1

Externa2

Externa3

         

3 años Optimizados

Externa1

Externa2

           

3 años Optimizados

Externa1

             

3 años Optimizados

TOTAL MUESTRAS EXTERNAS

   

1

2

3

3

3

3

3

 

Quedaros con la idea, no con el número de muestras externas ni con los años o el tamaño de los periodos.

Resumiendo mucho es un proceso que va haciendo sucesivas optimizaciones en determinados periodos del histórico (la llamamos muestra In-Sample, INS) que luego aplica a otros periodos de datos sin optimizar (la llamamos muestra Out-Of-Sample, OOS, o prueba externa). Es un proceso realmente complejo que antiguamente hacíamos con Excel aunque ahora ya disponemos de herramientas muy potentes que automatizan mucho el proceso. Debemos elegir el rango de porcentaje de datos que dejamos OOS (suele rondar 10-30%) y el rango de periodos OOS que queremos tener, o dicho de otra forma, el número de “runs” o número de periodos optimizados que habrá en el histórico. Por ejemplo:

Cluster Analysis Settings

Start

End

Inc

Out-Of-Sample %

5

30

5

Walk Forward Runs

5

12

1

 

Para este ejemplo hemos elegido el test con OOS%=10 y Runs=5.

Una de las muchas ventajas de este proceso es que te permite obtener la curva de resultados para cada test y sus estadísticos con datos no optimizados que es lo más parecido que existe a la operativa real. Fijaros en el siguiente chart. Los cinco periodos a la derecha de las líneas son OOS, es decir, datos no optimizados:

Curva de resultados Out Of Sample

 

Fijaros ahora en el performance que incluye solo los periodos OOS (los cinco que veis en el chart de arriba) es decir, no optimizados. Sin duda la operativa real es la auténtica prueba de fuego y ni aun con todos estos test WF tendremos la certeza de que el sistema ganará dinero. Pero sin duda alguna, esto es lo más parecido a simular la operativa real utilizando datos históricos y es una muy buena orientación de lo que podemos esperar de este sistema en el futuro:

Performance Out Of Sample

 

A continuación podéis ver la tabla con los estadísticos de estos cinco períodos, todos OOS, repito, no optimizados:

Tabla Out Of Sample

 

 

 

 

 

 

 

La imagen siguiente muestra los inputs y estadísticos INS del mismo proceso que el chart anterior:

 

 

 

 

 

 

 

 

Fijaros en el rectángulo rojo. Una vez damos con la combinación de OOS% y Walk-Forward-Runs más robusta entre todos los test, podemos saber cuales son los parámetros recomendados para el siguiente periodo OOS (live en este caso). Así, este sofisticado proceso nos permite sobre todo verificar la robustez de nuestro sistema (su principal función) ya que hacemos muchas pruebas Walk-Forward a la vez, pero si se desea también nos permite determinar los parámetros que “tocarían” para el siguiente periodo. En este caso para los siguientes 473 días.

Todas estas tablas son de datos totalmente reales de uno de los análisis WFO que hicimos a SERSAN-ARTEMISA-IBEX-01. El proceso de verificar la robustez es siempre el más importante. Este procedimiento de stress es mucho más complejo, solo he explicado brevemente en qué consiste y su principal utilidad. La robustez de este sistema es extraordinaria, en bastantes periodos de test distintos el sistema gana más en el periodo OOS que en el INS y en la gran mayoría más del 50% que es el mínimo considerado como aceptable, mantiene DD razonables para ser un sistema diario, es consistente, y pasa con nota prácticamente todas las pruebas de test.

Con la robustez verificada nos sigue quedando pendiente la fijación de los parámetros para operar con él. Podemos usar los que sugiere el WFO o utilizar un método más convencional como sería optimizar todo el histórico pero dejando la última parte del histórico (20 o 30%) sin optimizar (OOS) para ver que resultados obtiene en datos no optimizados. Tras analizar en profundidad múltiples optimizaciones WF y convencionales con diferentes targets, nos hemos decantado por este último método porque si bien las pruebas del WFO demuestran su gran robustez y consistencia ante el cambio de parámetros, la muestra sigue siendo relativamente pequeña para ir consiguiendo runs estadísticamente significativos. Fijaros en la tabla OOS publicada, en la columna t-test. Obtenemos una media del 14.36% que consideramos un poco alto. Además, como sistema robusto que es, hay muchas zonas con parámetros buenos y los que hemos elegido están en los primeros puestos tanto con datos INS como con datos OOS, lo que muestra la estabilidad que tienen los parámetros elegidos en todo el periodo y su gran robustez.

El proceso convencional no lo detallo. Solo comentaros que no suele ser lo más inteligente elegir aquellos parámetros que simplemente obtienen un máximo target. Recordar, es fácil conseguir un buen performance con datos históricos y salir guapos en la foto con unos determinados parámetros, lo difícil es mantenerlos en el futuro, y para eso las pruebas de robustez son básicas. Hay otras maneras de buscar y/o verificar la robustez pero el WFO es sin duda una de las mejores.

 

Si te ha gustado este artículo no olvides difundirlo por favor: ¡Compartir es ganar!

 

Sergi Sánchez

Síguenos en twitter: @sersansistemas

Nuestro blog: www.sistemasdetrading.info

Nuestra web: www.sersansistemas.com

  1. #1
    04/12/12 17:06

    interesante artículo.muchas gracias.