Artículo publicado en la Revista Traders by Rankia
En este artículo proponemos utilizar un modelo de Aprendizaje Máquina para mejorar los sistemas de rotura del rango inicial. Después de explicar el modelo y describir las ventajas del mismo, ponemos como ejemplo el sistema resultante sobre el futuro del DAX sin optimizar sus parámetros para no caer en el sesgo de selección; demostrando así que merece la pena su estudio más en profundidad para acomodarlo a la operativa de cada trader.
Los sistemas de rotura del rango de apertura, fueron popularizados en los años ’90 por Toby Crabel en su libro “Day Trading with Short Term Price Patterns and Opening Range Breakout”, del que se derivó el nombre con el que se conoce hoy en día de sistemas ORB.
En realidad hay muchas variaciones de este tipo de sistemas pero en general se trata de establecer un rango de precios tal que el sistema compra cuando el precio cruza hacia arriba el límite superior o vende cuando el precio cruza hacia abajo el límite inferior. Existen multitud de métodos para establecer este rango inicial, lo que determina distintas variantes del método para tratar de aproximarse a un mercado concreto.
En este artículo consideramos otro método para ver si compramos o vendemos antes de que el precio cruce el rango delimitado en los primeros minutos después de la apertura y es por lo que lo denominamos “ORB predictivo” en contraposición al “ORB tradicional”. Conviene aclarar que lo que describimos a continuación no es un sistema completo, sino una serie de ideas para mejorar los sistemas ORB.
En el ORB tradicional, el precio tiene que hacer algún movimiento después de la apertura para clasificar el día como alcista o bajista, normalmente como hemos dicho anteriormente el precio debe romper un rango establecido en los primeros minutos. De esta manera hay un compromiso entre la precisión en la clasificación y el beneficio potencial. Así cuanto más esperamos en delimitar el rango desde la apertura, mayor será el rango inicial en precio, por lo que aunque sea mayor la probabilidad de que el precio siga esa tendencia establecida, lo cierto es que será menor el posible beneficio potencial.
En las Figuras 1 y 2, el lector puede observar un ejemplo de un día cogido al azar, pero muestra muy bien uno de los problemas de los sistemas ORB tradicionales. No es siempre sencillo elegir la duración del periodo de apertura, ya que como hemos visto, un periodo demasiado corto puede llevarnos a equivocar la tendencia del día, pero uno demasiado grande puede llevarnos a operar cuando el beneficio potencial es ya pequeño.
Qué pasaría si pudiésemos predecir la tendencia grande del día pero usando un rango de tiempo desde la apertura muy pequeño. En estas condiciones tendríamos todo el beneficio potencial ya que operamos pronto en el día y la tendencia que estamos aprovechando estaría en la dirección correcta, o la más grande en ese día. En la Figura 3 se muestra la comparativa para el mismo día mostrado en las dos figuras previas, entre el beneficio potencial de un sistema ORB tradicional y el sistema que proponemos en este artículo y que denominamos ORB predictivo. La idea es usar técnicas de Aprendizaje Máquina (Machine Learning en inglés) para predecir si el día va a ser alcista o bajista pocos minutos después de la apertura.
Aproximación basada en técnicas de Aprendizaje Máquina
Como primera aproximación al problema del trading algorítmico usando aprendizaje máquina, implementaremos una estrategia simple para predecir si el día es alcista o bajista mirando el rango de apertura del día. Para ello partimos de datos de apertura-máximo-mínimo-cierre con una granularidad de 1 minuto. Con estos datos, necesitamos etiquetar cada día como alcista o bajista, de manera que podamos entrenar un sistema de aprendizaje máquina que encuentre la relación entre los datos y la etiqueta.
Estrategia de etiquetado
Idealmente, la etiqueta de cada día indicaría con un grado de confianza alto la tendencia real del día, evitando ser engañado por movimientos más pequeños que van en contra de la tendencia real.
Como hemos comentado anteriormente, cuanto más grande hacemos el rango de apertura, más confianza tenemos en la tendencia que el sistema predice, pero elegir un rango muy grande sería perjudicial ya que perderíamos beneficio potencial. Trataremos de generar un rango que una vez que se rompa, tengamos una alta confianza que esta rotura indica la tendencia general del día.
Un rango muy ancho o estrecho puede llevarnos a no etiquetar el día, o etiquetarlo de manera contraria a nuestros intereses. Este hecho se puede ver en la Figura 5.
Lo que sugerimos nosotros para generar este rango de precio para cada día, es calcular el valor más pequeño entre dos rangos, el rango entre la apertura y el máximo del día por un lado y el rango entre la apertura y el mínimo de cada día. Este valor lo hemos denominado “bisagra”. La Figura 6 muestra la bisagra con un ejemplo.
Cada día podemos tener periodos con tendencia alcista y tendencia bajista. Las bisagras tratan de capturar la magnitud de la tendencia más pequeña, la tendencia “falsa”, de manera que podamos tener una estimación del tamaño de los movimientos en contra de la tendencia “verdadera”. En este caso, se puede ver que aunque el día empieza con una tendencia bajista finaliza siendo un día alcista, con un rango más grande en el lado alcista.
Podemos ahora calcular una media deslizante de unos cuantos días, calculando para cada día la media de las bisagras de los últimos días (un valor razonable de días pasados puede ser 20). Ahora podemos usar este promedio de los últimos 20 valores de bisagra para estimar cuanto de grande un movimiento en contra de la tendencia general solía ser en los últimos días, de tal manera que podemos tener alguna certeza que una vez que hay un movimiento mayor que el estimado, es probable que no sea una tendencia “falsa”. Esto nos permite adaptarnos a la volatilidad del mercado en cada momento.
Se puede fijar el rango de la estrategia ORB alrededor de este promedio o un poco mayor para asegurarnos que la rotura de este rango implica una tendencia mayor de lo que solían ser las tendencias “falsas”. Después de algunos análisis hemos encontrado que valores en el intervalo (media, media+2*desviaciones estándar) funcionan bien y podemos seleccionar uno u otro valor dependiendo del activo que estemos evaluando.
Una manera de ver si el rango es apropiado, consiste en analizar cuándo el precio cruza este rango en el día. Si en la mayoría de los días, el precio cruza el rango al principio del día, el rango puede que sea demasiado estrecho. Por el contrario, si hay muchos días en el que el precio no cruza el rango, el rango puede ser demasiado ancho (recordar la Figura 5).
Una vez que se tiene un rango razonable, podemos simplemente usarlo para etiquetar el día como alcista o bajista dependiendo si el rango se rompe hacia arriba o hacia abajo respectivamente. Con estas etiquetas podemos tratar de usar un sistema de aprendizaje máquina supervisado para predecir si el día a operar va a ser alcista o bajista. Como ya se ha explicado anteriormente si no usáramos la predicción y esperáramos a la rotura del rango de apertura como es la técnica de ORB tradicional, una parte importante del movimiento ya habría sucedido.
Como podemos ver en la Figura 2, para cuando el precio del activo ha roto el rango, el potencial beneficio ya casi se ha esfumado. Por tanto, trataremos de predecir si el día es alcista o bajista mirando los días previos y unos pocos minutos al principio del día. De esta manera podemos operar antes y obtener un mayor beneficio.
Prediciendo la etiqueta
Una vez que tenemos los días etiquetados, se organizan para entrenar un algoritmo de aprendizaje máquina que prediga la etiqueta alcista/bajista de un día basándonos en una serie de características como el precio de los N primeros minutos del día a predecir y la apertura, máximo, mínimo y cierre de los M días anteriores.
Se probaron múltiples algoritmos de aprendizaje máquina en la modalidad de clasificación supervisada, y el que resultó funcionar mejor fue una regresión logística, con una tasa de acierto entre el 55% y el 65% dependiendo del activo y del periodo de tiempo. Puede parecer una tasa baja pero es buena para este tipo de tarea tan compleja. Otros algoritmos de aprendizaje máquina más sofisticados como SVM (Support Vector Machine) o Random Forest no fueron capaces de obtener mejores resultados con un número tan bajo de días en el conjunto de entrenamiento (se usan alrededor de 5000 días para el conjunto de entrenamiento).
Estrategia de Trading
Basándonos en estas predicciones tenemos que desarrollar una estrategia de trading para operar sobre el activo. Nuestra estrategia la denominamos ORB predictivo ya que basamos nuestro sistema en el ORB pero tenemos en cuenta la predicción que hacemos del día a operar en base a unos parámetros que explicamos a continuación.
Primero, como dijimos anteriormente, necesitamos conocer un cierto número de minutos al principio del día para hacer la predicción, y ese es nuestro primer parámetro (lo habíamos llamado N en el apartado anterior). También necesitamos determinar cuántos días pasados usamos para nuestra predicción (lo habíamos llamado M en el apartado anterior).
Una vez que el activo ha abierto y habiendo esperado los N primeros minutos, se realiza la predicción de acuerdo a nuestro modelo de regresión logística y operamos en la dirección predicha, es decir, comprando en días predichos como alcistas y vendiendo en días predichos como bajistas, sin esperar la rotura del rango que hubiera marcado el activo hasta ese momento.
Cuando hemos abierto la posición y aunque se podrían realizar muchas otras estrategias, en este artículo vamos a considerar que ponemos una orden stop-loss y una orden límite de toma de beneficios cuya posición también hemos considerado como parámetros de diseño de nuestra estrategia.
Una característica adicional y muy relevante de nuestro sistema ORB predictivo, es que al estar basado en un modelo de aprendizaje máquina para el problema de clasificación, no sólo nos proporciona la clasificación binaria en sí misma (alcista o bajista), también nos proporciona las probabilidades de que el día pertenezca a cada una de las dos clases, lo que nos da una idea de la confianza, que el modelo otorga a la predicción. Una posible idea para aprovechar esta peculiaridad es que cuanto mayor sea la confianza se puede arriesgar más dinero, o cuando por el contrario cuando la confianza sea pequeña podemos no operar en ese día.
Estrategia de Trading sobre el futuro del DAX
Vamos a exponer ahora un ejemplo de sistema sobre el futuro del DAX con los siguientes parámetros:
- Número de minutos a esperar desde la apertura del activo N=4
- Número de días pasados en los que basar la predicción M=5
- Órdenes de stop loss y take profit: stop loss días alcistas= apertura - (media(bisagras) + 0.25*std(bisagras)) take profit días alcistas = apertura + (media(bisagras) + 1.25*std(bisagras)) stop loss días bajistas = apertura + (media(bisagras) + 0.25*std(bisagras)) take profit días bajistas= apertura -(media(bisagras) + 1.25*std(bisagras))
- El umbral de confianza 0.6 (el sistema no opera a no ser que asigne un 0.6 de probabilidad a la clase más probable)
Son parámetros que creemos que pueden dar buenos resultados por lo visto anteriormente pero que no han sido optimizados con respecto a ninguna métrica objetivo para no caer en el sesgo de selección. La media de las bisagras es una media simple de las últimas 20 sesiones y “std” es la desviación estándar de las bisagras de las últimas 20 sesiones.
En la Figura 7 se grafica la curva del balance acumulado en puntos en el futuro del DAX y en la Tabla 1 se pueden ver algunas métricas del sistema para estos parámetros y descontando 0,75 puntos en concepto de comisiones y deslizamientos por cada operación de entrada y salida.
Un sistema como el expuesto en este artículo, entrenado para el futuro Emini SP500, está operando a la vez que escribimos este artículo en la competición ROBOTRADER en su X edición (ver en www.robotrader.es la pestaña de competición y el concursante Mario Alfonso) y los lectores interesados podrán seguir su evolución hasta finales de Mayo de 2020 que es cuando termina la competición.
Los resultados expuestos son sólo un ejemplo de lo que el sistema puede dar de sí, pero se podría mejorar adecuándolo a las características del mercado y a nuestra personalidad como traders. Así se pueden elaborar diversos procedimientos de trade management, money management, position sizing, etc. no tratados en este artículo. Esto lo dejamos a la imaginación y consideración del lector.
Conclusión
Parece que la regresión logística como sistema de clasificación de días alcistas y bajistas a partir de unos pocos minutos después de la apertura y del comportamiento de los días anteriores, permite realizar un sistema ORB predictivo como se sugiere en este artículo; obteniéndose unos resultados mejores que los sistemas de rotura del rango inicial, que es como operan la mayoría de los sistemas ORB que hemos llamado tradicionales.