EmpezarEmpieza gratis

Ingeniería de características a partir del volumen

Vamos a usar modelos no lineales para hacer predicciones más precisas. Con los modelos lineales, las características deben estar correlacionadas linealmente con el objetivo. Otros modelos de Machine Learning pueden combinar características de forma no lineal. Por ejemplo, ¿y si el precio sube cuando la media móvil del precio está subiendo y la media móvil del volumen está bajando? La única manera de capturar esas interacciones es multiplicar las características o usar un algoritmo de Machine Learning que maneje la no linealidad (p. ej., random forests).

Para incorporar más información que pueda interactuar con otras características, podemos añadir variables débilmente correlacionadas. Primero añadiremos los datos de volumen, que tenemos en lng_df en la columna Adj_Volume.

Antes de empezar, recuerda que para las funciones de TA-Lib (como SMA()), tienes que proporcionar arrays de Numpy, no objetos de pandas. Puedes usar el atributo .values de una Serie o DataFrame de pandas para obtenerlo como un array de Numpy.

Este ejercicio forma parte del curso

Machine Learning para finanzas con Python

Ver curso

Instrucciones del ejercicio

  • Crea el cambio porcentual de 1 día del volumen (usa pct_change() de pandas) y asígnalo a la columna Adj_Volume_1d_change en lng_df.
  • Crea una media móvil de 5 días del cambio porcentual de 1 día del volumen y asígnala a la columna Adj_Volume_1d_change_SMA en lng_df.
  • Representa histogramas de estas dos nuevas características que creamos usando la lista new_features.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
                        timeperiod=____)

# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()
Editar y ejecutar código