LoslegenKostenlos starten

Feature Engineering aus dem Volumen

Wir werden nichtlineare Modelle einsetzen, um genauere Vorhersagen zu treffen. Bei linearen Modellen müssen Features linear mit dem Ziel korreliert sein. Andere Machine-Learning-Modelle können Features auf nichtlineare Weise kombinieren. Beispiel: Was ist, wenn der Preis steigt, wenn der gleitende Durchschnitt des Preises steigt, während der gleitende Durchschnitt des Volumens fällt? Solche Wechselwirkungen lassen sich nur erfassen, indem man die Features multipliziert oder einen Algorithmus verwendet, der Nichtlinearität abbilden kann (z. B. Random Forests).

Um mehr Informationen einzubeziehen, die mit anderen Features interagieren könnten, können wir schwach korrelierte Features hinzufügen. Zuerst fügen wir Volumendaten hinzu, die wir in lng_df in der Spalte Adj_Volume haben.

Bevor du beginnst, denk daran: Für TA-Lib-Funktionen (wie SMA()) musst du Numpy-Arrays und nicht pandas-Objekte übergeben. Du kannst das Attribut .values einer pandas Series oder eines DataFrame verwenden, um es als Numpy-Array zurückzugeben.

Diese Übung ist Teil des Kurses

<Kurs>Maschinelles Lernen für Finanzen in Python</Kurs>
Kurs ansehen

Übungsanweisungen

  • Erstelle eine 1-Tages-Prozentänderung des Volumens (verwende pct_change() aus pandas) und weise sie der Spalte Adj_Volume_1d_change in lng_df zu.
  • Erstelle einen 5-Tages-Gleitenden Durchschnitt der 1-Tages-Prozentänderung des Volumens und weise ihn der Spalte Adj_Volume_1d_change_SMA in lng_df zu.
  • Zeichne Histogramme dieser beiden neuen Features, die wir mit der Liste new_features erstellt haben.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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()
Code bearbeiten und ausführen