Anterior: «
Siguiente: »

 

El análisis de prueba externa en los sistemas automáticos de trading

08 de Ene de 2011

A todos aquellos que usan sistemas de trading la historia que actualmente les voy a contar les será bastante familiar. Cuando comenzamos a interesarnos por el mundo de los sistemas, comenzamos a programar nuestras primeras ideas, a probarlas, optimizarlas, analizarlas, …. empezamos a descubrir un mundo totalmente nuevo para nosotros y realmente, en un principio, nos encontramos como bebes en pañales, con un sinfín de cosas por aprender.

Introducción

Lo más común es comenzar a probar sistemas de libre distribución, del tipo de los que AGM ofrece en su página o de los que algunos amables traders ponen a nuestra disposición. Tras unas pocas horas de optimización hemos conseguido el sistema millonario que nos retirará de trabajar para el resto de la vida. Ya no tendremos que seguir soportando a ese plasta de jefe y podré llevar a los niños a Disneyworld. Las estadísticas de nuestra optimización lo dicen y ese sistema es una máquina de hacer dinero.

Tras convencer a nuestra familia para comenzar a operar con “la máquina de hacer dinero”, empezamos no sin miedo, a utilizar las señales de compra/venta que el sistema genera y al cabo del tiempo (normalmente poco tiempo), nos damos cuenta de que nuestros resultados no se parecen en nada a lo que había conseguido tras mi optimización, las rachas de pérdidas son extraordinariamente más grandes que las esperadas y nos envuelve un sentimiento de frustración que acaba por hacernos parar la operativa para recapacitar sobre lo que hemos hecho mal y buscar soluciones.

Esta historia tan típica y que todos hemos sufrido en nuestros comienzos tiene fácil explicación: simplemente habíamos comenzado a operar con un sistema sobreoptimizado, que se había ajustado a la curva de precios histórica, dando unos resultados muy buenos en el pasado, pero con poco valor predictivo futuro. Para evitar este tipo de sobreoptimizaciones, ahorrándonos así varios disgustos, lo más conveniente es aplicar el análisis en prueba externa a nuestros sistemas. Veamos en que consiste.

El Concepto

Supongamos que hoy es día 31 de diciembre de 2000 y tenemos un sistema muy bueno con el que queremos comenzar a operar al día siguiente. El proceso habitual es optimizar nuestro sistema en un conjunto de datos históricos y aplicar el conjunto de parámetros óptimo a la operativa en mercado real a partir del 1 de enero de 2001.

De esta manera podríamos saber como se hubiera comportado nuestro sistema en un conjunto de datos en los que el sistema no ha sido optimizado, o lo que es lo mismo, en un conjunto de datos externos a la optimización. Por lo tanto, en el análisis de prueba externa lo que hacemos es optimizar el sistema en un conjunto de datos históricos determinados y aplicar los parámetros optimizados a otros conjuntos de datos que no habían sido tenidos en cuenta en nuestra optimización inicial.

La idea es dividir nuestro conjunto de datos históricos en diversos “trozos” de datos, optimizando en cada uno de los trozos y aplicando los parámetros óptimos al trozo siguiente. Veámoslo con un ejemplo. Imaginemos que tenemos un conjunto de datos que va desde el 1/1/1998 al 15/5/2003 y queremos analizar la validez de un determinado sistema de trading. Para ello tenemos dos opciones:

1) Tomar el conjunto de datos entero, optimizarlo y comenzar a operar con los parámetros optimizados a partir del día 16/5/2003. Esta manera, que es la que habitualmente se suele utilizar, es totalmente errónea, ya que no nos informa de la bondad del sistema en ningún momento. Simplemente nos dice que ha sido posible obtener unos buenos resultados con nuestro sistema en dicho periodo, pero no sabemos nada acerca del carácter predictivo del sistema, ya que no hemos aplicado el sistema a datos externos.

2) Dividir el conjunto de datos en diversos periodos. Por ejemplo, de la siguiente manera:

Periodo Optimizado
Parámetros aplicados al Periodo
1/1/1998 a 31/12/1998
1/1/1999 a 31/3/1999
1/4/1998 a 31/3/1999
1/4/1999 a 30/6/1999
1/7/1998 a 30/6/1999
1/7/1999 a 30/9/1999

