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
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()opAdj_Closeen gebruiknals 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)