Cómo crear un sistema de trading
Cómo crear un sistema de trading: hoy vamos a alejarnos del análisis técnico habitual en La Bolsa de Psico. Y vamos a ver qué habría que hacer para llegar a disponer de un sistema de trading. Y lo vamos a ver con un ejemplo. Eso sí, que nadie intente aplicar el ejemplo, que ya nos conocemos.
El objetivo es que todo el mundo sepa los pasos que serían necesarios, los análisis que hacer para ver si el sistema puede ser aceptable o no, y, por fin, cómo llevarlo a buen término. El ejemplo que voy a emplear no es el más adecuado. Ya lo aviso. Porque no tendría suficientes operaciones como para determinar su validez. Pero da igual. Lo importante es quedarse con el concepto.
Pues vamos con ello. Vamos con los pasos que habría que seguir.
Fijando objetivos del sistema de trading
Sí, el primer paso que hay que hacer al diseñar un sistema es fijar unos objetivos. Y no pueden ser unos objetivos vagos. Deben de ser unos objetivos perfectamente definidos y que puedan evaluarse para ver si el sistema es viable o no. Muchos autores (anglosajones, claro) indican que hay que seguir la técnica nemotécnica SMART.
Esto quiere decir que los objetivos deben de ser específicos (specific en inglés), medibles (measurable en inglés), alcanzables (attainable en inglés), relevantes (relevant en inglés) y limitado en el tiempo (Time bound en inglés). Si tus objetivos no cumplen alguna de estas condiciones, mal estás empezando.
En el ejemplo que voy a usar, el objetivo sería este: crear un sistema en una semana que opere el futuro grande del Ibex con un retorno del 35% anual, un máximo drawdown del 20% con un porcentaje de acierto de las operaciones superior al 50% y siguiendo unas reglas definidas.
Este objetivo cumpliría las reglas SMART, por lo que, estamos empezando el sistema bien. Ahora hay que seguir con el siguiente paso…
Definiendo el sistema de trading
Ahora viene lo más complicado. Se trata de definir cómo se va a hacer las entradas, cómo las salidas, cuáles van a ser los stops…. Aquí tienes que aplicar todo lo que has aprendido. Y definirlo muy bien. Pues intentar operar en base a roturas de resistencia, en base a velas, en base a figuras… Lo que sea. pero tienes que definirlo bien. Y fijar unos parámetros si quieres optimizarlo.
Como ejemplo voy a emplear algo muy sencillo. Parece que desde que Mario Draghi es presidente del Banco Central Europeo, las reuniones de política monetaria suponen subidas. Es algo de lo que mucha gente habla. Y tal vez se pueda aprovechar con un sistema.
Pues bien, el sistema va a ser abrir una posición larga al cierre de vela diaria x días antes de la reunión del BCE y cerrar la posición larga al cierre de vela diaria y días después de la reunión del BCE. Para ajustarlo un poco más, vamos a considerar que x puede estar entre 1 y 4 (es decir, abrir posición larga al cierre de la vela diaria entre 1 y 4 días antes de la reunión del BCE) y que y puede estar entre 0 y 2 (es decir, cerrar posición larga al cierre de la vela diaria el día mismo de la reunión, el siguiente o el posterior). Y le vamos a llamar sistema Mario Draghi.
Para este sistema no vamos a aplicar ningún stop. Al ser cierre de vela diaria esperaremos a que cierre la vela deseada y allí se cerrará la posición. Y, como te he dicho, vamos a usar el futuro grande del Ibex para operar. Eso querrá decir que habrá que disponer de un capital suficiente para, al menos, cumplimentar las garantías que se necesitan para operar el futuro grande del Ibex (actualmente 8.500 euros). Pero ya te incidiré en este aspecto posteriormente.
A la hora de operarlo, podrás hacerlo automáticamente (mediante un sistema automático que deberás programar) o bien de manera manual. Como las condiciones del sistema son tan sencillas, puedes hacerlo de manera manual, sin más que poner orden a mercado a cierre del día.
Probando y optimizando el sistema de trading
Back testing del sistema de trading
Bueno, pues ha llegado el momento de probar el sistema con los datos del pasado. Es lo que se llama hacer un backtesting. Lo primero que hay que tener en cuenta es desde cuándo Mario Draghi es presidente del BCE. Y cuál fue la primera reunión de política monetaria que tuvo. Pues desde ahí habrá que hacer las pruebas.
Para hacer las pruebas necesitarás un software con acceso a datos del Futuro Continuo del Ibex, futuro grande. Yo he usado el Pro Real Time escogiendo el contrato IBEXXXXX. Y una de dos, o sabes de informática y haces un programa para sacar los datos (o contratas a alguien que te lo haga), o tendrás que ir anotando los datos a mano en una hoja Excel, por ejemplo.
Como mucha gente no dispondrá de los conocimientos necesarios para hacer el programa, yo me he creado una hoja Excel. Y allí he anotado los precios de cierre de cada una de las sesiones en las que ha habido reunión de política monetaria del BCE. También los de las 4 sesiones anteriores y las 2 siguientes.
La primera reunión de Mario Draghi fue el 8 de diciembre de 2011. Por tanto empezamos a escribir los datos desde esa fecha. Y acabamos con la última, de momento, el 9 de marzo de 2017. En la misma hoja vamos a ir escribiendo también los resultados de las operaciones que saldrían de operar todas las posibilidades: desde abrir el día 4 antes de la reunión hasta cerrar el día 2 después de la reunión.
Anotamos los datos considerando que cada punto del contrato grande del futuro del Ibex son 10 euros y unos gastos entre comisiones y slippage de 45 euros. Es decir, que si en una operación nos saliera +100 puntos del Ibex, consideraríamos de ganancias (100×10)-45 = 955 euros de beneficio. Igual, si la operación fueran -100 puntos, tendríamos (-100×10)-45 = -1.045 euros.
Es importantísimo tener en cuenta tanto las comisiones como el slippage. Porque, en caso de no tenerlo, los datos estarían falseados. Y pudiera ser que un sistema que pareciera bueno, al luego aplicarlo en real con esas comisiones se viera que no vale para nada. Y eso teniendo en cuenta que estamos operando con el futuro grande. Si se hiciera con el mini Ibex, donde el porcentaje de comisiones y slippage es aún mayor, ni te cuento.
Pues una vez que se tienen anotados todos los cierres y hechos los cálculos, llega el momento de intentar descifrar cuál es la mejor entrada y la mejor salida. Y resulta que en toda la serie que tenemos, el sistema óptimo nos dice que habría que abrir posición al cierre de 4 días antes de la reunión y cerrar posición al cierre de la vela siguiente. Es decir, que si la reunión tiene lugar un jueves, como es habitual, habría que abrir largos al cierre de la vela del viernes antes. Y cerrar el largo al cierre de la vela del viernes siguiente. Es decir, de viernes a viernes.
Tomando los datos con estas consideraciones, se obtiene que la ganancia del sistema en todo el período, es decir, desde el 8 de diciembre de 2011 al 9 de marzo de 2017 sería de 41.265 euros. Y la curva de ganancia sería la siguiente:
En el gráfico, el eje x mostraría el número de operaciones y el eje y las ganancias acumuladas.
Pues parece una cantidad importante, ¿no te parece? Y sólo con un contrato grande del Ibex. Es decir, que con sólo 8.500 euros de garantías podrías haber sacado 41.265 euros en algo más de 5 años. Lo mismo hasta piensas que habría que operarlo. Craso error.
De momento mira que durante el primer año hubo momentos de pérdidas, por lo que necesitarías más de los 8.500 euros. Sería el momento de hacer algún que otro cálculo. Como por ejemplo el máximo drawdown del sistema, para saber si lo puedes asumir. Aquí sale un máximo DD de -6.745 euros. O sea, que como poco deberías considerar que necesitas los 8.500 euros más esos 6.745 para haberlo podido operar.
Walk-Forward tests
No, todo lo que has hecho hasta ahora no sirve para saber si el sistema es bueno. Porque has sacado un sistema optimizado para lo que ha ocurrido en el pasado. Ahora se trata de intentar ir hacia delante con el sistema. Probarlo yendo hacia delante.
Para ello vamos a tomar primero el período 2012-2013. Vamos a optimizar el sistema para ese período y probarlo en 2014. Luego haremos lo mismo con 2013-2014 y probaremos en 2015 y, por último, volveremos a repetir con 2014-2015 y testearemos 2016.
Haciendo eso nos sale que para 2012-2013 lo mejor sería abrir largo 4 días antes de la reunión y cerrar al cierre dos días después. El resultado neto sería de 10.260 euros. Pues bien, si aplicamos esto a 2014 saldría una ganancia neta de 12.240 euros para 2014.
En el caso de 2013-2014 saldría que lo mejor sería abrir posición larga 3 días antes de la reunión y cerrar 2 días después. Saldría un beneficio de 28.720 euros. Y si se aplicara esto a 2015 tendríamos un resultado de -2.170 euros. Es decir, 2015 no sería para nada un buen año.
Y en el caso de 2014-2015 saldría como mejor opción abrir 3 días antes y cerrar 1 día después. El resultado sería de 17.090 euros y si lleváramos esta estrategia a 2016 sacaríamos 15.460 euros.
Los períodos de dos años se llamarían In-sample y los de un año donde revisar el resultado del sistema optimizado se llamaría Out-of-sample.
Pues bien, lo suyo sería comparar las curvas del sistema optimizado con este walk-forward para estos años. Y si las curvas tiene forma similar, entonces es que el sistema tendría buena pinta. En este caso, tendríamos la siguiente gráfica:
Y, como ves, parece que la forma es muy parecida. Lo que haría que pudiéramos pasar al siguiente paso. ¿Operar ya el sistema en real? Ni de coña. Anda que no queda aún….
Análisis de Montecarlo
Bueno, pues el siguiente paso sería hacer un análisis de Montecarlo del sistema. Para ello se puede usar cualquier hoja Excel que hay por internet de manera gratuita. El objetivo sería fijar cuál debería ser el capital inicial, cuál la máxima pérdida permitida y en base a las operaciones, poder descubrir cuál es el tanto por ciento de ruina(posibilidades de que durante el primer año tus operaciones te lleven por debajo del nivel máximo de pérdida), cuál es la probabilidad de hacer dinero el primer año, el drawdown medio, el beneficio medio, el retorno medio y la relación retorno/DD.
Evidentemente, todo ello irá en función del capital inicial y de cuál es el stop de máxima pérdida que quieras poner. Cuanto menor sea la cantidad inicial y mayor la cantidad de pérdida máxima permitida(recuerda que deben de ser superior a la garantía exigida para poder operar con un futuro grande), mayores serán las posibilidades de que el sistema no sea viable. Y se trata de jugar con los parámetros para obtener unos datos que hagan que el sistema sea viable.
Así, el porcentaje de ruina debería ser lo más bajo posible, normalmente por debajo del 10%, el porcentaje de éxito debería ser lo mayor posible, normalmente por encima del 95%, el DD medio lo menor posible, el retorno máximo lo mayor posible y la relación retorno/DD lo mayor posible, como mínimo exigible en torno a 2.
Pues bien, tras trastear un poco, teniendo en cuenta que hay que tener más de 8.500 euros para garantías, fijé el stop de pérdidas en los 10.000. Y para obtener un porcentaje de ruina del 10% o inferior había que fijar la cantidad inicial en 17.000 euros.
Con estos datos se obtienen los siguientes resultados que se ven en el gráfico.
Y puedes ver que el porcentaje de ruina está justo en el 10%, el límite para considerarlo viable, que el DD medio está en el 19,7%, lo cual está bien, porque no es demasiado alto, el retorno medio está en el 36%, justo en el objetivo que habíamos fijado al comienzo, pero que la relación retorno/DD es de 1,74, lo que es demasiado bajo y la probabilidad de hacer dinero el primer año es sólo del 77%.
Con estos datos se antoja difícil poder llevar este sistema a la práctica. Aunque, claro está, era algo que ya sabíamos de inicio por tener tan pocas operaciones. y es que el BCE se reúne sólo 8 veces al año. De cualquier modo, si concluyéramos que el sistema sí que es viable, sería el momento de pasar a la siguiente fase que, oh cielos, tampoco sería operar en real.
Incubando el sistema de trading
Una vez que ya has llegado hasta aquí ya tienes el huevo puesto. Y se trata de darle calor para que el polluelo pueda nacer bien. Es decir, que aún no hay que lanzarse a romper el cascarón y aplicarlo en real. De lo que se trata ahora es de estar un tiempo aplicando el sistema en ficticio. Lo normal sería hacerlo durante 3 ó 6 meses. El problema es que este sistema sólo daría 8 operaciones al año y si estamos 3 meses probando sólo vamos a tener 2 ó 3 operaciones. Y con eso poco se puede evaluar.
Pero con un sistema con mayor número de operaciones sí que se podría hacer. Y con esas operaciones ya en tiempo real se podría ver si la distribución de las operaciones obtenidas es similar a la de las operaciones que se hicieron en los tests. Si es así, podremos concluir que el sistema es operativo y podremos pasar ya a la siguiente fase. Si hay una gráfica muy diferente a la que había en los tests, habrá que concluir que nos hemos equivocado en algo y habrá que revisar todos los cálculos.
Sin embargo, ya te digo que este sistema no es el más adecuado para una fase de incubación que nos sirva demasiado.
Tamaño óptimo de la posición
Antes de nada, decirte que para este sistema no he hablado en ningún momento de posicionamiento. Todos los cálculos hechos están en función de un contrato. Evidentemente, si se quiere operar con más de un contrato, habría que establecer cuál sería el mejor tamaño de posición.
Una forma de obtener el número de contratos sería usando el fixed fractional sizing. Para ello habría que emplear la siguiente fórmula:
Nº de contratos = X * Equity/BigLoss
Nº de contratos es el número entero de contratos, siempre redondeado hacia abajo.
X = Fracción fija (Fixed fraction). Se puede determinar a través del análisis de Montecarlo. Y su valor sería función de los parámetros allí obtenidos, como el porcentaje de ruina, de la media de máximo DD, del retorno anual y del ratio retorno/DD.
Equity es el valor actual de la cuenta
Big loss es la mayor pérdida
Y para este sistema habría que disponer de un capital muy importante para poder pensar en abrir más de una posición. La mayor pérdida que tenemos en los testing es de 4.985 euros. Y con eso y la X, para poder abrir 2 contratos habría que tener una posición inicial muy grande.
En otra ocasión hablaremos de la f óptima de Vince. Pero, de momento, con lo señalado aquí ya nos podría valer para el sistema.
Operando en real
Y, ahora sí, ya llega el momento de operar en real. El momento de aplicar el sistema al Ibex. Es fundamental que, si no automatizas el sistema, lo sigas a rajatabla operando a mano. Y llega el momento de seguir evaluando si el sistema vale tras comenzar a operar.
Deberás continuar dibujando las equity curves y ver si tras pasar a real se mantiene un comportamiento similar al que tenía con el walk-forward y el período de incubación. También puedes dibujar la gráfica del drawdown y ver si también es similar.
Y deberás seguir una vigilancia cada cierto período de tiempo para ver si el sistema sigue siendo válido o no. En el caso del ejemplo, al haber tan pocas operaciones habría que mantener un período elevado. En el caso de un sistema con más operaciones, podría estar bien un período de revisión cada tres o cuatro meses.
Es muy probable que el sistema no funcione tan bien como sonaba al hacer los cálculos. Pero todo dependerá de si se alcanzan los objetivos o no. Y, sobre todo, si el primer año se tienen ganancias y el sistema empieza a despegar.
Todo este artículo lo he preparado en base al último libro que he leído. Te recomiendo que, si te ha parecido interesante, puedas comprarlo y ampliar lo que aquí te he contado. Se trata del libro BUILDING WINNING ALGORITHMIC TRADING SYSTEMS de Kevin J. Davey.
Y nada más, que espero que este artículo te pueda ayudar a conocer un poco más todo lo que deberías hacer para tener un sistema de trading ganador. Y que no vuelvas a operar en base a entradas y salidas sin definir, en base a stops puestos sin analizar… Que luego encuentres el sistema adecuado a tu forma de hacer trading y que encima sirva para ganar dinero ya es cosa tuya. Te animo a que, al menos, lo intentes.
Ahhh, se me olvidaba. No sería ni mucho menos mala idea tener más de un sistema. Diversificar. Y así aprovechar lo bueno de uno para compensar cuando otro pase por mala racha. Pero, eso sí que te digo, no busques encontrar un sistema perfecto. Porque al principio te dije que había que cumplir la regla SMART. Y no parece muy «smart» buscar algo imposible….
Por último. El sistema aplicado para explicar los pasos es sólo eso, un ejemplo. Por favor, que nadie intente aplicar este sistema. Que nos conocemos…..
Foto Ars Electronica/ Flickr Creative Commons
[mc4wp_form id="19263"]
Responsable: José Carlos Estévez
Finalidad: Envío de análisis diarios
Legitimación: Tu consentimiento
Destinatarios: Tus datos se encuentran alojados en los servidores de MailChimp, ubicados en Estados Unidos y acogida al Privacy Shield
Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir tus datos. Consulta la política de privacidad.