CommencezCommencez gratuitement

Ingénierie de caractéristiques à partir du volume

Nous allons utiliser des modèles non linéaires pour obtenir des prédictions plus précises. Avec les modèles linéaires, les caractéristiques doivent être corrélées linéairement à la cible. D'autres modèles de Machine Learning peuvent combiner des caractéristiques de façon non linéaire. Par exemple, que se passe-t-il si le prix monte lorsque la moyenne mobile du prix augmente, mais que la moyenne mobile du volume diminue ? La seule façon de saisir ces interactions est soit de multiplier les caractéristiques, soit d'utiliser un algorithme de Machine Learning capable de gérer la non-linéarité (p. ex. les forêts aléatoires).

Pour intégrer plus d'information qui pourrait interagir avec d'autres caractéristiques, on peut ajouter des caractéristiques faiblement corrélées. Nous allons d'abord ajouter les données de volume, disponibles dans lng_df sous la colonne Adj_Volume.

Avant de commencer, souvenez-vous que pour les fonctions de TA-Lib (comme SMA()), vous devez fournir des tableaux Numpy, et non des objets pandas. Vous pouvez utiliser l'attribut .values d'une Series ou d'un DataFrame pandas pour l'obtenir sous forme de tableau Numpy.

Cette activité fait partie du cours

Machine Learning pour la finance en Python

Voir le cours

Instructions de l’exercice

  • Créez la variation en pourcentage sur 1 jour du volume (utilisez pct_change() de pandas) et assignez-la à la colonne Adj_Volume_1d_change de lng_df.
  • Créez la moyenne mobile sur 5 jours de la variation en pourcentage sur 1 jour du volume et assignez-la à la colonne Adj_Volume_1d_change_SMA de lng_df.
  • Tracez des histogrammes de ces deux nouvelles caractéristiques à l'aide de la liste new_features.

Exercice interactif pratique

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

# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
                        timeperiod=____)

# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()
Modifier et exécuter le code