Kom igångKom igång gratis

Skapa särdrag med glidande medelvärde och RSI

Vi vill lägga till historiska data i våra maskininlärningsmodeller för att förbättra prediktionerna, men att inkludera många historiska tidssteg är komplicerat. I stället kan vi komprimera information från tidigare tidpunkter till ett enda tidssteg med hjälp av indikatorer.

Ett glidande medelvärde är en av de enklaste indikatorerna – det är medelvärdet av tidigare datapunkter. Det beräknas med funktionen talib.SMA() från biblioteket TAlib.

En annan vanlig teknisk indikator är det relativa styrkeindexet (RSI). Det definieras som:

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

\(RS = \frac{\text{average gain over } n \text{ periods}} {\text{average loss over } n \text{ periods}}\)

Antalet perioder n anges i talib.RSI() via argumentet timeperiod.

En vanlig period för RSI är 14, och det är den inställningen vi använder i våra beräkningar.

Den här övningen är en del av kursen

Maskininlärning för finans i Python

Visa kurs

Övningsinstruktioner

  • Skapa en lista med särdragsnamn (börja med en lista som bara innehåller '5d_close_pct').
  • Använd tidsperioderna 14, 30, 50 och 200 för att beräkna glidande medelvärden med talib.SMA() från justerade stängningspriser (lng_df['Adj_Close']).
  • Normalisera de glidande medelvärdena med det justerade stängningspriset genom att dividera med Adj_Close.
  • Beräkna RSI med talib.RSI() inuti loopen, med Adj_Close som indata och n som tidsperiod.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod