Previsión del precio de los activos
Ahora puedes utilizar una red neuronal para prever un precio de activo, que es un componente importante del análisis financiero cuantitativo, así como de la gestión de riesgos.
Utilizarás los precios de las acciones de 2005-2010 de Citibank, Goldman Sachs y J. P. Morgan para entrenar una red que prevea el precio de la acción de Morgan Stanley.
Crearás y entrenarás una red neuronal con una capa de entrada, una capa de salida y dos capas ocultas.
A continuación, se mostrará un diagrama de dispersión para ver la distancia entre los precios previstos de Morgan Stanley y sus valores reales durante 2005-2010. (Recuerda que si las previsiones son perfectas, el diagrama de dispersión resultante se situará en la línea de 45 grados del diagrama).
Están disponibles los objetos Sequential
y Dense
, así como el DataFrame prices
con los precios de banco de inversión de 2005-2010.
Este ejercicio forma parte del curso
Gestión cuantitativa de riesgos en Python
Instrucciones de ejercicio
- Establece que los datos de entrada sean los
prices
de todos los bancos excepto Morgan Stanley, y que los datos de salida sean solo losprices
de Morgan Stanley. - Crea un
model
de red neuronalSequential
con dos capas ocultasDense
: la primera con 16 neuronas (y tres neuronas de entrada) y la segunda con 8 neuronas. - Añade una sola capa de salida densa de 1 neurona para representar el precio de Morgan Stanley.
- Compila la red neuronal y entrénala ajustando el
model
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Set the input and output data
training_input = prices.____('Morgan Stanley', axis=1)
training_output = prices['Morgan Stanley']
# Create and train the neural network with two hidden layers
model = ____()
model.add(Dense(16, input_dim=____, activation='sigmoid'))
model.add(____(8, activation='relu'))
model.add(____(1))
model.____(loss='mean_squared_logarithmic_error', optimizer='rmsprop')
model.____(training_input, training_output, epochs=100)
# Scatter plot of the resulting model prediction
axis.scatter(training_output, model.predict(training_input)); plt.show()