Exxact | Aprendizaje profundo, HPC, AV, distribución y más

Cómo predecir los precios de la bolsa utilizando LSTM

La industria financiera fue una de las primeras industrias en adoptar el uso del aprendizaje automático y el aprendizaje profundo en sus análisis y operaciones de inversión para añadir valor a sus clientes. Antes del machine learning, el deep learning y toda la revolución «Quant» de los años 2000 hasta ahora, los analistas e inversores se apoyaban en técnicas menos dependientes de la tecnología. El análisis fundamental y el técnico reinaban y, aunque siguen constituyendo una gran parte del análisis, ahora se combinan con previsiones y análisis realizados por ordenadores.

Como la mayoría de la gente sabe, el mercado de valores es un lugar donde la gente compra y vende acciones. El acto de comprar y vender estas acciones (es decir, el comercio) tiene lugar en entornos físicos y virtuales llamados «Bolsas». Estas bolsas son casas de índices (los más conocidos son el Dow Jones Industrial Average y el NASDAQ Composite). En las bolsas se fija el precio de las acciones que componen los índices.

Hay muchos factores que pueden hacer fluctuar el precio de una acción. Las noticias diarias que dan buenas o malas noticias sobre las perspectivas actuales o futuras de una empresa son, sin duda, uno de los factores más influyentes que impulsan las fluctuaciones diarias del precio. La rentabilidad de una empresa, el crecimiento de los ingresos y las perspectivas de expansión futura son indicadores que pueden establecer cambios en el precio a largo y corto plazo. El aprendizaje profundo y otros modelos estadísticos solo pueden dar cuenta de una parte y suele ser más adecuado para la previsión a corto y medio plazo que a largo plazo (por ejemplo, años).

¿Interesado en obtener resultados más rápidos?
Aprenda más sobre las soluciones de aprendizaje profundo de Exxact

Desarrollando modelos de memoria a largo plazo (LSTM)

Modelos de memoria a largo plazo (LSTM)

Fuente

Los LSTM son un derivado de una red neuronal recurrente (RNN). Una RNN es un modelo adecuado para un horizonte temporal corto, quizás de una semana a un mes. Si se va más allá, es poco probable que la RNN produzca previsiones fiables. Esto se debe al problema del gradiente de fuga.

Un método normal de series temporales como el AR y sus derivados o la ANN (Red Neural Artificial) puede aprender aplicando un gran peso hacia el precio del día anterior más algunas otras características. En el caso de las series temporales financieras, se utilizarían modelos ARCH y sus derivados para predecir los rendimientos o la volatilidad. En una red feed forward, estos puntos se consideran independientes entre sí. Esto significa que la LSTM no adopta el mismo enfoque que los métodos tradicionales de predicción de series temporales.

La LSTM utiliza diferentes dependencias en la previsión

Una LSTM tomará los datos a través de lo que llama «celdas», como se puede ver en el diagrama anterior representado en el rectángulo central. Es a través de este estado de las celdas que el LSTM puede elegir recordar u olvidar cosas.

Un LSTM tendrá 3 dependencias diferentes según la información que reciba:

    1. El estado de la celda anterior (es decir, la información que estaba presente en la memoria después del paso de tiempo anterior)
    2. El estado oculto anterior (es decir, esto es lo mismo que la salida de la celda anterior)
    3. La entrada en el paso de tiempo actual (es decir. la nueva información que se está introduciendo en ese momento)

Para el dominio de la predicción del precio de los activos financieros, estas dependencias pueden explicarse como sigue:

  1. El estado de la celda anterior – La tendencia de la acción en el día anterior.
  2. El estado oculto anterior – El precio de la acción en el día anterior.
  3. La entrada en el paso de tiempo actual – Otros factores que pueden afectar al precio. Esto será típicamente las alertas de noticias que se ponen a disposición de los inversores a lo largo del día.

Estados de las celdas de la LSTM en cómo se almacenan

Fuente

