La optimización de los Sistemas Automáticos de Trading.

1 de noviembre, 2013 0
Miembro del Instituto Español de Analistas Financieros desde 1983. He sido profesor durante 17 años en el Máster en Mercados Financieros de... [+ info]
Miembro del Instituto Español de Analistas Financieros... [+ info]


Últimamente nos encontramos con buen número de clientes y potenciales clientes que se acercan a nosotros diciéndonos que han desarrollado un sistema automático de trading, o que están en el proceso de hacerlo.

Hace unos días, hablando con uno de ellos, me acordé de un artículo que había publicado nuestro colaborador José Ramón Díaz Serrano y decidí “rescatarlo” para facilitar al cliente una serie de conceptos que entendía que le podían ser útiles.

Hoy lo reproducimos aquí. Espero que tenga también utilidad para vosotros.


LA OPTIMIZACIÓN DE LOS SISTEMAS AUTOMÁTICOS DE TRADING

Cuando desarrollamos un sistema automático de trading lo que pretendemos es encontrar una ineficiencia en el mercado que podamos seguir explotando en el futuro. El mercado tiende a corregir sus ineficiencias con el tiempo, por lo que lo normal será que el fallo del mercado del que queremos aprovecharnos no sea eterno y por eso es muy importante intentar desarrollar sistemas simples, con pocos parámetros.

¿Por qué pocos parámetros?

Supongamos que estamos desarrollando un sistema con las siguientes reglas:

  • Compramos si el precio supera hacia arriba el máximo de los “N” últimos periodos.
  • Vendemos si el precio rompe hacia abajo el mínimo de los “N” últimos periodos.

Este “N” se considera un parámetro del sistema y dependiendo de su valor, el sistema hará unas operaciones u otras. Tras programar la idea original, el desarrollador piensa que sería mejor establecer un número distinto de periodos para las compras que para las ventas. Es decir, se modifican las reglas del sistema por estas otras:

  • Compramos si el precio supera hacia arriba el máximo de los “N” últimos periodos.
  • Vendemos si el precio rompe hacia abajo el mínimo de los “M” últimos periodos.

Vamos a llamar a este sistema, “Sistema Ejemplo”. Como vemos, ahora ya tenemos dos parámetros, “N” y “M”. Y así, el desarrollador podría seguir incorporando reglas a su sistema y con cada regla añadir un nuevo parámetro. Añadir parámetros es un arma de doble filo ya que por un lado conseguimos corregir “errores” del sistema y así obtenemos mejores resultados en datos históricos/simulación, pero por otro lado es más complicado que el mercado en el futuro repita los mismos errores y a mayor número de parámetros existe un mayor riesgo de sobreoptimización del sistema.

¿En qué consiste la optimización de un sistema automático de trading?

Una vez que tenemos definidas las reglas del sistema procedemos a optimizar el mismo. La optimización consiste en determinar que combinación de valores de los parámetros son los que maximizan una determinada función objetivo, durante un periodo de tiempo determinado. Siguiendo con nuestro sistema de ejemplo, si la función objetivo fuese la ganancia neta (descontadas comisiones), la optimización consistiría en determinar que combinación de valores de los parámetros “N” y “M” maximizan la ganancia del sistema en un periodo de tiempo determinado.

El hecho de conseguir unos buenos resultados de nuestro sistema durante el proceso de optimización del mismo no significa que el sistema sea bueno sin más y vaya a ganar dinero en el futuro. La optimización lo único que nos dice es qué juego de parámetros maximiza una determinada función en datos pasados, pero no tiene ningún carácter predictivo.

¿Para qué sirve entonces la optimización? Fundamentalmente para determinar el potencial del sistema en el futuro, aplicando siempre que sea posible exhaustivos análisis de prueba externa (Walk Forward Optimization o WFO).

¿En qué consiste la Optimización en Prueba Externa o WFO?

En la optimización en 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. De esta manera enfrentamos los juegos de parámetros óptimos a datos de mercado futuro y así podemos analizar si el sistema es capaz de ganar dinero a futuro, siendo nuestras estadísticas mucho más reales que las obtenidas por la mera optimización del conjunto de datos global.

Veamos un caso práctico, utilizando nuestro “Sistema Ejemplo”. Lo vamos a aplicar al futuro del DAX, en datos diarios y en la optimización buscamos maximizar la función “Ganancia Neta”.

Primero optimizamos todo el periodo (desde 01/01/2001 hasta el 31/03/2013) y estos son los resultados que obtenemos:

3272d930bb75e4c5f72d806f56b16a75.jpg

La línea verde se ha incluido intencionadamente, para mostrar en el gráfico donde comienza el año 2011. Como vemos desde la línea verde hacia la derecha (periodo que va desde enero 2011 hasta marzo 2013) la gráfica de resultados sigue siendo creciente y el sistema ha seguido ganando dinero en ese periodo (unos 30 mil euros aproximadamente).  A la vista de estos resultados podemos pensar que estamos ante un sistema ganador. No obstante, es necesario recordar que todos estos datos son fruto de una optimización en todo el periodo, incluyendo en el proceso de optimización el periodo enero 2011 a marzo 2013 también.

Pero veamos qué ocurre si llevamos a cabo una Optimización en Prueba Externa. La siguiente tabla resume el estudio realizado:

6e8353726392824af3b90020e3f3627f.jpg

En este caso hemos optimizado un periodo de 10 años y los parámetros óptimos los hemos aplicado al año siguiente.

Y a continuación el gráfico de todo el periodo completo, resaltando en verde el periodo analizado en prueba externa:

6648bf15d2f3ccf09d09aef65c2b6119.jpg

Como podemos observar, en prueba externa el sistema es incapaz de hacernos ganar dinero. Las diferencias respecto al gráfico que mostraba los resultados del sistema optimizado son evidentes.

 

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.

En la práctica, los resultados en prueba externa de un sistema es como si hubiéramos estado auditando los resultados del sistema, por lo que los resultados en prueba externa de un sistema al que se le haya aplicado de manera rigurosa dicha prueba externa tienen prácticamente las mismas garantías que los de un sistema que hubiéramos estado auditando durante dicho periodo.

Usuarios a los que les gusta este artículo:

Este artículo no tiene comentarios
Escriba un nuevo comentario

Identifíquese ó regístrese para comentar el artículo.