Deep Learningでリアルタイムに マーケット予測をしてみた

Deep Learningでリアルタイムに マーケット予測をしてみた

E04f148b1f9614f4dee94e804cd8bf9c?s=128

keisuke umezawa

April 17, 2019
Tweet

Transcript

  1. 機械学習 プロダクト適用における リアルを語る会 AlpacaJapan Engineer Keisuke Umezawa Deep Learningでリアルタイムに マーケット予測をしてみた

  2. AlpacaJapan 3 金融 x 機械学習 がテーマ スタートアップ 主な提供サービス/プロダクト ❖ 銀行・証券会社・信託銀行を中心に

    金融機関向け トレーディング AI技術で多く 実績を保持 「相場予測モデル 構築」 プロジェクトで 協業 「AlpacaSearch for kabu.com」 相互に類似している銘柄 チャートパター ンを表示 「AI外貨予測」「AI外貨積立」 指定した外貨 為替 変動を予測し、予測 した日に一定金額を積立 可能 主要マーケット 短期予測 をリアルタイムで表示 弊社 大規模データ処理 技術やディープラーニン グ技術を活用したアプリ ケーション
  3. AGENDA • 短期マーケット予測 紹介とプロダクション適用まで つらみ • Alpaca データサイエンスへ 取り組み 4

  4. AGENDA • 短期マーケット予測 紹介とプロダクション適用まで つらみ • Alpaca データサイエンスへ 取り組み 5

  5. Alpaca Forecast App ブルームバーグと共同 リリースしたアプリ • 世界で40万人以上 ユー ザーを持つブルームバー グ端末で動作するアプリ

    • Alpacaが研究開発した最 新 予測モデル 結果を リアルタイムに届けている 6
  6. Alpaca Forecast API 予測結果をアプリで なく、APIで 配信するサービス • 大手金融機関 システムがシ グナルを利用して自動取引す

    ることを想定 • アプリで 表現できない詳細 な情報を渡すことで利益を上 げる 7
  7. Alpaca 予測モデル 触りだけ • AI・ディープラーニング に向いている 大量 に発生したデータからパ ターンを探す作業 •

    マーケットにおいて最も 大量に発生している データ なにか、それが Tick • 大量 Tickデータから 発生パターンを解析し、 ど ようなパターンが発 生したときにプライスが 上がるか・下がるかを ディープラーニングで学 習 8 画像認識向け CNNを 時系列解析 ネットワークとして拡張 ディープニューラルネットワークがマーケット 特徴的なTick 発生パターンを解析、予測を出 している。 画像認識 Tick発生パターン
  8. Kubernetesによる予測システム 構成 9 pred pred pred pred pred pred adapter

    adapter Bloomberg predictor RDS dispatcher dispatcher api api Bloomberg App pod StatefulSet SQS Deployment DB Access ... marketstore marketstore service dispatch queue USDJPY EURUSD Nikkei batch batch 自社で開発した時系列 DB。 OSSで公開。 予測結果を出力。冗長 化を保ちながらまんべん なく分散されるように設 計。
  9. どこがつらい か 10 pred pred pred pred pred pred adapter

    adapter Bloomberg predictor RDS dispatcher dispatcher api api Bloomberg App pod StatefulSet SQS Deployment DB Access ... marketstore marketstore service dispatch queue USDJPY EURUSD Nikkei batch batch
  10. どこがつらい か 11 pred pred pred pred pred pred adapter

    adapter Bloomberg predictor RDS dispatcher dispatcher api api Bloomberg App pod StatefulSet SQS Deployment DB Access ... marketstore marketstore service dispatch queue USDJPY EURUSD Nikkei batch batch 勿論ここ!
  11. チームでデータサイエンスを行うと、 こんなことありませんか・・・? • なぜかデータが存在しない・・・ • なぜか環境が再現できない・・・ • なぜか渡されたNotebookが動かない・・・ • なぜかscriptが動かなくなっている・・・

    • etc... 12
  12. 研究成果をプロダクトに取り込もうとすると、 こんなことありませんか・・・? • そもそもプロダクション環境がない・・・ • 現在 プロダクションで稼働するに 変更が多すぎる・・・ • 実験で使ったコードを丸々プロダクション

    ために書き直さないといけない ・・・ • モデル 性能を再現できない・・・ • etc... 13
  13. AGENDA • 短期マーケット予測 紹介とプロダクション適用まで つらみ • Alpaca データサイエンスへ 取り組み 14

  14. Alpacaデータサイエンスチーム Mission • 諸々 課題をどうやって解決するかというと、 15

  15. Alpacaデータサイエンスチーム Mission • 諸々 課題をどうやって解決するかというと、 16 エンジニアリング

  16. チームでデータサイエンスを行うために 1. データを共有できるように、 a. DB等でデータを一箇所で管理 b. データパイプラインで更新作業を自動化 2. 環境を共通化できるように、 a.

    コンテナによる開発・実験 3. 後々に実験が再現できるように、 a. Test可能な方法で実験を行う b. Notebookによる実験 行わない、可視化 ため だけに使う 4. 誰でも実験を再現できるように、 a. 前処理・学習・評価を一連 パイプラインとして管 理 b. 可読なモデルフォーマットによる実験内容 管理 17 自社開発
  17. 研究成果をすぐにユーザに提供するために 1. プロダクションを大幅に変更しなくても良いように、 a. 共通プラットフォーム Alpaca Forecasting Platform 開発 b.

    データサイエンス部分 コード 共有・ライブラ リ化 c. 実験とプロダクションで モデルフォーマット 共通化 2. プロダクションで性能を再現できるように、 a. データサイエンス部分 コード 共有・ライブラ リ化 b. 実験とプロダクションで モデルフォーマット 共通化 18 自社開発 自社開発 自社開発 自社開発 自社開発
  18. 共通 解決策 1. プロダクションを大幅に変更しなくても 良いように、 a. 共通プラットフォーム Alpaca Forecasting Platform

    開発 b. データサイエンス部分 コード 共有・ライブラリ化 c. 実験とプロダクションで モデルフォーマット 共通 化 2. プロダクションで性能を再現できるよう に、 a. データサイエンス部分 コード 共有・ライブラリ化 b. 実験とプロダクションで モデルフォーマット 共通 化 19 1. データを共有できるように、 a. DB等でデータを一箇所で 管理 b. データパイプラインで更新 作業を自動化 2. 環境を共通化できるように、 a. コンテナによる開発・実験 3. 後々に実験が再現できるように、 a. Test可能な方法で実験を 行う b. Notebookによる実験 行 わない、可視化 ためだけ に使う 4. 誰でも実験を再現できるように、 a. 前処理・学習・評価を一連 パイプラインとして管理 b. 可読なモデルフォーマット による実験管理
  19. 共通 解決策 1. プロダクションを大幅に変更しなくても 良いように、 a. 共通プラットフォーム Alpaca Forecasting Platform

    開発 b. データサイエンス部分 コード 共有・ライブラリ化 c. 実験とプロダクションで モデルフォーマット 共通 化 2. プロダクションで性能を再現できるよう に、 a. データサイエンス部分 コード 共有・ライブラリ化 b. 実験とプロダクションで モデルフォーマット 共通 化 20 1. データを共有できるように、 a. DB等でデータを一箇所で 管理 b. データパイプラインで更新 作業を自動化 2. 環境を共通化できるように、 a. コンテナによる開発・実験 3. 後々に実験が再現できるように、 a. Test可能な方法で実験を 行う b. Notebookによる実験 行 わない、可視化 ためだけ に使う 4. 誰でも実験を再現できるように、 a. 前処理・学習・評価を一連 パイプラインとして管理 b. 可読なモデルフォーマット による実験管理 ModelPackage 開発ニーズ
  20. ModelPackage 目的と実装 21 目的 1. 実験とプロダクションで共通 フォーマットでモデルを定義 する 2. 可読なモデルフォーマットで実験を管理する

    実装 1. 実験とプロダクションに必要なインタフェースを定義し、両 環境でそれを呼び出す 2. それぞれ インタフェース 実装をyamlファイルで定義で きるようにする
  21. ModelPackage インタフェース ModelPackage 以下を行うインタフェース が提供されている。 • データ 前処理 • 正答ラベル

    作成 • 推論 プロダクションで 、データ 前処理と推論 インタフェースを呼び出すようになってい る。 新しいモデルをデプロイする時もこ インタ フェースさえ満たしていれ 即時にリリース 可能。 22 ModelPackage build_dataset calc_labels predict_with_df
  22. STRICTLY CONFIDENTIAL AND FOR INTERNAL USE ONLY 実験で ModelPackage 使い方

    23 Experiments Pipeline Dataset Step Label Step Train Step Prediction Step Pointed function is called by task. ModelPackage build_dataset calc_labels predict_with_df 実験・プロダクションで 同じインタフェースを呼び出すことで、同じ動作をすることが保 証されている。
  23. ModelPackage 定義ファイル すべて 予測モデル ModelPackageとい うパッケージ形式で管理 • データ 前処理 •

    正答ラベル 作成 • 学習・推論 などなど、予測モデルを動作させるすべて 情報がyamlファイルで記載され ModelPackage内部で保持 ロードされたModelPackage 自分に保存 された情報から、自分がど ように動作すれ いいか一意に決定する 24 例: 特徴量をど ように生成するかを YAMLファイルで管理している
  24. ただまだこれでもつらい・・・ • いちいちyamlファイルからモデルへ マッピングを書かないと いけないなくて、研究 自由度が低い ◦ Pythonで処理 パイプラインを書いたら、それがモデルと して保存されてほしい

    • Pythonでしか動かない ◦ プロダクション環境 違う言語を使いたい に、モデルを 動かすことを考えるとPythonに限定されてしまう 25
  25. ただまだこれでもつらい・・・ • いちいちyamlファイルからモデルへ マッピングを書かないと いけないなくて、研究 自由度が低い ◦ Pythonで処理 パイプラインを書いたら、それがモデルと して保存されてほしい

    • Pythonでしか動かない ◦ プロダクション環境 違う言語を使いたい に、モデルを 動かすことを考えるとPythonに限定されてしまう 26 → sklearn Pipeline ようなも でモデルを定義し、そ れをpickleする?
  26. ただまだこれでもつらい・・・ • いちいちyamlファイルからモデルへ マッピングを書かないと いけないなくて、研究 自由度が低い ◦ Pythonで処理 パイプラインを書いたら、それがモデルと して保存されてほしい

    • Pythonでしか動かない ◦ プロダクション環境 違う言語を使いたい に、モデルを 動かすことを考えるとPythonに限定されてしまう 27 → sklearn Pipeline ようなも でモデルを定義し、そ れをpickleする? → ONNXモデルフォーマットが、sklearnに対応した で、それを使う?
  27. STRICTLY CONFIDENTIAL 28 We're hiring!! https://www.wantedly.com/companies/alpacadb • Web Engineer •

    ML Engineer • Data Engineer