Vamos a detallar el proceso que seguimos para desarrollar un algoritmo de trading, lo hemos resumido en 10 etapas. Dichas etapas son secuenciales ya que dependemos del resultado de la etapa anterior para desarrollar la siguiente.
Contenidos:
Como siempre tienes un video en YouTube donde se resume este contenido. Dada la limitación de tiempo del video, siempre en el artículo escrito vas a tener más detalles y ejemplos que en los videos, por lo que te recomiendo ver el video y después leer el artículo.
Te recomiendo leer del tirón este artículo y después puedes ir al Artículo / Video: 5 pasos para crear un robot de trading algorítmico, donde verás ya en las herramientas que utilizamos cómo se hace este proceso desde un punto de vista práctico en 5 pasos. No entenderás bien ese artículo sin leer este primero.
Al final de este artículo vas a tener un resumen de todos los links que sugiero hacia a otros artículos, por lo que no seas impaciente, lee tranquilo del tirón y al final del artículo en la tabla de links decide cual es el siguiente. No olvides dejar un comentario, sobre el artículo!
La idea
Siempre tenemos que empezar con una idea que proporcione cierto edge a nuestro favor, es decir algo que tenga esperanza matemática positiva, dicho de otra manera un comportamiento del mercado que nos dé una cierta ventaja estadística.
Para comprender fácil este concepto de esperanza matemática podemos poner el ejemplo de tirar una moneda.
- Si tú tiras una moneda al aire muchas veces, por la ley de los grandes números, aproximadamente el 50% de las ocasiones será cara y el 50% de las ocasiones será cruz; por lo que si apostamos ganando un euro con las caras y perdiendo un euro cuando salga cruz, no ganaríamos nada es decir la esperanza matemática es cero.
Esperanza matemática = [(1 tirada ganadora) x (1€)] + [(1 tirada perdedora) x (-1€)] = (+1€) + (-1€) = 0€
- Imaginemos ahora el mismo ejemplo pero cada vez que salga cara nos pagan 2€ y cada vez que salga cruz perdemos 1€ por lo tanto si las caras siguen saliendo el 50% de las ocasiones la esperanza matemática de este sistema es de 1€ por cada 2 tiradas.
Esperanza matemática = [( 1 tirada ganadora) x (2€)] + [(1 tirada perdedora) x (-1€)] = (+2€) + (-1€) = 1€
- Imaginemos ahora que nos pagan y perdemos un euro, pero en esta ocasión la probabilidad de las caras es del 75% y de las cruces es del 25%, tendríamos un sistema que gana 1,25€ por tirada.
Esperanza matemática = 75% x [( 1 tirada ganadora) x (2€)] + 25% [(1 tirada perdedora) x (-1€)] = (+1,5€) + (-0,25€) = 1,25€
Por lo que ya podemos intuir que las ventajas vienen determinadas, bien porque nos hacen ganar más veces de las que nos hacen perder, bien porque cuando ganamos, ganamos más que cuando perdemos y por supuesto todas las combinaciones posibles que se te ocurran.
En el trading en general necesitamos partir de una idea sólida que perdure en el tiempo y que tenga una esperanza matemática positiva. A esta idea sólida se le llama patrón, ventaja o anomalía.
Ese patrón, esa ventaja o esa anomalía debe ser sencilla y se ha tenido que producir un número de veces suficiente como para que sea estadísticamente significativa.
Una de las principales ventajas que tenemos los traders algorítmicos es que no tenemos por qué creernos una idea como veremos en las etapas siguientes podemos validar estadísticamente los resultados económicos de una idea en cuestión de segundos.
Resumamos por tanto como debería ser nuestra idea de trading:
- Sencilla.
- Estadísticamente significativa.
- Que perdure en el tiempo.
- Con esperanza matemática positiva.
En el artículo / vídeo 5 fuentes para obtener ideas de patrones o ventajas para hacer trading algorítmico, puedes conocer cuáles son las fuentes más sencillas para obtener este tipo de ideas.
El código
Una vez tienes la idea necesitas un código que te permita primero testear esa idea en el pasado y comprobar por ti mismo que al menos en el pasado fue rentable, segundo realizar las pruebas de robustez y gestión del riesgo.
Hasta la aparición de aplicaciones de trading algorítmico para particulares fue una gran barrera de entrada en el mundo algorítmico para los traders retail, ya que debíamos:
- Dedicar miles de horas a formarnos en programación además de que debías escoger el lenguaje de programación correcto que, como todos sabemos y como todas las cosas va cambiando durante el tiempo.
- Pagar a un programador por un código que ni siquiera sabíamos si iba a ser rentable.
Ahora ya no es necesario saber programar ya que existe software de trading algorítmico que te generan automáticamente el código a golpe de click y además en diferentes lenguajes de programación.
Puedes ampliar información en el Artículo / Vídeo: Los 3 mejores Software de trading algorítmico para trader particulares.
Obtener dicho código es tan sencillo que yo sabiendo programar en Easy Language (que es el lenguaje de programación que utilizan las plataformas Tradestation y Multicharts) prefiero por su sencillez utilizar StrategyQuant que es una aplicación especialmente creada para traders algorítmicos retail. Si te interesa puedes ver el Artículo / Vídeo: StrategyQuant: ¿El mejor software de trading algorítmico?
El backtest
Con el código ya generado y utilizando una aplicación de software específica para traders algorítmicos como StrategyQuant es muy sencillo back-testear el pasado. Además puedes introducir ligeros cambios en la idea original y obtener los resultados de muchos muchos años en cuestión de segundos.
Este punto es mucho más importante de lo que parece y representa un antes y un después para un trader. Pasas de tener que creerte un sistema u operativa que alguien te enseña (normalmente a cambio de una contraprestación económica) a poder saber con completa seguridad si el sistema fué rentable en el pasado y si por tanto estás o no estás frente a un sistema que al menos fue rentable.
El haber sido rentable en el pasado no tiene porqué significar que vaya a ser rentable en el futuro, hay muchos motivos por lo cuales esto es así, te dejo el artículo / Video Trading algorítmico: 10 errores que debes evitar donde podrás ver los principales.
Optimizar el sistema
Aunque yo no realizo esta etapa ya que quiero realizar el trading algorítmico más fácil posible, hay otros compañeros traders algorítmicos que si optimizan los parámetros de la estrategia, hay motivos a favor y en contra, pero tanto la utilices como no la utilices, debes conocer su existencia.
Por ejemplo en el caso de la estrategia que hemos comentado en el Artículo / Video Trading algorítmico QUÉ ES y CÓMO EMPEZAR de Iván Sherman que consiste en:
- Si el SP500 durante tres días consecutivos ha sido bajista.
- A partir del cuarto día, en un 80% de los casos será alcista y llegará a cruzar la media simple de los últimos cinco días.
Es posible que algunos compañeros quieran optimizar:
- La salida, y probarán con una salida cuando el precio cruce la media de los últimos cuatro, seis, siete, etcétera días, escogiendo el número de días que consideren es mejor.
- La entrada, y probarán con una entrada con 2, 4, 5, etcétera días bajistas.
Finalmente tomarán los parámetros optimizados y tirarán adelante con esa estrategia optimizada.
En mi caso como he comentado yo no realizo esta tarea porque si veo un patrón que ha sido definido hace tiempo y que funciona prefiero explotarlo tal y como fue definido, el principal motivo es que cuando optimizamos estamos buscando una combinación de parámetros óptima y tiene consecuencia tanto en el número de trades como en su replicabilidad futura, pero respeto completamente otras visiones en este tema.
Además a una idea siempre le vamos a añadir un nivel de protección y un nivel de toma de beneficios, por lo que variar también los parámetros del patrón en sí mismo añade muchos grados de libertad adicionales.
La gestión del riesgo
Si seguimos tomando el caso del sistema sugerido por Iván donde una vez sucedida la caída de tres días consecutivos vamos a abrir una posición larga, es decir, una posición de compra esperando que el precio llegue en el 80% de los casos al nivel de la media de los últimos cinco días, lo que debemos preguntarnos es: ¿qué pasa en ese 20% de los casos cuando no llega a ese nivel de salida?
Es importante que tengas claro que el trading es completamente probabilístico es decir tenemos una probabilidad de ganar y una probabilidad de perder. No existe ningún sistema que gane el 100% de las ocasiones por lo tanto siempre siempre siempre siempre debemos marcar un nivel de protección para que en las ocasiones en que perdamos la cuantía de dicha pérdida no sea superior a los beneficios que obtenemos cuando el sistema tiene beneficios. Ese nivel de protección es lo que llamamos Stop Loss.
Si gracias al backtest conocemos lo que ha pasado en ese 20% de las ocasiones que el sistema pierde, vamos a poder saber cual es la máxima pérdida histórica que el sistema tiene y vamos a poder definir el nivel de stop que deseamos marcar:
- Si ponemos nuestro nivel de stop en la máxima pérdida, no estaremos variando la idea inicial.
- Si marcamos un nivel de stop menor, esto hace por supuesto que el sistema cambie y deberemos re-testear el sistema con el nuevo nivel de stop.
Con el nivel de stop claro podemos calcular fácilmente el lotaje (es decir con qué cantidad de contratos) con el que vamos a operar este sistema. Veremos que en mi caso en la práctica lo vamos a hacer al revés:
- vamos a definir el nivel de pérdida en €, y
- el software calculará el lotaje, ya sea con PIPS o puntos o bien a través del ATR.
Si esto no lo comprendes bien, en el Artículo / Video Cómo calcular el nivel de stop perfecto de un sistema de trading, te quedará claro.
En este punto, yo además de marcar el nivel de stop (stop loss) voy a marcar un nivel de salida en beneficio (take profit) y finalmente un tiempo máximo de duración de la operación ya que para mí todos los patrones pasado un cierto tiempo pierden su capacidad de predicción y si no llegan a sus objetivos deben cerrarse las posibles operaciones independientemente de que las operaciones llegado a su tiempo máximo estén en pérdidas o ganancias.
Retest y pruebas de robustez
Una vez hemos añadido los niveles de riesgo, la salida por beneficios, el tiempo máximo de duración de la operación y el tamaño de la operación ya tenemos un sistema de trading completamente finalizado es decir un algoritmo que ya se podría operar.
Debemos volver a re-testear el sistema completo ya que ahora es posible que hayamos incluido tantos parámetros, que el comportamiento del patrón ya no tenga nada que ver con la idea inicial, pudiendo continuar siendo rentable pero dejando de ser económicamente interesante, por lo que realizaremos un retest en la aplicación de software que estemos utilizando.
Ahora llega uno de los momentos claves, realizar las pruebas de robustez. Las pruebas de robustez pretenden estresar los sistemas sometiéndolos a condiciones adversas para ver cómo se comportan y de esa manera tener una idea de la robustez del sistema una vez estén operando en real.
Nadie sabe qué es lo que va a pasar en el futuro y si alguien te dice lo contrario, no te fíes (si alguien lo supiera…) lo que sí es cierto es que si tienes una idea exacta de lo que un sistema hizo en el pasado y estresas ese sistema con situaciones adversas y reacciona bien, creo firmemente que tienes más oportunidades que el sistema en real funcione mejor que si no lo haces.
Evidentemente en realidad nunca funcionará igual que en todo este proceso de desarrollo y test pero siempre será mejor tener estas garantías adicionales.
Las pruebas de robustez que recomendamos son:
OOS vs IS
Consiste en comparar la estabilidad de los resultados del sistema comparando los resultados en un periodo no analizado, contra los resultados obtenidos en el periodo que utilizamos para el análisis previo.
Test de Montecarlo
Consiste en simular variaciones de precios, spread, orden de los trades, desaparición de trades, etcétera para ver cuales son los resultados que obtendremos con esas turbulencias en el mercado. Esperamos que nuestra estrategia esté en un punto medio de la nube de curvas que se generan.
Test de Permutación de Parámetros
Variamos los parámetros de las reglas que utilizamos en nuestro sistema, en el caso de la estrategia de Iván, variaríamos el número de días bajista que marcan la entrada, variaríamos los días de media que marcan la salida y así con el resto de parámetros que determina el sistema y compararemos los resultados de nuestra estrategia original con la mediana. Esperamos que nuestra estrategia no sea un outlier de la batería de estrategias que resultan.
Para mi este es el mejor test que podemos realizar si la estrategia es rentable tanto si salimos con la media de 5 como la de 3 y la de 10, pasando por todas las posibles en esos tramos, significa que es robusta.
Periodo Ciego
En mi caso me gusta dejar un tramo final (unos meses) con los que no he trabajado para nada y realizar un retest en la plataforma donde operaremos y comparar los resultados de dicha plataforma con la data del bróker contra el que operaremos (por ejemplo Metatrader, Multicharts o Tradestation) con los resultados que obtenemos en StrategyQuant. Conseguimos:
- Ver si en ejecución los resultados se parecen al desarrollo.
- Ver esos últimos meses sólo en ejecución y valorar en función de esos datos si pasamos de etapa o no.
Este tema da para muchos artículos pero te recomiendo el Artículo / Video: 4 pruebas de robustez en el trading algorítmico.
Prueba en demo
En mi opinión es importante antes de poner a operar en real un nuevo sistema, operarlo en demo. Esto te va a evitar muchos problemas ya que al principio sin duda cometerás errores pero muchas veces a pesar de haber hecho un buen trabajo sin errores pondrás a operar sistemas que están sobre-optimizados. Hablaremos de este concepto largo y tendido en los diferentes artículos y vídeos pero quédate con que el operar en demo un tiempo prudencial te va a evitar muchos disgustos.
Además operar en demo te permitirá ver si el sistema encaja contigo, aunque tienes todos los datos en backtest muchas veces el ver cómo opera el sistema y las emociones que nos genera determina si lo conectamos o no.
En mi caso particular después de estos años de experiencia tradeando algorítmicamente (llevo más de 10.000 operaciones en real) en lugar de poner un sistema a operar en demo lo que hago es basarme en los resultados del periodo ciego de la etapa 6 para decidir si conecto o no el sistema.
Empieza pequeño
Los traders algorítmicos tenemos dos problemas muy concretos:
- Como tardamos tanto en el proceso de desarrollo test y validación de los sistemas acabamos sinceramente enamorados de los algoritmos que creamos y muchas veces super-estimamos lo bueno que es un sistema.
- Como tenemos muchos datos tendemos a mirar los datos que mejor apoyan nuestra idea, por ejemplo lo que gana un sistema obviando lo que pierde, hablo por ejemplo de número de operaciones consecutivas perdedores, drawdown, etcétera.
Sea como fuere, vas a minimizar siempre los problemas siempre siendo prudente cuando conectas un sistema y empezando con un riesgo muy bajito algo que no te importe perder y así los errores y el coger experiencia te va a salir más barato.
En este artículo he intentado darte los mejores consejos que tengo, pero si quieres que te diga el más importante, es este: empieza pequeño, el mercado estará allí mañana para que puedas operar mañana con más riesgo.
Voy a poner un ejemplo que te va a servir aplicar este concepto incluso en el caso de que el sistema sea muy bueno. Imagina que generamos un sistema fantástico de rotura en máximos que cuando gana, gana muchísimo pero que cuando pierde, pierde una cantidad media pero en muchas ocasiones. Mucha gente mira los datos globales y los pone a operar con un riesgo por operación “grande”. Imagina que dicho sistema tiene que perder 10 veces de media para obtener una posición ganadora y que decidimos asignar un 2% a este sistema. Lo normal será que se nos vaya a más del 20% de drawdown la cuenta. ¿Estás preparado para esto? Ya te digo yo que no, así que empieza bien pequeño.
Escala el riesgo
Una vez has pasado el periodo demo y has puesto la operativa en real en pequeño si ves que los resultados que obtienes en ambos periodos son parecidos a los que se obtuvieron backtest ahora sí ya es el momento de operar con el riesgo normal.
Desconfía de aquellos sistemas que se comportan en real mucho mejor que backtest tanto como de los sistemas que se comportan mucho peor.
Si tienes problemas emocionales con las pérdidas y los vaivenes del sistema operando en pequeño, no lo escales sigue pequeño hasta que te sientas cómodo.
Para determinar el tamaño idóneo tienes que pensar en términos de portafolio. Aquí te dejo uno de los videos más importantes de esta saga. Artículo / Video: El portafolio: El santo grial del trading algorítmico que trata de este tema.
Monitoriza la ejecución de tu sistema
Muchas veces dedicamos una cantidad ingente de tiempo a la generación y análisis de los sistemas en el periodo inicial y cuando llega el momento de ponerlo en real lo ponemos en real y no monitorizamos el resultado de la ejecución.
Es vital dedicar el tiempo suficiente a monitorizar los resultados de tus sistemas, no importa que ganen o pierdan lo que tienes que tener claro es que los sistemas en real deben perder o ganar en línea con el backtest.
Te pongo un ejemplo si un sistema lo pones a operar y te gana mucho más que en backtest tienes que controlarlo ya que de la misma manera que se ha puesto a ganar como un loco en cualquier momento se da la vuelta y empieza a perder como un loco, no digo que haya que desconectarlo, ni mucho menos, pero sí hay que monitorizarlo más que los sistemas que se comportan más o menos igual que el backtest.
Te recomiendo también que periódicamente midas las correlación de los sistemas, ya que este es un tema que puede variar perfectamente a lo largo del tiempo.
Aquí te voy a dar un tip importante y es que los sistemas sí o sí se van a comportar peor en real. Durante estos años de experiencia me ha quedado claro que nunca los sistemas en real se comportan igual que en backtest por lo tanto si piensas que esto es una ciencia exacta, olvídate del trading y busca otra cosa.
Te recomiendo leer del tirón este artículo y después puedes ir al Artículo / Video: 5 pasos para crear un robot de trading algorítmico, donde verás ya en las herramientas que utilizamos cómo se hace este proceso desde un punto de vista práctico en 5 pasos.
Resumen y links de Trading Algorítmico Fácil
Ahora ya sabemos que el trading algorítmico se basa en disponer de un algorítmo, un código y una conexión estable para operar, pero nos faltan muchas cosas, te sugiero que continúes con el siguiente con el siguiente contenido:
5 pasos para crear un robot de trading algorítmico
Vamos a ver de forma práctica y en sólo 5 pasos cómo crear un sistema de trading algorítmico a partir de una idea, patrón o ventaja de trading.
5 fuentes para obtener ideas de patrones o ventajas para hacer trading algorítmico
Buscar patrones o ventajas de trading algorítmico puede parecer difícil, pero es mucho más fácil de lo que te imaginas, en este artículo vamos a ver los 5 recursos gratuitos que utilizo para buscar patrones o ventajas.
Los 3 mejores Software de trading algorítmico para trader particulares
Existen paquetes de software que permiten a los traders particulares competir con los institucionales, al menos en parte. Vamos a ver los 3 mejores para hacer trading algorítmico.
StrategyQuant: ¿El mejor software de trading algorítmico?
StrategyQuant es hoy por hoy el mejor y más completo software para un trader algorítmico particular, en este artículo vamos a ver los porqués.
Trading algorítmico: 10 errores que debes evitar
Errores vamos a cometer, pero que no sea porque no te los hayan dicho, aquí tienes los 10 principales errores que cometemos los traders retail al hacer trading algorítmico.
Trading algorítmico QUÉ ES y CÓMO EMPEZAR
En este artículo vas a aprender todo lo que necesitas conocer como trader particular para empezar en el mundo del trading algorítmico retail.
Cómo calcular el nivel de stop perfecto de un sistema de trading
Si pierdes con cabeza tienes muchas más posibilidades de durar haciendo trading y si duras es mucho más probable que acabes siendo rentable. Aprende en este articulo a calcular correctamente tu stop loss.
4 pruebas de robustez en el trading algorítmico
Debemos estresar los sistemas para minimizar las posibilidades de sobre optimización y que los robots sean rentables en real. En este artículo vamos a ver las 4 mejores pruebas de robustez que realizamos los traders algorítmicos.
El portafolio: El santo grial del trading algorítmico
Uno de los puntos más importantes del trading algorítmico es la construcción del portafolio, en este artículo veremos los motivos y qué debemos tener en cuenta cuando construyamos nuestro portafolio algorítmico.
Hasta aquí el artículo, espero que haya sido suficientemente claro y te haya servido. Si ha sido de utilidad déjamelo en comentarios. Si te gustaria ver un contenido concreto que no encuentras déjalo también en comentarios. Respondo a todos los comentarios.