1/4/2002 a 31/3/2003
1/4/2003 a 30/6/2003

En la tabla anterior hemos dividido nuestro conjunto de datos en periodos de 12 meses, aplicando los parámetros optimizados a los 3 meses siguientes, obteniendo de esta manera nuestra secuencia de operaciones en prueba externa. Es importante por lo tanto, seleccionar el periodo hacia atrás (el periodo que vamos a optimizar) y el periodo hacia delante (el periodo “futuro” al que vamos a aplicar los parámetros optimizados). De esta manera podemos saber que hubiera ocurrido en nuestra cuenta si hubiésemos comenzado a operar el 1/1/1999, por ejemplo, con los parámetros optimizados hasta el 31/12/1998.

De esta manera obtendremos una secuencia de operaciones fruto de nuestro análisis de prueba externa, siendo nuestras estadísticas mucho más reales que las obtenidas por la mera optimización del conjunto de datos global. Además, con este tipo de prueba evitamos la sobreoptimización del sistema y el ajuste a la curva de precios, porque la secuencia de operaciones que hemos conseguido no es fruto de un conjunto de datos optimizado. Posteriormente, sería conveniente aplicar los análisis de montecarlo a la secuencia de operaciones externas, para poder determinar nuestro capital necesario, etc…

Conclusión

Si bien el hecho de que un sistema no haya superado los análisis de prueba externa no es motivo suficiente para decir que ese sistema no es bueno, si es cierto que con los análisis de prueba externa conseguimos una imagen más real de lo que podemos esperar de nuestro sistema, y sobre todo evitamos que nuestro sistema se haya simplemente ajustado a la curva de precios histórica como consecuencia de una sobreoptimización.

Aunque el proceso de realización de la prueba externa puede llegar a convertirse en algo bastante tedioso, es recomendable que realicemos este tipo de pruebas a nuestros sistemas antes de comenzar a operar con ellos y determinar posteriormente los capitales necesarios para la misma en función de los análisis de montecarlo efectuados a la secuencia de operaciones en prueba externa.

A todos aquellos que usan sistemas de trading la historia que actualmente les voy a contar les será bastante familiar. Cuando comenzamos a interesarnos por el mundo de los sistemas, comenzamos a programar nuestras primeras ideas, a probarlas, optimizarlas, analizarlas, …. empezamos a descubrir un mundo totalmente nuevo para nosotros y realmente, en un principio, nos encontramos como bebes en pañales, con un sinfín de cosas por aprender.

:: Introducción ::.

Lo más común es comenzar a probar sistemas de libre distribución, del tipo de los que AGM ofrece en su página o de los que algunos amables traders ponen a nuestra disposición. Tras unas pocas horas de optimización hemos conseguido el sistema millonario que nos retirará de trabajar para el resto de la vida. Ya no tendremos que seguir soportando a ese plasta de jefe y podré llevar a los niños a Disneyworld. Las estadísticas de nuestra optimización lo dicen y ese sistema es una máquina de hacer dinero.

Tras convencer a nuestra familia para comenzar a operar con “la máquina de hacer dinero”, empezamos no sin miedo, a utilizar las señales de compra/venta que el sistema genera y al cabo del tiempo (normalmente poco tiempo), nos damos cuenta de que nuestros resultados no se parecen en nada a lo que había conseguido tras mi optimización, las rachas de pérdidas son extraordinariamente más grandes que las esperadas y nos envuelve un sentimiento de frustración que acaba por hacernos parar la operativa para recapacitar sobre lo que hemos hecho mal y buscar soluciones.

Esta historia tan típica y que todos hemos sufrido en nuestros comienzos tiene fácil explicación: simplemente habíamos comenzado a operar con un sistema sobreoptimizado, que se había ajustado a la curva de precios histórica, dando unos resultados muy buenos en el pasado, pero con poco valor predictivo futuro. Para evitar este tipo de sobreoptimizaciones, ahorrándonos así varios disgustos, lo más conveniente es aplicar el análisis en prueba externa a nuestros sistemas. Veamos en que consiste.

:: El Concepto ::.

