Zacznij terazZacznij za darmo

Prognozowanie ceny aktywa

Teraz możesz użyć sieci neuronowej do prognozowania ceny aktywa – kluczowego elementu zarówno ilościowej analizy finansowej, jak i zarządzania ryzykiem.

Do trenowania sieci wykorzystasz ceny akcji Citibanku, Goldman Sachs i J. P. Morgana z lat 2005–2010, aby przewidzieć cenę akcji Morgan Stanley.

Stworzysz i wytresujesz sieć neuronową z jedną warstwą wejściową, jedną warstwą wyjściową i dwiema warstwami ukrytymi.

Następnie zostanie wyświetlony wykres punktowy, który pokaże, jak bardzo prognozowane ceny Morgan Stanley różnią się od wartości rzeczywistych w latach 2005–2010. (Przypomnij sobie, że jeśli prognozy są idealne, punkty na wykresie układają się wzdłuż linii pod kątem 45 stopni.)

Dostępne są obiekty Sequential i Dense, a także DataFrame prices z cenami banków inwestycyjnych z lat 2005–2010.

To ćwiczenie jest częścią kursu

Ilościowe zarządzanie ryzykiem w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Ustaw dane wejściowe jako ceny prices wszystkich banków z wyjątkiem Morgan Stanley, a dane wyjściowe jako ceny prices wyłącznie Morgan Stanley.
  • Utwórz sieć neuronową model typu Sequential z dwiema ukrytymi warstwami Dense: pierwsza z 16 neuronami (i trzema neuronami wejściowymi), a druga z 8 neuronami.
  • Dodaj pojedynczą warstwę wyjściową Dense z 1 neuronem reprezentującym cenę akcji Morgan Stanley.
  • Skompiluj sieć neuronową i wytrenuj ją, dopasowując model.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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()
Edytuj i uruchom kod