株価を予測せよ

  • 金融・保険
  • 分類問題
  • 時系列
  • DEEPLEARNING

株取引は金融機関などの機関投資家だけでなく、一般の人々も参加できるものも多く、身近な経済活動の1つと言うことができるでしょう。一方、この株取引は多様な思惑が交差する場となっているために、株価予測は非常に難しい課題です。しかしながらまた、近年の株取引においては、プログラムで作成したモデルによる機械取引が大きな割合を占めるようになっています。こうしたモデルは株価の推移はもちろんのこと、経済指標やSNSなどの情報を活用しているものも珍しくはありません。本クエストでは、深層学習を用いてこのような機械取引のモデルの作成にチャレンジします。ただし、課題としては「株取引」ではなく、「株価予測」というように簡略化したものに取組みます。クエストを通じて、時系列情報の分析や可視化、深層学習を用いた予測モデルの作成方法を学びます。クエストの最後のChallenge Missionでは、クエスト本編と異なる株価を用いて、精度高くモデルを作成することにチャレンジします。

  • 5 時間
  • 2,600 Exp
  • 11 Videos
  • 0 Slides
  • 5 Missions
  • 11 Tasks
  • 41 Operations

Introduction50 Exp

近頃、機械学習に興味を持ち始めたS氏は、モチベーションを高く学び続けるために、実生活への活用を考えていました。検討を重ねた結果、かねてから気になっていた株式投機をサポートするツールとして、機械学習による予測モデルの作成を目標に定めました。ただし、株式の自動売買をいきなり実現することは難しく、損失リスクも許容できないと判断しました。そこで、まずは問題を単純化させて、「将来の株価の上下を予測する」といったモデルの作成に取り組むことにしました。このモデルは、株式の自動売買モデルと比べると素朴なものにはなりますが、もし精度高く予測することが可能であれば、安く仕入れて高く売る、といった投機活動の目安として利用することができそうです。

Videoを再生する

Mission 1

株価データの整形

機械学習モデルを作成するには、適切なデータが必要ということで、まずは信頼性の十分なウェブサイトから株価データを取得しました。ただし、データを取得すればそれで終わりではありません。手に入れた生のデータがそのままモデル学習に使えることは非常にまれであり、また、そもそもデータ内容をきちんと確認しないままにモデルを作成することは、誤認識や不備の検知漏れといったリスクを伴います。このため、データの確認は非常に重要な作業の1つです。本ミッションでは、ライブラリを使ったデータの読み込み方、データ量や種別の確認、用途に応じたデータの並び替え方法などを学びます。

Task 1
データ読み込み
100 Exp

Task 1

データ読み込み

  • 1 時間
  • 2 Operations
  • 100 Exp

このタスクでは下記を学びます。

Task 2
データ確認
200 Exp

Task 2

データ確認

  • 1 時間
  • 4 Operations
  • 200 Exp

データフレームに格納したデータの中身を確認してみましょう。

Task 3
データ整形
250 Exp

Task 3

データ整形

  • 1 時間
  • 5 Operations
  • 250 Exp

このタスクでは下記を学びます。

Mission 2

株価トレンドの確認

取得した生の株価データを変数として読み込み、さらに、扱いやすいようにデータの整形を行いました。次は、この株価がどのような傾向や特徴を持っているのかということを、多角的に眺めながら理解を深めます。本ミッションでは、データを俯瞰して見ることや、データの示唆する情報を多面的に捉える方法(探索的分析やEDAと呼ぶ)を、時系列データのグラフ描画方法と合わせて学びます。

Mission 3

ドメイン知識の活用

取得した株価データの内容については、その特徴も含め、一通り確認することができました。ところで、株価予測を成功させるためには、その予測に役立つ情報がデータに含まれている必要があります。株価データそのものも、将来の株価を予測するための立派な情報の1つですが、株取引にはこの他にも様々な予測に役立つ指標が提案されています。本ミッションでは、モデル予測に役立つデータを、ドメイン知識を活用して作成する方法を学びます。

Task 1
データ前処理
50 Exp

Task 1

データ前処理

  • 1 時間
  • 1 Operations
  • 50 Exp

