¿Nos visitas desde USA? Entra a tu página Rankia.us.
Blog Cómo no quedarte a 2 velas en el trading

¿Evaluar o predecir mercados para operar? Apliquemos redes neuronales

Todo operador de mercados quisiera saber si el precio de mañana será mayor, menor o parecido al de hoy para operar con ganancias. Es lo que hace un especulador serio utilizando sus herramientas, conocimientos y experiencia para abrir una posición o bien al cierre de mercado o en intradía. Conseguir un alto porcentaje de "aciertos" hará que la cuenta de trading crezca. Pero son dos cosas distintas evaluar y decidir operar o predecir lo que va a ocurrir. Lo segundo puede entrar dentro de la adivinación o imaginación. Sin embargo, cuando se utilizan redes neuronales con la función de predicción las cosas ya no son interpretables desde ese punto de vista sino desde uno científico.

 

Desde la publicación tanto en la revista Trader's como en este blog de Rankia de los artículos sobre trading algorítmico como de RNA, han llegado numerosos correos electrónicos de los lectores con preguntas y consultas. Además, el evento en Madrid que se celebrará el próximo día 16 de Mayo está teniendo muchísimas inscripciones.

Se intentará con estos artículos ir dando respuesta a todos aquellos que han hecho consultas iguales o parecidas, además de dar a conocer herramientas de trabajo que aunque parezcan estar fuera del alcance de particulares no es así.

 

Evaluación de mercados

Cuando escogemos el gráfico de un activo tenemos que buscar valores y situaciones que según el método de trading que cada uno sigue para ello indiquen si el citado activo está para operar y en ese caso hacerlo comprando en positivo (largo) o en negativo (corto).

Por ejemplo, si el sistema que se sigue es con el uso de indicadores de medias móviles o con osciladores, se obtendrá que según el cruce de medias o si el oscilador está saliendo de sobre-compras o sobre-ventas se está en momento de operar y sólo queda que se de el evento para entrar en la operación.  Evaluamos siguiendo un criterio tomando una decisión.

 

Predicción de mercados

Hay operadores que siguiendo una pautas propias mediante análisis de tipo técnico, fundamental o ambos "predicen" lo que va a hacer un activo. Hay quien para operar sigue las publicaciones de determinado analistas o sus consejos, los cuales se apoyan en ocasiones en paradigmas históricos del mercado como que septiembre es un mes bajista, el rally navidad, etc. 

 

Aplicando la tecnología

En este mismo blog se ha escrito sobre los motivos de usar algo trading (trading algorítmico)  por traders particulares o también llamados minoristas como algo normal en vez de hacer trading discrecional. Para poner operativo al "robot" un día en concreto ha sido necesario que se haya hecho una evaluación de cómo ha cerrado el mercado de ese activo. Una vez evaluado, se toma la decisión con el cálculo de probabilidades  de que el precio de cierre del día que se quiere operar sea mayor, menor o parecido al último.

Para que se entienda mejor, veamos trozos del código de una red neuronal que va a evaluar y predecir matemáticamente al DAX para operarlo con un sistema de trading algorítmico. Para este caso vamos a utilizar una librería sencilla de machine learnig llamada KNN usando Python.

El K-NN es un algoritmo de aprendizaje supervisado y su uso cuando se está empezando a usar esta tecnología.facilita la comprensión y ejecución de algoritmos.

En este primer trozo de código cargamos la librería NUMPY que es una extensión de Python que constituye una biblioteca de funciones matemáticas de alto nivel. PANDAS nos ayuda a trabajar con datos que en este caso descargaremos directamente con la ayuda de la API (application programming interface) desde Yahoo Finance y tulizaremos para dibijar gráficos la función PLOT.

A continuación vendría el código de variable predictoras que cada uno usaría en función del sistema de trading que use para evaluar el mercado y hacer la predicción. La predicción que queramos que haga es que indice si el cierre del mercado del día siguiente va a ser por encima del último mediante un "1" o si cerrará por debajo con un "-1".  El sistema comprará en la apertura con el 1 o venderá en corto con -1.

Usaremos los datos del DAX desde el 1 de enero del 2014 hasta el 3 de mato del 2019. Para ello definimos que escoja el 70% de ese período (0.7) para aprender y entrenar y el resto para probar la red. El resto del código es la forma que queremos que haga el aprendizaje y muestre datos de SHARPE RATIO y los gráficos.

 

Ahora viene lo que todo el mundo desea, ver los resultados:

En este primer gráfico (azul)  vemos la evolución del DAX en el período de pruebas. Si en septiembre del 2017 se hubiese abierto una posición y mantenida hasta el 3 de mayo del 2019 estaría en ligeras pérdidas con respecto a la compra. Eso sí, prácticamente estuvo todo el 2018 perdiendo casi el 20% del precio de compra.

 

La gráfica de color verde muestra que si se abre una posición el mismo día que en la imagen anterior apenas se estuvo en pérdidas y que acaba el 3 de mayo por encima del 30% sobre el precio de compra. Es decir, que siguiendo lo que dice el algoritmo de machine learning cada día se abre una posición de compra o de venta en corto en función de lo que nos indique. Las indicaciones se ven en la terminal de linux de esta manera:

Haciendo uso del cálculo estadístico con la función sharpe ratio obtenemos un valor de 1.73 y que el modelo en el modo de aprendizaje y entrenamiento obtiene un 60% de posiciones acertadas en el modo test o uso real está en 53%. Todo lo que sea por encima del 50% quiere decir que ya es un sistema ganador. 

 

Conclusión 

Observemos el gráfico donde juntamos lo que hace el DAX (azul) y lo que hace nuestro sistema de red neuronal (verde):

Es evidente cómo le gana al mercado y que haciendo caso de su previsión sobre el precio de cierre del día siguiente obtiene más del 30% en un período de menos de dos años si ntener un drawdown importante. Este modelo está basado en el que se usa en tradingalgoritmico.com para el sistema automático GENIUS. Cuando se dota al algoritmo ganador (como es GENIUS que sabe evaluar el día de mercado de calcular la salida de una posición intradiaria y si es matemáticamente viable entonces calculará el momento de entrada)  de una RNA que evalúe y indique  con su predicción si la posición que tiene que tomar es largo (1), corto (-1) o no operar por la probabilidad de rango estrecho (0) se consigue aumentar la eficacia y rentabilidad permitiendo aumentar el riesgo en las posiciones con mayor número de contratos.

Autor del blog

  • estebandaniel

    Esteban Pérez. Analista técnico independiente, trader a tiempo completo y formador. Muchos años conociendo los mercados y sabiendo cómo negociarlos. Programador y usuario de sistemas automáticos (tradingalgoritmico.com). Colaborador como formador en Forexdax (forexdax.com), en Rankia y en la revista Trader's entre otras colaboraciones.

Envía tu consulta

Este sitio web usa cookies para analizar la navegación del usuario. Política de cookies.
Cerrar