Predicción del precio de XRP con Prophet

Antonio Cota
LCC-Unison
Published in
4 min readDec 9, 2021
Photo by Glen Carrie on Unsplash

En la siguiente Articulo se pretende utilizar el modelo de Facebook Prophet para hacer la predicción del Precio de la Criptomoneda XRP utilizado Python como herramienta para el desarrollo del proyecto con ayuda de Colab

¿Qué es Prophet?.

Prophet es un modelo para pronosticar datos de series de tiempo basado en un modelo aditivo en el que las tendencias no lineales se ajustan a la estacionalidad anual, semanal y diaria, además de los efectos de las vacaciones.

Funciona mejor con series de tiempo que tienen fuertes efectos estacionales y varias temporadas de datos históricos. Prophet es robusto ante los datos faltantes y los cambios en la tendencia, y normalmente maneja bien los valores atípicos.

¿Cómo actúa Prophet?

y(t) = g(t) + s(t) + h(t) + e(t)

  • modelos de tendencia cambios no periódicos ; lineal o logístico
  • la estacionalidad representa cambios periódicos ; es decir, semanal, mensual, anual
  • vínculos en efectos de vacaciones ; en horarios potencialmente irregulares ≥ 1 día (s)

De manera similar a un modelo aditivo generalizado ( GAM ), con el tiempo como regresor, Prophet ajusta varias funciones lineales y no lineales del tiempo como componentes.

Modelar la estacionalidad como un componente aditivo es el mismo enfoque adoptado por el suavizado exponencial … La formulación GAM tiene la ventaja de que se descompone fácilmente y acomoda nuevos componentes según sea necesario, por ejemplo, cuando se identifica una nueva fuente de estacionalidad.

Prophet está “enmarcando el problema de pronóstico como un ejercicio de ajuste de curvas” en lugar de mirar explícitamente la dependencia temporal de cada observación.

Tomando dataset.

Se utilizo la base de datos recolectada en Cryptodatadownload

Importando librerías.

import numpy as npimport pandas as pdfrom sklearn import preprocessingfrom sklearn.model_selection import train_test_splitimport matplotlib.pyplot as pltfrom fbprophet import Prophetfrom fbprophet.plot import plot_plotlyfrom fbprophet.diagnostics import cross_validationfrom fbprophet.diagnostics import performance_metricsfrom fbprophet.plot import plot_cross_validation_metricfrom forex_python.converter import CurrencyRatesimport datetimefrom google.colab import filesfrom os import removeimport glob

Entendiendo la Base de datos.

df = pd.read_csv(archivo, skiprows=1)close = df['close']ax = close.plot(title='XRP/MXN')ax.set_xlabel('date')ax.set_ylabel('close')plt.show()

Nos Podemos dar cuenta que la base de datos nos muestra la información del mas nuevo al antiguo, por lo tanto, tenemos que hacer un preprocesamiento a ella.

Preparación de la Base de datos.

  1. Se toman únicamente los 2160 datos más actuales que sería equivalente a 90 días para utilizar en el modelo.
  2. Se cambia la divisa de USD a MXN
df = df.iloc[:tiempo_usados]datos = df.reindex(index=df.index[::-1])datos.reset_index(inplace=True, drop=True)datos['close'] = datos['close'].apply(lambda x: x*dolarpeso)

Las filas que utilizare para mi modelo serán la fecha y el precio que cierra en cada hora, están como date y close respectivamente.

Aplicando el Modelo de Predicción.

fbp = Prophet(interval_width = 0.95,daily_seasonality=True)fbp.fit(datos_validos)predict = fbp.make_future_dataframe(periods=periodo_p,freq='H')forcast = fbp.predict(predict)forcast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail(10)

Prophet nos retorna una lista con 4 columnas:

  1. ds: Las fechas nuevas que se van a predijeron.
  2. yhat: es el valor de la variable dependiente que predice el modelo.
  3. yhat_lower, yhat_upper: Intervalo de incertidumbre

Ahora Graficamos:

plot_plotly(fbp,forcast)

Esta grafica nos muestra que el XRP el día de hoy 6 de diciembre el valor en la gráfica tiende a bajar.

graph = fbp.plot_components(forcast)

Prophet también nos genera otras graficas. La primera nos indica el valor en la moneda en los tiempos usados. La segunda nos dice un promedio del precio de la moneda en la semana. La tercera nos dice el promedio del valor de la moneda en el transcurso de los días.

Puede ver la continuación de mi proyecto en GitHub

--

--

Antonio Cota
LCC-Unison

Estudiante en Ciencias de la Computación en la Universidad de Sonora