Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SmartTrade勉強会20190612 機械学習で株式投資

SmartTrade勉強会20190612 機械学習で株式投資

機械学習で株式投資をします

Avatar for ci11y

ci11y

May 29, 2019

Other Decks in Programming

Transcript

  1. 1-1. 機械学習とは [1] Bishop, C. M. 2006. Pattern Recognition and

    Machine Learning, Springer. 直接コンピュータに指⽰を出す代わりにコンピュータ⾃⾝にデータを学習させ ることで数学的なモデルを⽣成し, 分類や決定を⾏う⼿法[1] 学習 バナナ りんご 図1. 機械学習のイメージ 3 2
  2. 1-2. 決定⽊とは 図3. 決定⽊の例[2] 機械学習 [2] J.R. Quinlan. 1986. “Induction

    of Decision Trees.” 図2. 決定⽊作成に使⽤するデータ[2] ある活動に向いているかの正解ラベル • 正解ラベルが存在するデータを ⽤いて教師あり学習 • どのパラメータが重要かを計算 し⽊構造で分類を⾏う 4 3
  3. 1-3. Random Forestとは[3] [3] Lior Rokach and Oded Maimon. 2005.

    Data Mining and Knowledge Discovery Handbook, Springer, p166. [4] Andy Liaw and Matthew Wiener. 2002. “Classification and Regression by randomForest” [5] Will Koehrsen. 2017. Random Forest Simple Explanation (https://medium.com/@williamkoehrsen/random-forest-simple-explanation-377895a60d2d ) 図4. Random Forestによる分類の例[5] • 最も⼀般的な機械学習の ⼿法の1つ • トレーニングデータと説 明変数からランダムに値 を抽出し, それを元に決定 ⽊をたくさん作成 (“Random Forest”と⾔わ れる所以!)[4] • それぞれの決定⽊の結果 を多数決し, 全体としての 結果を出す • この過程はPythonとscikit- learnが担う! 5 4
  4. 1-4. 学習と分類 重さg 直径cm ⾚ ⻩ 緑 正解 500 10.0

    1 0 0 りんご 400 3.2 0 1 0 バナナ 430 9.7 1 0 0 りんご 440 3.5 0 1 0 バナナ 120 5.0 0 0 1 キウイ 1050 28.5 0 0 1 メロン 980 30.0 0 0 1 スイカ ... ... ... ... ... ... 重さg 直径cm ⾚ ⻩ 緑 正解 400 8.8 1 0 0 ︖︖︖ 130 4.8 0 0 1 ︖︖︖ じゃあこれは︖ 学習 分類 実際には 数値等で 指定する 必要あり 数値で表わしたデータ を特徴量という 6 5
  5. 2-1. データに終値(株式調整後)を⽤いた場合 https://factory.quantx.io/developer/0fef3f2591994c1989607e7e16512772 • それではやってみましょう. あまり深く考えずに実⾏してみてください. • このソースコードが⾏なっていることは以下の通りです. 終値 (株式調

    整後) 次の⽇ 株価上 がる︖ 1300 No 1340 No 1320 Yes 1305 Yes 1330 No 1290 No 1280 Yes ... ... 前半15個を学習 後半15個を分類予測 終値 (株式調 整後) 次の⽇ 株価上 がる︖ 1400 ︖︖︖ 1420 ︖︖︖ 1440 ︖︖︖ 1500 ︖︖︖ 1530 ︖︖︖ 1500 ︖︖︖ 1420 ︖︖︖ ... ... 明⽇株価上がりそう →買う 明⽇株価上がらなそう →売る 7 6
  6. 2-1. データに終値(株式調整後)を⽤いた場合 https://factory.quantx.io/developer/0fef3f2591994c1989607e7e16512772 • それではやってみましょう. あまり深く考えずに実⾏してみてください. • このソースコードが⾏なっていることは以下の通りです. 終値 (株式調

    整後) 次の⽇ 株価上 がる︖ 1300 No 1340 No 1320 Yes 1305 Yes 1330 No 1290 No 1280 Yes ... ... 前半15個を学習 後半15個を分類予測 終値 (株式調 整後) 次の⽇ 株価上 がる︖ 1400 ︖︖︖ 1420 ︖︖︖ 1440 ︖︖︖ 1500 ︖︖︖ 1530 ︖︖︖ 1500 ︖︖︖ 1420 ︖︖︖ ... ... 明⽇株価上がりそう →買う 明⽇株価上がらなそう →売る 8 6
  7. 2-2. データ選択の必要性 終値だけで明⽇の株価が上がるかどうかわかるわけがない • 終値は株ごとに値が⼤きく異なっているので, ⼀様に扱えない • 同⼀の株を考えたとしても, 株価の相対的な⾼低は翌⽇の株価とあまり 相関がない

    • 本当に関係のあるデータを学習させる必要がある • 機械学習は万能ではない サイコ ロの⽬ 次の サイコ ロの⽬ 3 5 4 5 2 3 1 6 ... ... いくら機械学習させても 次のサイコロの⽬なんてわからない 9 7
  8. 3-1. 移動平均(Moving Average)とは • 株式市場を分析する際によく利⽤されている⼿法の⼀つ • 過去の⼀定期間の平均値を表す • 株価は時間経過で⼤きく変動するが, ⻑い⽬線で株価を⾒ることが可能

    • ⻑年の研究より, その有効性が確かめられている[6] 具体的な取引⼿順 1. 短い期間での移動平均を計算(例. 1⽇) 2. ⻑い期間での移動平均を計算(例. 20⽇) 3. 短い期間での移動平均が⻑い期間での移動平均よりも⾼(低)ければ, 株価 は上昇(下降)傾向にあると予想する⼿法 短い期間での移動平均 ⻑い期間での移動平均 がカギ これを学習データへ [6] M. Metghalchi, J. Marcucci and Y. Chang. 2012. "Are moving average trading rules profitable? Evidence from the European stock markets." 10 8
  9. 3-2. データに移動平均を⽤いた場合 https://factory.quantx.io/developer/a8e64ab7e2ed45518bfbd997e934460e • それではやってみましょう. さっきのテスト結果と⽐較してみてください. • このソースコードが⾏なっていることは以下の通りです. 移動平 均の⽐

    次の⽇ 株価上 がる︖ 1.05 No 1.3 Yes 1.02 Yes 0.98 Yes 0.99 No 1.03 Yes 1.15 Yes ... ... 前半15個を学習 後半15個を分類予測 移動平 均の⽐ 次の⽇ 株価上 がる︖ 1.02 ︖︖︖ 1.04 ︖︖︖ 1.11 ︖︖︖ 0.98 ︖︖︖ 0.95 ︖︖︖ 0.93 ︖︖︖ 0.90 ︖︖︖ ... ... 明⽇株価上がりそう →買う 明⽇株価上がらなそう →売る 11 9
  10. 3-3. データに移動平均を⽤いた場合 201601 01- 201901 01 201507 01- 201907 01

    201501 01- 201801 01 201407 01- 201707 01 201401 01- 201701 01 201307 01- 201607 01 201301 01- 201601 01 終値 -0.67% 4.03% 17.17% 4.81% 1.37% 3.51% 36.50% 移動平 均 -1.45% 0.99% 24.59% 19.82% 30.48% 22.38% 47.70% 12 10
  11. 3-4. 特徴量エンジニアリングの重要性 • 相関が⾒られるデータを使⽤すると, 良い結果が得られる • 移動平均という相関が認められそうなデータ(特徴量)を⾃分で作り出した データを⼯夫して, 相関があるデータを作り出すことを 特徴量エンジニアリングという

    • ⽣のデータのままでは相関がないが, ⼯夫すると相関が⾒出せる ことが多々ある • 今回の場合, 終値と株価の上下には相関がなかったが, 終値の移動 平均と株価の上下には相関が認められた • データの⽋損値を補ったり特徴量を抽出するのは⼈間の仕事 13 11
  12. 4-1. データにテクニカル指標を⽤いた場合 https://factory.quantx.io/developer/98ce2eb6a90641a49d845d039f2145c4 • 試してみましょう. • 今回の特徴量は以下の表の通りです. 7⽇MA 14⽇MA 7⽇MA-14

    ⽇MA ボリン ジャーバ ンド モメンタ ム 株価が上 がるか︖ -9.73e-04 -9.85e-04 5.43e+01 1.68e+02 -6.10e+01 1 -3.00e-03 5.90e-04 3.83e+01 -1.64e+02 3.65e+01 0 -7.43e-03 -2.24e-03 1.51e+01 -1.85e+02 -1.39e+02 1 1.88e-03 1.80e-04 -3.86e+01 -1.13e+02 7.00e+00 0 -1.54e-03 -1.84e-03 -3.77e+01 -1.11e+02 -7.15e+01 0 -1.09e-03 -2.36e-03 -3.41e+01 -1.06e+02 -9.15e+01 0 ... ... ... ... ... ... 14 12
  13. 4-1. データにテクニカル指標を⽤いた場合 https://factory.quantx.io/developer/98ce2eb6a90641a49d845d039f2145c4 • 試してみましょう. • 今回の特徴量は以下の表の通りです. 適切な特徴量を⽤いれば, うまく予測ができることが確認できました 終値→移動平均→テクニカル指標と,

    結果が変化しました 7⽇MA 14⽇MA 7⽇MA-14 ⽇MA ボリン ジャーバ ンド モメンタ ム 株価が上 がるか︖ -9.73e-04 -9.85e-04 5.43e+01 1.68e+02 -6.10e+01 1 -3.00e-03 5.90e-04 3.83e+01 -1.64e+02 3.65e+01 0 -7.43e-03 -2.24e-03 1.51e+01 -1.85e+02 -1.39e+02 1 1.88e-03 1.80e-04 -3.86e+01 -1.13e+02 7.00e+00 0 -1.54e-03 -1.84e-03 -3.77e+01 -1.11e+02 -7.15e+01 0 -1.09e-03 -2.36e-03 -3.41e+01 -1.06e+02 -9.15e+01 0 ... ... ... ... ... ... 15 12
  14. 4-2. データにテクニカル指標を⽤いた場合 201601 01- 201901 01 201507 01- 201907 01

    201501 01- 201801 01 201407 01- 201707 01 201401 01- 201701 01 201307 01- 201607 01 201301 01- 201601 01 終値 -0.67% 4.03% 17.17% 4.81% 1.37% 3.51% 36.50% 移動平 均 -1.45% 0.99% 24.59% 19.82% 30.48% 22.38% 47.70% テクニ カル指 標 7.96% 10.39% -4.41% 5.25% 4.02% 18.10% 7.96% 16 13
  15. 4-3. 次元の呪いに注意1 特徴量めちゃくちゃ増やせばいいじゃ〜〜〜ん と思ったら間違いです 例えば特徴量が2つあるのにデータが2つしかない場合 ⾚⾊か︖ ⼤きい︖ ⼤きい︖ Yes No

    りんご (データ有) notりんご (データ有) データなし データなし コンピュータが 「え、なにこれ...」 となってしまう︕ 予測能⼒の低下 18 14
  16. 4-4. 次元の呪いに注意2 次元の呪い(curse of dimensionality) • 学習データの次元(特徴量の種類数)が増加するにつれて, 学習に必要なサンプル 数は指数関数的に増加してしまう[6]. ⼿元にある有限なデータでは⼗分な学習

    結果が得られず, 未知のデータに対応できなくなっている. • 単純に考えると特徴量が1つ増えるにつれ, 必要なデータ数は2倍, 4倍, 8倍...... One-Hotエンコーディングによる不安定性 • 数値データ以外を扱い, フラグを記述するために特徴量が⼀つ必要なOne-Hotエ ンコーディングは, 同じ問題に対して妥当なモデルが複数存在して係数が⼀意に 定まらず, それが結果の解釈の妨げとなることがある[7]. • 前述の例のように, ⾚⾊, ⻩⾊, 緑⾊のフラグなどの数値ではない変数(カテゴリ 変数と呼ばれる)はむやみに使うと機械学習の能⼒が低下する [7] Michel Verleysen and Damien Francois. 2005. The Curse of Dimensionality in Data Mining and Time Series Prediction. [8] Alice Zheng and Amanda Casari. 2019. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. 19 15
  17. 雑談︖ Google社のTensorFlow等, 機械学習のツールは無料で提供されています なぜなんでしょう︖ • 機械学習ができること⾃体には価値がなく, 機械学習は誰にでも できるツールとなりつつあるから • 機械学習よりも,

    データの⽅が価値が⼤きいから(Googleは持って いるデータこそ価値があって, いくらツールを公開しても打撃に はならないしむしろ⼀般の開発者を呼び込めている) データの価値はどの企業も重要視している • 最近はPayPayやLINE Pay等, お⾦をたくさんばらまいて購買データを集 めようとしている あれだけお⾦をばらまいても, データの価値の⽅が⼤きい 22 17
  18. 参考⽂献 [1] Bishop, C. M. 2006. Pattern Recognition and Machine

    Learning, Springer. [2] J.R. Quinlan. 1986. “Induction of Decision Trees.” [3] Lior Rokach and Oded Maimon. 2005. Data Mining and Knowledge Discovery Handbook, Springer, p166. [4] Andy Liaw and Matthew Wiener. 2002. “Classification and Regression by randomForest.” [5] Will Koehrsen. 2017. Random Forest Simple Explanation (https://medium.com/@williamkoehrsen/random-forest-simple-explanation-377895a60d2d ) [6] M. Metghalchi, J. Marcucci and Y. Chang. 2012. "Are moving average trading rules profitable? Evidence from the European stock markets.” [7] Michel Verleysen and Damien Francois. 2005. The Curse of Dimensionality in Data Mining and Time Series Prediction. [8] Alice Zheng and Amanda Casari. 2019. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. [9] 村瀬さんのスライド (Retrieved from https://python-algo.connpass.com/event/128511/presentation/ https://python-algo.connpass.com/event/128513/presentation/ ) [1] Bishop, C. M. 2006. Pattern Recognition and Machine Learning, Springer. [2] J.R. Quinlan. 1986. “Induction of Decision Trees.” [3] Lior Rokach and Oded Maimon. 2005. Data Mining and Knowledge Discovery Handbook, Springer, p166. [4] Andy Liaw and Matthew Wiener. 2002. “Classification and Regression by randomForest.” [5] Will Koehrsen. 2017. Random Forest Simple Explanation (https://medium.com/@williamkoehrsen/random-forest-simple-explanation-377895a60d2d ) [6] M. Metghalchi, J. Marcucci and Y. Chang. 2012. "Are moving average trading rules profitable? Evidence from the European stock markets.” [7] Michel Verleysen and Damien Francois. 2005. The Curse of Dimensionality in Data Mining and Time Series Prediction. [8] Alice Zheng and Amanda Casari. 2019. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. [9]   (Retrieved from https://python-algo.connpass.com/event/128511/presentation/ https://python-algo.connpass.com/event/128513/presentation/ ) 23 18