CommencerCommencez gratuitement

Créer des variables de moyenne mobile et d'RSI

Nous souhaitons ajouter des données historiques à nos modèles de Machine Learning pour améliorer les prédictions, mais ajouter de nombreux pas de temps historiques est délicat. À la place, nous pouvons condenser l'information des points précédents en un seul pas de temps grâce à des indicateurs.

Une moyenne mobile est l'un des indicateurs les plus simples : c'est la moyenne des points de données précédents. C'est la fonction talib.SMA() de la bibliothèque TAlib.

Un autre indicateur technique courant est le Relative Strength Index (RSI). Il est défini par :

\(RSI = 100 - \frac{100} {1 + RS}\)

\(RS = \frac{\text{gain moyen sur } n \text{ périodes}} {\text{perte moyenne sur } n \text{ périodes}}\)

Le nombre de périodes n est défini dans talib.RSI() via l'argument timeperiod.

Une période courante pour le RSI est 14 ; nous l'utiliserons donc comme l'un des réglages dans nos calculs.

Cet exercice fait partie du cours

<cours>Machine Learning pour la finance en Python</cours>
Voir le cours

Instructions de l’exercice

  • Créez une liste de noms de variables (commencez par une liste contenant uniquement '5d_close_pct').
  • Utilisez des périodes de 14, 30, 50 et 200 pour calculer des moyennes mobiles avec talib.SMA() à partir des cours de clôture ajustés (lng_df['Adj_Close']).
  • Normalisez les moyennes mobiles par le cours de clôture ajusté en divisant par Adj_Close.
  • À l'intérieur de la boucle, calculez le RSI avec talib.RSI() à partir de Adj_Close en utilisant n pour le paramètre timeperiod.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

feature_names = ____  # a list of the feature names for later

# Create moving averages and rsi for timeperiods of 14, 30, 50, and 200
for n in [____]:

    # Create the moving average indicator and divide by Adj_Close
    lng_df['ma' + str(n)] = talib.SMA(lng_df['Adj_Close'].values,
                              timeperiod=n) / lng_df[____]
    # Create the RSI indicator
    lng_df['rsi' + str(n)] = talib.____(lng_df['Adj_Close'].____, timeperiod=____)
    
    # Add rsi and moving average to the feature name list
    feature_names = feature_names + ['ma' + str(n), 'rsi' + str(n)]

print(feature_names)
Modifier et exécuter le code