Modelo LSTM que predice Bitcoin con Tweet Volume & amp; Sentimiento

Keras, sklearn, LSTM, Pandas, Seaborne, Matplotlib, re

El objetivo del proyecto era explorar las opciones disponibles para crear un modelo que pudiera predecir la acción del precio durante un período de tiempo seleccionado. Las variables que decidí usar estaban relacionadas con el sentimiento en Twitter. El sentimiento se basa en 2 elementos diferentes, polaridad y sensibilidad. Una métrica pasada por alto que he incluido es el volumen de tweets, que juega un papel importante o es un indicador negativo, en el que explicaré un poco más a través de esta publicación.

0. Requisitos previos

Paquetes de Python: Keras, sklearn, LSTM, Pandas, Seaborne, Matplotlib, re

IDE o Notebook

Datos: flujo de datos de Twitter para un período x, precio de BTC

1. Limpieza de datos & amp; Modelado

1.1 Limpieza del conjunto de datos de Twitter

Descartando la columna “texto”, ya que ya no es útil después de realizar el análisis de opiniones. También descartando la columna “nombre”. El siguiente paso importante es truncar el dateTime, conocido como método “piso” en Python. Que redondeará todos los tiempos a la hora.

A continuación, es importante crear una nueva función “Volumen de tweets” agregando y agrupando todos los tweets por hora.

Finalmente terminando con el conjunto de datos de Twitter:

1.2 Limpieza del conjunto de datos BTC

Columnas de caída (máximo, abierto, mínimo, volumen de moneda, precio ponderado)

Final_df creado usando Inner Join con la función de fusión de pandas, fusionándose en la columna dateTime para crear los datos.

… Etapa muy importante

Finalmente, el paso después de cualquier análisis. Esto está convirtiendo los datos para que sean digeribles para el modelo LSTM. Lo que significa convertirlo de una serie de datos en una secuencia supervisada, una matriz 3D como tal con variables normalizadas. Además, agregué 3 horas de funciones retrasadas, y la variable objetivo, por supuesto, es el precio de cierre

Ajustar los parámetros del modelo

La división de la prueba de entrenamiento fue de 200 horas de entrenamiento de un total de 294

Parámetros del modelo entrenados en 50 épocas, división de validación de 0.2 y tamaño de lote 12

Compilado con la función de pérdida MAE y Optimizer adam

2. Análisis de datos exploratorios, hallazgos clave y amp; Resultados

Comenzando con un gráfico de correlación de todas las características que se incluyeron en la creación del conjunto de datos final para el modelo. Esto le dará una indicación más clara de las características que pueden ser más importantes que otras. Lo que luego ayuda a obtener una idea de cómo predice el LSTM.

Lo que queda bastante claro en la trama es que el volumen de tweets tiene una correlación muy alta con el volumen de comercio de BTC. Las otras 2 características que tienen una correlación notable son el Volumen del Tweet y la Polaridad. Analizaré esto más a fondo produciendo 2 gráficos que mapeen estas características juntas para brindar una mejor perspectiva a continuación.

Entonces, en la figura 2, esto demuestra la correlación entre la polaridad de los tweets y el volumen de BTC que se negocia. Donde mayor sea la polaridad, menor será el volumen de comercio y viceversa. Con altos volúmenes comerciales entre las 18:00 y las 20:00 GMT.

En la figura 3, se demuestra la correlación horaria entre el volumen de tweets y el volumen de comercio de BTC, que habla por sí sola y muestra las principales horas de trabajo en Europa. Con el mayor volumen de tweets y comercio entre las 15:00 y las 20:00 GMT.

La figura 4 brinda información sobre todos los datos de la serie temporal en la que puede observar algunos patrones pequeños dentro de los datos.

La figura 5 es la parte importante, que muestra cómo se comportó el modelo en la predicción de las últimas 90 horas de los datos con un retraso de 3 horas introducido. Nota: la línea Azul representa el precio real durante este período y la línea verde representa el precio previsto.

Rendimiento del modelo al probar lo siguiente:

3. Conclusión

¿Qué me dicen mis resultados?

Que he podido crear un modelo razonable. Definitivamente existen correlaciones. Pero como muchos saben, correlación no significa causalidad. ¿Es posible que los tweets sean entonces una reacción al precio, sí. Sin embargo, esto podría suceder en patrones que el LSTM podría ayudar a hacer predicciones.

¿Es posible predecir la acción del precio de Bitcoin?

De alguna manera, qué dirección lleva unas pocas horas. Con suficientes datos sí. Lamentablemente, solo pude obtener 1,4 millones de tweets durante un período de 2 semanas y me gustaría ver los resultados en los que alguien tiene un conjunto de datos mucho más grande para estas funciones. A su vez obteniendo resultados mucho más concluyentes.

¿Algo que hubiera hecho de otra manera?

Si tiene alguna pregunta, consulta o idea, comuníquese conmigo. También busque el kernel de Kaggle para este proyecto aquí .