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
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 daAdj_Closeusandoncome 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)