Inizia subitoInizia gratis

Crea le feature di media mobile e RSI

Vogliamo aggiungere dati storici ai nostri modelli di Machine Learning per ottenere previsioni migliori, ma inserire molte finestre temporali storiche è complicato. In alternativa, possiamo condensare le informazioni dei punti precedenti in un unico timestep usando gli indicatori.

Una media mobile è uno degli indicatori più semplici: è la media dei punti dati precedenti. Questa è la funzione talib.SMA() della libreria TAlib.

Un altro indicatore tecnico comune è il Relative Strength Index (RSI), definito come:

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

\(RS = \frac{\text{guadagno medio su } n \text{ periodi}} {\text{perdita media su } n \text{ periodi}}\)

Il numero di periodi n si imposta in talib.RSI() con l'argomento timeperiod.

Un valore comune per l'RSI è 14, quindi lo useremo come una delle impostazioni nei nostri calcoli.

Questo esercizio fa parte del corso

Machine Learning per la finanza in Python

Visualizza corso

Istruzioni dell'esercizio

  • Crea un elenco di nomi delle feature (inizia con un elenco che contenga solo '5d_close_pct').
  • Usa periodi di 14, 30, 50 e 200 per calcolare le medie mobili con talib.SMA() a partire dai prezzi di chiusura rettificati (lng_df['Adj_Close']).
  • Normalizza le medie mobili dividendo per il valore di chiusura rettificato Adj_Close.
  • All'interno del ciclo, calcola l'RSI con talib.RSI() a partire da Adj_Close usando n come timeperiod.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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)
Modifica ed esegui il codice