Supongamos que hoy es día 31 de diciembre de 2000 y tenemos un sistema muy bueno con el que queremos comenzar a operar al día siguiente. El proceso habitual es optimizar nuestro sistema en un conjunto de datos históricos y aplicar el conjunto de parámetros óptimo a la operativa en mercado real a partir del 1 de enero de 2001.

De esta manera podríamos saber como se hubiera comportado nuestro sistema en un conjunto de datos en los que el sistema no ha sido optimizado, o lo que es lo mismo, en un conjunto de datos externos a la optimización. Por lo tanto, en el análisis de prueba externa lo que hacemos es optimizar el sistema en un conjunto de datos históricos determinados y aplicar los parámetros optimizados a otros conjuntos de datos que no habían sido tenidos en cuenta en nuestra optimización inicial.

La idea es dividir nuestro conjunto de datos históricos en diversos “trozos” de datos, optimizando en cada uno de los trozos y aplicando los parámetros óptimos al trozo siguiente. Veámoslo con un ejemplo. Imaginemos que tenemos un conjunto de datos que va desde el 1/1/1998 al 15/5/2003 y queremos analizar la validez de un determinado sistema de trading. Para ello tenemos dos opciones:

1) Tomar el conjunto de datos entero, optimizarlo y comenzar a operar con los parámetros optimizados a partir del día 16/5/2003. Esta manera, que es la que habitualmente se suele utilizar, es totalmente errónea, ya que no nos informa de la bondad del sistema en ningún momento. Simplemente nos dice que ha sido posible obtener unos buenos resultados con nuestro sistema en dicho periodo, pero no sabemos nada acerca del carácter predictivo del sistema, ya que no hemos aplicado el sistema a datos externos.

2) Dividir el conjunto de datos en diversos periodos. Por ejemplo, de la siguiente manera:

Periodo Optimizado
Parámetros aplicados al Periodo
1/1/1998 a 31/12/1998
1/1/1999 a 31/3/1999
1/4/1998 a 31/3/1999
1/4/1999 a 30/6/1999
1/7/1998 a 30/6/1999
1/7/1999 a 30/9/1999

1/4/2002 a 31/3/2003
1/4/2003 a 30/6/2003

En la tabla anterior hemos dividido nuestro conjunto de datos en periodos de 12 meses, aplicando los parámetros optimizados a los 3 meses siguientes, obteniendo de esta manera nuestra secuencia de operaciones en prueba externa. Es importante por lo tanto, seleccionar el periodo hacia atrás (el periodo que vamos a optimizar) y el periodo hacia delante (el periodo “futuro” al que vamos a aplicar los parámetros optimizados). De esta manera podemos saber que hubiera ocurrido en nuestra cuenta si hubiésemos comenzado a operar el 1/1/1999, por ejemplo, con los parámetros optimizados hasta el 31/12/1998.

De esta manera obtendremos una secuencia de operaciones fruto de nuestro análisis de prueba externa, siendo nuestras estadísticas mucho más reales que las obtenidas por la mera optimización del conjunto de datos global. Además, con este tipo de prueba evitamos la sobreoptimización del sistema y el ajuste a la curva de precios, porque la secuencia de operaciones que hemos conseguido no es fruto de un conjunto de datos optimizado. Posteriormente, sería conveniente aplicar los análisis de montecarlo a la secuencia de operaciones externas, para poder determinar nuestro capital necesario, etc…

:: Conclusión ::.

Si bien el hecho de que un sistema no haya superado los análisis de prueba externa no es motivo suficiente para decir que ese sistema no es bueno, si es cierto que con los análisis de prueba externa conseguimos una imagen más real de lo que podemos esperar de nuestro sistema, y sobre todo evitamos que nuestro sistema se haya simplemente ajustado a la curva de precios histórica como consecuencia de una sobreoptimización.

Aunque el proceso de realización de la prueba externa puede llegar a convertirse en algo bastante tedioso, es recomendable que realicemos este tipo de pruebas a nuestros sistemas antes de comenzar a operar con ellos y determinar posteriormente los capitales necesarios para la misma en función de los análisis de montecarlo efectuados a la secuencia de operaciones en prueba externa.