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
Instrucciones del ejercicio
- Crea el cambio porcentual de 1 día del volumen (usa
pct_change()de pandas) y asígnalo a la columnaAdj_Volume_1d_changeenlng_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_SMAenlng_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()