LoslegenKostenlos starten

Gleitende Durchschnitte und RSI-Features erstellen

Wir möchten unseren Machine-Learning-Modellen historische Daten hinzufügen, um bessere Vorhersagen zu treffen. Viele historische Zeitschritte hinzuzufügen, ist jedoch knifflig. Stattdessen können wir Informationen aus früheren Punkten mit Indikatoren in einem einzelnen Zeitschritt zusammenfassen.

Ein gleitender Durchschnitt ist einer der einfachsten Indikatoren – er ist der Durchschnitt der vorherigen Datenpunkte. Das ist die Funktion talib.SMA() aus der Bibliothek TAlib.

Ein weiterer gängiger technischer Indikator ist der Relative-Stärke-Index (RSI). Er ist definiert durch:

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

\(RS = \frac{\text{durchschnittlicher Gewinn über } n \text{ Perioden}} {\text{durchschnittlicher Verlust über } n \text{ Perioden}}\)

Die Anzahl der Perioden n wird in talib.RSI() über das Argument timeperiod gesetzt.

Eine übliche Periodenlänge für den RSI ist 14, daher verwenden wir das als eine Einstellung in unseren Berechnungen.

Diese Übung ist Teil des Kurses

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

Übungsanweisungen

  • Erstelle eine Liste von Feature-Namen (beginne mit einer Liste, die nur '5d_close_pct' enthält).
  • Verwende die Perioden 14, 30, 50 und 200, um gleitende Durchschnitte mit talib.SMA() aus den bereinigten Schlusskursen (lng_df['Adj_Close']) zu berechnen.
  • Normalisiere die gleitenden Durchschnitte mit dem bereinigten Schlusskurs, indem du durch Adj_Close teilst.
  • Berechne innerhalb der Schleife den RSI mit talib.RSI() aus Adj_Close und verwende n für die Zeitperiode.

Interaktive praktische Übung

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

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