资产价格预测
现在,您可以使用神经网络来预测"资产价格"。这是量化金融分析及风险管理中的核心任务之一。
您将使用 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。 - 创建一个名为
model的Sequential神经网络,并添加两个Dense隐藏层:第 1 层含 16 个神经元(且有 3 个"输入"神经元),第 2 层含 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()