¿Creamos un sistema de trading juntos?

En este artículo y posteriores vamos a desarrollar un sistema de trading desde cero. Vamos a crear el sistema paso a paso.

Mi idea es mostrar un mínimo de puntos básicos que debemos seguir para validar un nuevo sistema. Además este ejercicio servirá también para tener unas referencias a la hora de evaluar sistemas y compararlos unos con otros.

Veremos cuáles son los principales parámetros que debemos controlar.

A día de hoy no tengo nada preparado, por lo que el conjunto de artículos que escribiré a raíz de éste, y el contenido de dichos artículos, es ahora mismo incierto… evolucionará con los resultados que vaya obteniendo y con los posibles comentarios que realicéis.

Para llevar a cabo este ejercicio me voy a ayudar de una plataforma de trading, Amibroker. Se trata de un software muy potente que permite simular cualquier sistema, siempre y cuando sepamos programarlo. Esta es la plataforma con la que he desarrollado los sistemas del Curso de Bolsa Online.

Una vez desarrollado el sistema y validado intentaré programarlo en ProRealTime para que todo el mundo pueda chequearlo.

Pasos a seguir

Comencemos primeramente por los pasos que hay que seguir cuando vamos a desarrollar un sistema de trading. Veamos el guion que seguiremos:

  1. Elección de la escala temporal.
  2. Mercado a operar.
  3. Valores a operar.
  4. Muestra de valores.
  5. Franja temporal para el desarrollo del sistema.
  6. Franja temporal para validación del sistema.
  7. Parámetros del sistema a optimizar.
  8. Optimización del sistema.
  9. Filtros de mercado.
  10. Análisis de Montecarlo.
  11. Walkforward
  12. Validación sobre resto de valores.
  13. Validación sobre resto de mercados.
  14. Conclusiones

Escala temporal

Lo primero de todo es saber qué timeframe que vamos a utilizar, es decir, la escala temporal. Yo he pensado en trabajar con barras diarias. Siempre trabajaré con el mercado cerrado ya que muchos de nosotros durante el día tenemos un trabajo que atender.

Mercado a operar

Tengo una base de datos completa del mercado americano, por lo que en principio desarrollaré el sistema para operar valores del Nyse y Nasdaq.

Valores a operar

Mi intención es desarrollar la operativa en el SP500.

Muestra de valores

Para desarrollar el sistema no lo haré con el total de los componentes del Sp500. Primero porque son muchos y el proceso de optimización sería muy lento, y segundo porque tendría que incluir también las acciones deslistadas, es decir, aquellas que en su día pertenecieron al SP500 pero ya no. Cuando haya desarrollado el sistema chequearé que funciona para el total de componentes incluyendo las acciones deslistadas, pero eso será más tarde. De momento voy a quedarme con un 10% de los valores del Sp500 como muestra. Para ello, los criterios que seguiré serán:

  • Valores que en 1998 ya estuvieran cotizando en el SP500.
  • Mínimo un valor de cada supersector.
  • Valores suficientemente líquidos y con una volatilidad no excesiva, es decir, con un rango de 2 a 10% máximo.

Los valores elegidos son los siguientes:

Franja temporal para desarrollo del sistema (In sample)

Tenemos que elegir un intervalo temporal en el que desarrollaremos el sistema. Tiene que ser lo suficientemente amplio como para abarcar diferentes acontecimientos en los mercados, tendencias alcistas, bajistas, mercados laterales.

El periodo elegido para desarrollar el sistema es desde enero de 1998 hasta diciembre de 2012.

Franja temporal para validación del sistema (Out of sample)

Una vez optimizado nuestro sistema tenemos que probarlo en un intervalo en el que no hayamos realizado ningún test anteriormente. De esta forma evitamos que el sistema se haya adaptado a este tramo. Estaremos simulando una puesta en funcionamiento real.

En nuestro caso veremos analizaremos los resultados post optimización para el periodo comprendido entre enero de 2013 y junio 2017.

También veremos lo sucedido entre enero de 1994 y diciembre de 1997

