Development

Predicción del precio del Bitcoin usando LSTM con Keras y Tensorflow Parte 1

Publicado por
Jesus Rangel
Predicción del precio del Bitcoin usando LSTM con Keras y Tensorflow Parte 1
Escrito por
Jesus Rangel
Publicado en
March 26, 2024
Tiempo de lectura
Categoría
Development

Bienvenido al tutorial “Predicción del precio del Bitcoin usando LSTM con Keras y Tensorflow”.

El objetivo de este tutorial es aprender diversos temas que luego serán utilizados todos juntos para generar una estrategia de inversión. Las primeras 4 partes se enfocan en la creación de una red neuronal para predecir el precio del bitcoin y como usar esas predicciones para probar varias estrategias de inversión. Las partes 5 y 6 se enfocan en cómo optimizar ciertos parámetros a la hora de construir la red neuronal y como hacer la estrategia de inversión mucho más robusta.

¿Qué necesitas para este tutorial? En orden:

- Python 2.7

- Librerías de Python: Pandas, SKLearn, Matplotlib, Tensorflow, Keras

- Data de Coindesk

Software adicional (no obligatorio):

- IPython (Para mejores visualizaciones)

- Pycharm (IDE para python)

- CUDA para Tensorflow (para correr los modelos más rápido, requiere GPU y Linux)

Si necesitas ayuda para instalar alguno de los requerimientos puedes encontrar varios tutoriales online, de todos modos a continuación explicaré como conseguir algunos. Python viene preinstalado en macOS y en la mayoría de las distribuciones de Linux, para windows puedes chequear las instrucciones que se encuentran más abajo. Pandas, SKLearn, Matplotlib, Tensorflow, y Keras son librerías de python. Keras debe ser instalado después de Tensorflow, los demás en cualquier orden. No debería haber grandes problemas para instalar cualquiera de las librerías excepto Tensorflow en caso de querer utilizar CUDA (puede ser complicado de lograr). En Windows debe escribir el path de Pip (software para instalar librerías) para poder utilizarlo.

- Como instalar python 2.7 en Windows (en inglés)

- Como instalar librerías de python con pip (en inglés)

Dependiendo del hardware, entrenar una red neuronal puede tomar desde varios minutos hasta horas. En mi caso, este tutorial fue elaborado con Tensorflow y CUDA utilizando una tarjeta de video NVIDIA 1060 GTX de 6GB de memoria, pero el modelo igual puede ser entrenado sin soporte de GPU sin tomar mucho tiempo.

Rápida introducción a redes neuronales y LSTM (puedes seguir adelante si conoces éstos términos):

En el mundo del análisis de data, las redes neuronales son sistemas usados para predecir, clasificar, o encontrar patrones en la data, diseñados de una manera similar a cerebros humanos. Las redes neuronales tienen distintas clases, por ejemplo RNNs (Recurrent Neural Networks). Esta clase incluye un estado de memoria interna que hace que las predicciones sean más dinamicas. Una red LSTM (Long Short-Term Memory) es un RNN donde la célula con memoria interna “recuerda” el valor por varios intervalos de tiempo, lo que es útil para hacer predicciones con series de tiempo.

Rápida introducción a la creación y prueba de una estrategia de trading (puedes seguir adelante si conoces éstos términos):

En el mundo del trading, cualquier estrategia de inversión debe ser probada con data existente para asegurarse de que dicha estrategia pueda ser rentable. Para hacer esto creamos una función en python que compra o vende un activo financiero, en este caso bitcoin, de acuerdo a ciertas reglas. Al final del ejercicio podemos verificar qué tan rentable fue la estrategia. Es importante recordar que el comportamiento histórico de una estrategia de inversión puede ayudar a tomar decisiones, pero no es garantía de resultados futuros.

Adicional a estas dos introducciones existen varios conceptos que deberían ser repasados, no son completamente necesarios para entender el tutorial, pero pueden ser útiles, en caso de querer implementar alguna de éstas ideas en un ejercicio o en la vida real, algunos conceptos serán explicados brevemente al momento de ser utilizados:

- Mercado Alcista y Bajista (Finanzas)

- Volatilidad (Finanzas)

- Look-ahead bias (Finanzas)

- Bitcoin (Criptomoneda)

- Lista/Array (Python)

- Matriz de confusión (Análisis de Data)

- Función de pérdida (Redes Neuronales)

- Método del gradiente conjugado (Redes Neuronales)

- Epoch, Batch Size y otros conceptos de redes neuronales (Redes Neuronales)

Si quieres utilizar una tarjeta de video (GPU) para correr los modelos más rápido, los siguientes links pueden ser útiles. Los pasos pueden ser largos y frustrantes, recomiendo seguirlos sólo si conoces del tema y tienes el tiempo suficiente para hacerlo, o si luego planeas utilizar CUDA para correr otros modelos. Todos los tutoriales a continuación están en inglés ya que es difícil conseguir documentación en español para este tema.

- Chequea si tu tarjeta de video puede utilizar CUDA

- Descarga CUDA

- Descarga CudNN

- Instala CUDA (Linux)

- Instala CUDA (Windows)

- Cómo usar tensorflow con GPU (Linux)

- Cómo usar tensorflow con GPU (Windows)

Antes de comenzar a escribir código, es necesario decidir si quieres utilizar un proyecto/IDE de python. Si no quieres, igual puedes escribir y ejecutar código en el terminar luego de escribir “python2.7”, por ejemplo:

 proyecto/IDE de python

Como puedes ver, abrí un nuevo terminal, escribí python2.7, presioné enter y ejecuté varias lineas de código sin ningún problema.

Descarga nuestro Clever UI KIT 👇

Gracias. Te será enviado un mail confirmando la inscripción
¡Ups! Algo salió mal al enviar el formulario.
Gracias. Por rellenar el formulario
¡Ups! Algo salió mal al enviar el formulario.
Gracias. Te será enviado un mail confirmando la inscripción
¡Ups! Algo salió mal al enviar el formulario.
Gracias. Te será enviado un mail confirmando la inscripción
¡Ups! Algo salió mal al enviar el formulario.
Gracias. Por rellenar el formulario
¡Ups! Algo salió mal al enviar el formulario.
Gracias. Por rellenar el formulario
¡Ups! Algo salió mal al enviar el formulario.

Crea tu propio manual de marca con esta plantilla gratuita.
¡Organiza tus activos de diseño de forma más eficiente!