Aan de slagBegin gratis

Maak features voor moving average en RSI

We willen historische data aan onze Machine Learning-modellen toevoegen om betere voorspellingen te doen, maar veel historische tijdstappen toevoegen is lastig. In plaats daarvan kunnen we informatie uit eerdere punten samenvatten in één tijdstap met indicatoren.

Een moving average is een van de eenvoudigste indicatoren: het is het gemiddelde van eerdere datapunten. Dit is de functie talib.SMA() uit de TAlib-bibliotheek.

Een andere veelgebruikte technische indicator is de relative strength index (RSI). Deze is gedefinieerd als:

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

\(RS = \frac{\text{gemiddelde winst over } n \text{ perioden}} {\text{gemiddeld verlies over } n \text{ perioden}}\)

Het aantal perioden, n, stel je in talib.RSI() in met het argument timeperiod.

Een veelgebruikte periode voor RSI is 14, dus die gebruiken we als een van de instellingen in onze berekeningen.

Deze oefening maakt deel uit van de cursus

Machine Learning voor finance in Python

Bekijk cursus

Oefeninstructies

  • Maak een lijst met featurenamen (begin met een lijst die alleen '5d_close_pct' bevat).
  • Gebruik timeperiods van 14, 30, 50 en 200 om moving averages te berekenen met talib.SMA() op de aangepaste slotkoersen (lng_df['Adj_Close']).
  • Normaliseer de moving averages door te delen door de aangepaste slotkoers (Adj_Close).
  • Bereken binnen de lus de RSI met talib.RSI() op Adj_Close en gebruik n als timeperiod.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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 bewerken en uitvoeren