¿Es posible programar un bot con Machine Learning que invierta en criptomonedas con ganancias? 1ª Parte

En esta serie de artículos vamos a realizar una pequeña investigación sobre las posibilidades que nos ofrece la Inteligencia Artificial para predecir los mercados, y si es posible programar sin grandes recursos un pequeño script que genere beneficios.

Cuando hablamos de Inteligencia Artificial nos estamos refiriendo a una red neuronal que realiza un aprendizaje automático. Es un campo complejo que lleva evolucionando mucho tiempo y que va a modificar (mucho más) todos los aspectos de nuestra vida en los próximos años.

Sí, es todo muy espeso, en este artículo podéis leer una explicación mucho más amable.

Vamos a utilizar una arquitectura LSTM, que es el recurso más común que podemos encontrarnos en la web cuando se trata de trading, y nos ayudaremos de Keras (sobre Tensorflow) una librería de alto nivel que nos va a facilitar mucho el trabajo.

 

Enfoque del problema

Como ya sabemos que nuestra capacidad para emitir ordenes de compra y venta es limitada y que no podemos entrar en la liga High-frequency trading vamos a intentar programar la versión más sencilla posible de trading…

Por el momento también nos vamos a olvidar de comisiones de compra y venta (aunque hay algunas plataformas que no tienen como 2gether) y simplemente vamos a intentar predecir el valor de cierre del bitcoin para el próximo día.

Si el bot predice que el valor subirá -> compra!
Si piensa que va a caer ->vende!

Así de sencillo 🙂

 

Los datos

El pilar fundamental del machine learning son los datos. Por muy bien programado que esté el algoritmo no obtendremos ningún resultado sin los datos adecuados.

Es importante tener el tamaño adecuado de información, ni escueta ni infinita, y sobre todo que esté correctamente relacionada, si no el algoritmo acabará “aprendiendo” relaciones inexistentes.

Un buen lugar donde ir en busca de información es Quandl

En este primer bot vamos a utilizar la información más básica que podemos obtener del bitcoin, su ticket diario, y la descargaremos de una API en ese mismo instante para trabajar siempre sobre los últimos valores conocidos.

Esta es la API que usaremos:

https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=EUR&limit=2000

Que nos devuelve los últimos 2000 tickets, desde 31-05-2014 hasta hoy 21-11-2019, y para cada día tenemos esta información:

 

Entrenando una primera versión

Del conjunto de 2000 datos vamos a retirar los últimos 30, los usaremos más adelante…

Del conjunto restante dividimos un 80% (desde el 2014 hasta finales del 2018) para entrenar el algoritmo, el 20% restante (hasta el 22-10-2019) será el grupo de datos contra el que comprobaremos los resultados:

No vamos a entrar por el momento en detalles de capas, neuronas, optimización etc

¡Ahora vamos a entrenar!

 

Primeros resultados

Los primeros resultados son sorprendentes:

O eso parece al menos… La línea morada es la predicción del precio de cierre, la azul el valor real. Hagamos zoom en cualquier zona:

Aquí está pasando algo raro… ¿no? El valor que predice (morado) parece una copia con un dia de retraso del valor real…

¿Qué está fallando?

El algoritmo ha “aprendido” a predecir el valor nuevo tomando el anterior y los datos no le aportan mucho más.

La razón está (principalmente) en que solo le hemos proporcionado una fuente de datos que están relacionados pero no tienen una “visión” externa, nada más en lo que apoyarse y el rendimiento pasado no es un indicador de resultados futuros

 

¿Cómo podemos mejorarlo?

Por ejemplo podemos probar a proporcionarle datos nuevos y de calidad, en Uncommon Finance tenemos varios indicadores propios… ¿mejorarán la predicción? En los próximos artículos iremos integrando mejoras y experimentando con el conocimiento desarrollado estos años en la lectura de mercados y los modelos económicos, aportándole contexto y evitando que sea una caja negra..

Y para cerrar, aqui está la gráfica de beneficios obtenidos con 1.000€ de base en un entorno ficticio libre de comisiones.

Si te animas a aportarnos tu experiencia escríbenos y hacemos pruebas.
 
*
 
Photo by Ilyuza Mingazova on Unplash