En el diagrama anterior, la línea horizontal ct denota el estado de la celda que es la memoria de la LSTM. Como mencionamos inmediatamente antes, esto se relaciona con la tendencia de la acción en el día anterior (1). Esa información fluirá hacia la célula y será procesada con el resto de la información que fluye. La línea indicada por ct-1 es el Estado Oculto (2), que en nuestro caso de predicción de acciones contendrá la información de los pasos anteriores (es decir, el precio de las acciones del día anterior). La línea horizontal indicada por ht-1 es la entrada en el momento actual, que es el precio actual de las acciones (3). Utilizando la información del precio anterior de las acciones (Estado Oculto), el precio actual combinado con la tendencia del día anterior (Estado de la Célula), el LSTM generará una salida.

AMD EPYC SERVER SALE

Código Python para crear un modelo de predicción LSTM

El siguiente código Python nos lleva a través de los pasos para crear un modelo LSTM que prediga el precio de una acción.

  1. # -*- coding: utf-8 -*-
  2. """EXXACT - Stock Market Prediction LSTM.ipynb
  3. Automatically generated by Colaboratory.
  4. """
  5. # By running this line of code, you will be prompted to select your file to upload.
  6. from google.colab import files
  7. uploaded = files.upload()
  8. import io
  9. import pandas as pd
  10. import numpy as np
  11. import matplotlib.pyplot as plt
  12. %matplotlib inline
  13. from matplotlib.pylab import rcParams
  14. rcParams=20,10
  15. from keras.models import Sequential
  16. from keras.layers import LSTM,Dropout,Dense
  17. from sklearn.preprocessing import MinMaxScaler
  18. df = pd.read_csv(io.BytesIO(uploaded))
  19. print(df)
  20. df=pd.to_datetime(df.Date,format="%Y-%m-%d")
  21. df.index=df
  22. data=df.sort_index(ascending=True,axis=0)
  23. new_dataset=pd.DataFrame(index=range(0,len(df)),columns=)
  24. for i in range(0,len(data)):
  25. new_dataset=data
  26. new_dataset=data
  27. train_data=final_dataset
  28. valid_data=final_dataset
  29. new_dataset.index=new_dataset.Date
  30. new_dataset.drop("Date",axis=1,inplace=True)
  31. scaler=MinMaxScaler(feature_range=(0,1))
  32. scaled_data=scaler.fit_transform(new_dataset)
  33. x_train_data,y_train_data=,
  34. for i in range(60,len(train_data)):
  35. x_train_data.append(scaled_data)
  36. y_train_data.append(scaled_data)
  37. x_train_data,y_train_data=np.array(x_train_data),np.array(y_train_data)
  38. x_train_data=np.reshape(x_train_data,(x_train_data.shape,x_train_data.shape,1))
  39. lstm_model=Sequential()
  40. lstm_model.add(LSTM(units=50,return_sequences=True,input_shape=(x_train_data.shape,1)))
  41. lstm_model.add(LSTM(units=50))
  42. lstm_model.add(Dense(1))
  43. inputs_data=new_dataset.values
  44. inputs_data=inputs_data.reshape(-1,1)
  45. inputs_data=scaler.transform(inputs_data)
  46. lstm_model.compile(loss='mean_squared_error',optimizer='adam')
  47. lstm_model.fit(x_train_data,y_train_data,epochs=1,batch_size=1,verbose=2)
  48. X_test=
  49. for i in range(60,inputs_data.shape):
  50. X_test.append(inputs_data)
  51. X_test=np.array(X_test)
  52. X_test=np.reshape(X_test,(X_test.shape,X_test.shape,1))
  53. predicted_closing_price=lstm_model.predict(X_test)
  54. predicted_closing_price=scaler.inverse_transform(predicted_closing_price)
  55. train_data=new_dataset
  56. valid_data=new_dataset
  57. valid_data=predicted_closing_price

Un programa capaz de predecir el precio de las acciones en bolsa usando LSTM

Ahora tienes el código Python para empezar a predecir el precio de las acciones en bolsa usando LSTM. Pruébalo y dinos cómo te funciona. Estamos sólo en el comienzo de la capacidad de LSTM en diferentes aplicaciones, y estamos entusiasmados con el futuro.

Aprenda más sobre cómo las redes neuronales recurrentes LSTM se están utilizando en otras aplicaciones.

¿Tiene alguna pregunta sobre las estaciones de trabajo o servidores de aprendizaje profundo?
Contacte con Exxact hoy

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.