CommencezCommencez gratuitement

Créer des caractéristiques de moyenne mobile et de RSI

Nous voulons 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 complexe. À la place, on peut condenser l'information des points précédents en un seul pas de temps à l'aide d'indicateurs.

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

Un autre indicateur technique courant est l'indice de force relative (RSI), défini ainsi :

\(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() par l'argument timeperiod.

Une valeur courante pour le RSI est 14; nous allons donc l'utiliser comme l'un des paramètres dans nos calculs.

Cette activité fait partie du cours

Machine Learning pour la finance en Python

Voir le cours

Instructions de l’exercice

  • Créez une liste de noms de caractéristiques (commencez par une liste ne contenant que '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 avec 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