Parámetros del sistema a optimizar

Tenemos que elegir las condiciones de entrada y salida del sistema así como las variables que hay que optimizar. Puede ser el periodo de una media, el volumen de negociación, la volatilidad máxima, etc.

Contra menos variables tenga nuestro sistema mejor que mejor. Los sistemas del Curso de Bolsa Online se caracterizan por tener pocas variables y por lo tanto son más robustos y más rehaceos a estar sobreoptimizados.

Tenemos que elegir los parámetros a optimizar y los ratios o estadísticas que emplearemos para elegir la combinación óptima. Por ejemplo, podemos elegir aquellos que den mejor rentabilidad media anual,  o aquellos que generen menor pérdida máxima (MDD), u otro parámetro.

Optimización del sistema

Una vez tenemos las variables a optimizar, realizamos las optimizaciones para el periodo in sample.

Hay que tener cuidado de no elegir muchas variables, de no abarcar muchas combinaciones, porque de lo contrario colapsaremos el ordenador y seguro que sobreoptimizamos el sistema.

Una posibilidad cuando hay más de 2-3 variables es optimizar por parejas, viendo cómo influencia la variación de una variable sobre el resto de tal forma que vayamos reduciendo el número real de variables a optimizar, descartando aquellas que apenas influyen en los resultados.

Filtros de mercado

Teniendo en cuenta los resultados obtenidos, conviene ver qué ocurre si aplicamos filtros de mercado o no, y cuales son los filtros más adecuados para nuestro sistema.

Hay numerosos filtros, y la elección del adecuado puede no ser obvia.

Walkforward

Cuando operamos un sistema que tiene varias variables, normalmente vamos modificando, ajustando, las variables cada cierto tiempo. Esto es algo que también podemos simular con Amibroker, realizando lo que se conoce como walkforward.

Para ello seleccionamos un periodo previo a la operativa en el cual optimizamos las variables. Pasado este periodo operamos en real con las variables fijas según la optimización previa. Pasado un tiempo prefijado volvemos a optimizar las variables y continuamos operando en real con la nueva configuración.

Es como optimizar el sistema en una etapa In sample, pasar a out of sample durante un tiempo para luego volver a realizar una optimización en una nueva etapa in sample cotninuando de nuevo out of sample.

En el siguiente gráfico se ve perfectamente:

Análisis de Montecarlo

Durante todo el proceso iremos viendo los resultados del análisis de Montecarlo. Puedes ver más sobre esto en el siguiente post. Con Amibroker obtenemos resultados de forma inmediata.

Validación sobre el resto de valores

Ahora que tenemos el sistema operativo para los valores de la muestra tenemos que validarlo para el conjunto total del Sp500. Es una prueba de fuego, puesto que si los resultados no son ni parecidos a los del sistema aplicado sobre la muestra, significa que estamos ante un sistema demasiado sobreoptimizado e influenciado por tanto por los valores que estemos operando.

Validación sobre resto de mercados

Es importante que los resultados no sean sólo buenos en el sp500, sino que también sean válidos en otros mercados. Esto dará una idea de lo robusto que es nuestro sistema.

Conclusiones

Por último vamos a preparar una tabla resumen con los datos básicos del sistema. Estos datos serán los que utilizaremos en el futuro para comparar nuestro sistema con el resto que analicemos o desarrollemos.

Ahora que tenemos claro los valores que vamos emplear durante el desarrollo del sistema y los pasos que vamos a seguir, es hora de ponerse manos a la obra, aunque esto lo vamos a dejar para el próximo post.

Mientras tanto puedes pensar en algún sistema de trading, una base con la que comenzar a desarrollar nuestro sistema.

¿Te apuntas?

 

Suscríbete al blog y no te pierdas ningún artículo.

6 Comments

  1. juan carlos Junio 5, 2017
  2. Javi Junio 23, 2017
    • Iván Junio 25, 2017
  3. elabuelomanyo Julio 24, 2017
    • Iván Julio 24, 2017

Leave a Reply