Crea características de media móvil y RSI
Queremos añadir datos históricos a nuestros modelos de Machine Learning para mejorar las predicciones, pero incorporar muchos pasos temporales históricos es complicado. En su lugar, podemos condensar la información de puntos anteriores en un único paso temporal usando indicadores.
Una media móvil es uno de los indicadores más sencillos: es el promedio de los puntos de datos anteriores. Esta es la función talib.SMA() de la librería TAlib.
Otro indicador técnico habitual es el índice de fuerza relativa (RSI). Se define como:
\(RSI = 100 - \frac{100} {1 + RS}\)
\(RS = \frac{\text{ganancia media en } n \text{ periodos}} {\text{pérdida media en } n \text{ periodos}}\)
Los periodos n se establecen en talib.RSI() mediante el argumento timeperiod.
Un periodo común para el RSI es 14, así que usaremos ese valor en uno de los cálculos.
Este ejercicio forma parte del curso
Machine Learning para finanzas con Python
Instrucciones del ejercicio
- Crea una lista de nombres de características (empieza con una lista que contenga solo
'5d_close_pct'). - Usa periodos de 14, 30, 50 y 200 para calcular medias móviles con
talib.SMA()a partir de los precios de cierre ajustados (lng_df['Adj_Close']). - Normaliza las medias móviles con el cierre ajustado dividiendo por
Adj_Close. - Dentro del bucle, calcula el RSI con
talib.RSI()a partir deAdj_Closey usandoncomotimeperiod.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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)