特徴量の生成方法には様々な方針がありますが、ここではドメイン知識を利用した特徴量生成を行います。

Mission 4

株価予測モデルの作成

いよいよモデル作成に移ります。これまでに準備したデータを元に、直近の5日間分のデータから、翌取引日の株価の上下を予測するモデルを作成します。本ミッションでは、モデルに学習させるためのデータ構造の変形や、データのスケールの依存性を除くための標準化を学びます。加えて、時系列データに対して効果的な深層学習モデルとして、LSTMネットワークの作成方法を学びます。

Task 1
学習・評価データの分割
250 Exp

Task 1

学習・評価データの分割

  • 1 時間
  • 4 Operations
  • 250 Exp

まずは、データを説明変数と目的変数に分割します。その後、モデルを作成するために使う学習データ、学習時の汎化性の確認用の検証データ、そして作成したモデルの精度を評価するために使う評価データの計3つに、データを分割します。

Task 2
データ整形
350 Exp

Task 2

データ整形

  • 1 時間
  • 6 Operations
  • 350 Exp

Kerasの LSTM ネットワークでモデルを学習するためにデータ構造の変形を行います。このため、学習データ、検証データ、評価データそれぞれを、5日間ごとのデータのまとまりを積み重ねた形へと、データ構造を変形します。

また、学習データ、検証データ、評価データにおけるスケールの違いを解消するために、標準化と呼ばれるデータ変換も実施します。

Task 3
モデルの学習
200 Exp

Task 3

モデルの学習

  • 1 時間
  • 3 Operations
  • 200 Exp

Kerasを用いてLSTMネットワークを作成して、株価の上昇の有無の予測を行います。まずネットワークの構造の定義を行い、つづけて学習データを与えてモデルの学習を実施します。また、学習時には検証データを用いた汎化性能の評価も同時に行います。最後に評価データを用いて予測した結果を元に、未知のデータに対するモデルの精度を測定します。

なお、モデルの予測結果と、正解の値となる目的変数との一致具合については、正解率を用いて計算します。これは、すべての予測対象の内で、株価が上昇、あるいは下降について当てられた割合を示します。たとえば、予測対象が100件あった時に、上昇予測の正解が30件、下降予測の正解が35件であった場合に、正解率は65%となります。

Task 4
モデルの精度評価
150 Exp

Task 4

モデルの精度評価

  • 1 時間
  • 3 Operations
  • 150 Exp

学習データと検証データの各エポックでの学習状況を確認します。これにより、どの程度の回数の学習が妥当であるのかの目処を掴みます。

また、評価データにおけるモデルの予測結果も確認します。学習済のモデルを用いて評価データの予測をして、正解率の確認を行います。

Mission 5

モデルの予測精度の改善

作成したモデルは一定程度の精度が得られたものの、学習に使われたデータとそうでないデータにおける精度の差が大きくなっていました。将来の株価を予想するという、モデルの有用性という観点で見れば、未知のデータに対する精度も高くあるべきです。そこで本ミッションでは、学習データへの過剰な適合を防ぎながら、モデルの学習を行う正則化のテクニックについて学びます。

Task 1
特徴量の追加
200 Exp

Task 1

特徴量の追加

  • 1 時間
  • 4 Operations
  • 200 Exp

本クエストは将来の株価の上下を予測するといったもので、株価の時系列のふるまいを学習できるものとしてLSTMネットワークを採用しました。ただし、時系列のふるまいについては、LSTMネットワークが学習してくれることを期待するだけでなく、有用な特徴量を用意してあげると、より学習がしやすくなる場合があります。そこで、本タスクでは、時系列のふるまいを表す特徴量を追加することで、モデルの精度向上をめざします。

Task 2
モデル構造の改善
200 Exp

Task 2

モデル構造の改善

  • 1 時間
  • 3 Operations
  • 200 Exp

本タスクでは、モデルの学習に制限をかける方法として、モデルのネットワークにDropoutを導入します。

Conclusion50 Exp

本クエストでは、株式投機に役立つ機械学習の活用として、将来の株価の上下を予測するモデルの作成に取り組みました。クエスト全編を通じて学んだことをおさらいしましょう。

Videoを再生する
PAGE
TOP