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>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 deAdj_Closeen utilisantnpour 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)