資產價格預測
現在你可以使用神經網路來預測「資產價格」。這是量化金融分析與風險管理中的重要任務。
你將使用 2005-2010 年間 Citibank、Goldman Sachs 與 J. P. Morgan 的股價,來訓練一個網路以預測 Morgan Stanley 的股價。
你會建立並訓練一個具有 1 個輸入層、1 個輸出層,還有「2」個隱藏層的神經網路。
接著會顯示散佈圖,用來檢視 2005-2010 年間 Morgan Stanley 的「預測」價格與實際價格之間的差距。(回想一下,若預測「完全正確」,散佈點將落在圖上的 45 度對角線上。)
Sequential 與 Dense 物件已可使用,並提供了包含 2005-2010 年投資銀行股價的 prices DataFrame。
本練習屬於課程
Python 量化風險管理
練習說明
- 將輸入資料設為除了 Morgan Stanley 之外的所有銀行
prices,輸出資料設為僅含 Morgan Stanley 的prices。 - 建立一個
Sequential神經網路model,包含兩個Dense隱藏層:第一層有 16 個神經元(且有 3 個「輸入」神經元),第二層有 8 個神經元。 - 新增一個含 1 個神經元的 Dense 輸出層,代表 Morgan Stanley 的價格。
- 編譯神經網路,並以擬合
model的方式進行訓練。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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()