資産価格の予測
ここでは、定量的な金融分析やリスク管理で重要となる「資産価格」を、Neural Network を使って予測します。
2005〜2010年の Citibank、Goldman Sachs、J. P. Morgan の株価を用いてネットワークを学習させ、Morgan Stanley の株価を予測します。
入力層1、出力層1、そして隠れ層を2層持つ Neural Network を作成・学習します。
その後、2005〜2010年における Morgan Stanley の「予測」株価が実際の値からどの程度ずれているかを確認するため、散布図を表示します。(予測が「完全」に当たっていれば、散布図の点は45度線上に並ぶことを思い出してください。)
Sequential と Dense オブジェクト、そして 2005〜2010年の投資銀行の価格が入った DataFrame prices が利用可能です。
この演習はコースの一部です
Pythonで学ぶ定量的リスク管理
演習の手順
- 入力データは Morgan Stanley 以外のすべての銀行の
prices、出力データは Morgan Stanley のpricesのみになるように設定します。 Sequentialな Neural Networkmodelを作成し、Denseの隠れ層を2層追加します:最初の隠れ層は 16 ニューロン(入力ニューロンは 3)、2 番目の隠れ層は 8 ニューロンとします。- 出力として Morgan Stanley の価格を表す、ニューロン数 1 の Dense 出力層を追加します。
- Neural Network をコンパイルし、
modelを fit して学習させます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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()