Prédiction du Prix du Bitcoin avec TimeGPT et Python

Publié le 20 février 2025

Dans cet article, nous allons explorer comment utiliser TimeGPT, un modèle avancé de prévision de séries temporelles, pour prédire le prix du Bitcoin (∞BTC-USD) à partir des données de Yahoo Finance. Nous allons implémenter cela en Python en utilisant la bibliothèque Nixtla et visualiser les prédictions avec Matplotlib.

1. Prérequis

Avant de commencer, assurez-vous d’avoir Python installé, ainsi que les bibliothèques suivantes :

pip install nixtla yfinance pandas matplotlib

Assurez-vous aussi de créer une clé API Nixtla sur https://dashboard.nixtla.io.

2. Récupération des données du Bitcoin

Nous allons utiliser Yahoo Finance pour récupérer les prix historiques du Bitcoin sur 2 ans :

import yfinance as yf
import pandas as pd

# Charger les données Bitcoin
crypto_symbol = "BTC-USD"
data = yf.download(crypto_symbol, period="2y", interval="1d")

# Préparer les données
data = data[['Close']].reset_index()
data.columns = ['timestamp', 'value']  # Adapter aux paramètres de TimeGPT

Nous renommons les colonnes pour correspondre aux exigences de TimeGPT :

  • timestamp : la date de chaque enregistrement
  • value : le prix de clôture du Bitcoin

3. Prédiction avec TimeGPT

Initialisation du client Nixtla

Nous devons initialiser TimeGPT avec notre clé API Nixtla :

from nixtla import NixtlaClient

# Initialiser le client avec la clé API
API_KEY = "VOTRE_CLE_API"
nixtla_client = NixtlaClient(api_key=API_KEY)

Conversion des dates

Pour éviter toute erreur, nous convertissons les dates en datetime :

data['timestamp'] = pd.to_datetime(data['timestamp'])

Prédiction avec TimeGPT

Nous allons prédire les 15 prochains jours :

forecast_df = nixtla_client.forecast(
    df=data,
    h=15,             # Horizon de prédiction (15 jours)
    freq='D',         # Fréquence journalière
    time_col='timestamp',  # Nom de la colonne des dates
    target_col='value'     # Nom de la colonne des valeurs
)

Nous obtenons un DataFrame contenant les prédictions de TimeGPT.

4. Visualisation des prédictions

Nous allons maintenant afficher les prédictions avec Matplotlib.

import matplotlib.pyplot as plt

# Convertir les timestamps des prédictions
forecast_df['timestamp'] = pd.to_datetime(forecast_df['timestamp'])

# Tracer les données historiques et les prédictions
plt.figure(figsize=(12, 6))
plt.plot(data['timestamp'], data['value'], label="Prix Historique (BTC)", color="blue")
plt.plot(forecast_df['timestamp'], forecast_df['TimeGPT'], label="Prédiction TimeGPT", color="red", linestyle="dashed")

plt.xlabel("Date")
plt.ylabel("Prix du Bitcoin (USD)")
plt.title(f"Prédiction du prix de {crypto_symbol} avec TimeGPT (h=15)")
plt.legend()
plt.xticks(rotation=45)
plt.grid()
plt.show()

Nous avons maintenant un graphique clair montrant les prix passés du Bitcoin et ses prédictions futures !

5. Conclusion

Nous avons utilisé TimeGPT pour prédire le prix du Bitcoin avec les données de Yahoo Finance et affiché les résultats sous forme de graphique. Ce système peut être appliqué à d’autres cryptos ou actifs financiers !

Points à retenir :

  • Nixtla TimeGPT est simple à utiliser avec forecast()
  • Prendre en compte les avertissements (éviter un horizon trop long)
  • Bien convertir les timestamps en datetime pour Matplotlib

Code complet

from nixtla import NixtlaClient
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt


# Remplace par ta clé API Nixtla
API_KEY = "CLE_API"

nixtla_client = NixtlaClient(api_key=API_KEY)

#Télécharger les données Bitcoin depuis Yahoo Finance
crypto_symbol = "BTC-USD"
data = yf.download(crypto_symbol, period="2y", interval="1d")

#Préparer les données pour TimeGPT
data = data[['Close']].reset_index()
data.columns = ['timestamp', 'value']  # Adapter aux paramètres attendus par Nixtla

#Conversion correcte des dates en datetime (évite l'erreur Matplotlib)
data['timestamp'] = pd.to_datetime(data['timestamp'])

#Envoyer les données à TimeGPT via Nixtla
forecast_df = nixtla_client.forecast(
    df=data,
    h=15,             # Prédire 15 jours pour plus de précision
    freq='D',         # Fréquence journalière
    time_col='timestamp',  # Nom de la colonne des dates
    target_col='value'     # Nom de la colonne des valeurs
)

#Convertir les dates des prévisions pour éviter l'erreur Matplotlib
forecast_df['timestamp'] = pd.to_datetime(forecast_df['timestamp'])

#Tracer les prédictions TimeGPT
plt.figure(figsize=(12, 6))
plt.plot(data['timestamp'], data['value'], label="Prix Historique (BTC)", color="blue")
plt.plot(forecast_df['timestamp'], forecast_df['TimeGPT'], label="Prédiction TimeGPT", color="red", linestyle="dashed")

plt.xlabel("Date")
plt.ylabel("Prix du Bitcoin (USD)")
plt.title(f"Prédiction du prix de {crypto_symbol} avec TimeGPT (h=15)")
plt.legend()
plt.xticks(rotation=45)
plt.grid()
plt.show()

#Afficher les 5 premières prédictions
print(forecast_df.head())