EmpezarEmpieza gratis

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

Ver curso

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 de Adj_Close y usando n como timeperiod.

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)
Editar y ejecutar código