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

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

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

keisuke umezawa

April 17, 2019
Tweet

More Decks by keisuke umezawa

Other Decks in Technology

Transcript

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

    金融機関向け トレーディング AI技術で多く 実績を保持 「相場予測モデル 構築」 プロジェクトで 協業 「AlpacaSearch for kabu.com」 相互に類似している銘柄 チャートパター ンを表示 「AI外貨予測」「AI外貨積立」 指定した外貨 為替 変動を予測し、予測 した日に一定金額を積立 可能 主要マーケット 短期予測 をリアルタイムで表示 弊社 大規模データ処理 技術やディープラーニン グ技術を活用したアプリ ケーション
  2. Alpaca 予測モデル 触りだけ • AI・ディープラーニング に向いている 大量 に発生したデータからパ ターンを探す作業 •

    マーケットにおいて最も 大量に発生している データ なにか、それが Tick • 大量 Tickデータから 発生パターンを解析し、 ど ようなパターンが発 生したときにプライスが 上がるか・下がるかを ディープラーニングで学 習 8 画像認識向け CNNを 時系列解析 ネットワークとして拡張 ディープニューラルネットワークがマーケット 特徴的なTick 発生パターンを解析、予測を出 している。 画像認識 Tick発生パターン
  3. 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で公開。 予測結果を出力。冗長 化を保ちながらまんべん なく分散されるように設 計。
  4. どこがつらい か 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
  5. どこがつらい か 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 勿論ここ!
  6. チームでデータサイエンスを行うために 1. データを共有できるように、 a. DB等でデータを一箇所で管理 b. データパイプラインで更新作業を自動化 2. 環境を共通化できるように、 a.

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

    データサイエンス部分 コード 共有・ライブラ リ化 c. 実験とプロダクションで モデルフォーマット 共通化 2. プロダクションで性能を再現できるように、 a. データサイエンス部分 コード 共有・ライブラ リ化 b. 実験とプロダクションで モデルフォーマット 共通化 18 自社開発 自社開発 自社開発 自社開発 自社開発
  8. 共通 解決策 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. 可読なモデルフォーマット による実験管理
  9. 共通 解決策 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 開発ニーズ
  10. ModelPackage 目的と実装 21 目的 1. 実験とプロダクションで共通 フォーマットでモデルを定義 する 2. 可読なモデルフォーマットで実験を管理する

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

    作成 • 推論 プロダクションで 、データ 前処理と推論 インタフェースを呼び出すようになってい る。 新しいモデルをデプロイする時もこ インタ フェースさえ満たしていれ 即時にリリース 可能。 22 ModelPackage build_dataset calc_labels predict_with_df
  12. 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 実験・プロダクションで 同じインタフェースを呼び出すことで、同じ動作をすることが保 証されている。
  13. ModelPackage 定義ファイル すべて 予測モデル ModelPackageとい うパッケージ形式で管理 • データ 前処理 •

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

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

    • Pythonでしか動かない ◦ プロダクション環境 違う言語を使いたい に、モデルを 動かすことを考えるとPythonに限定されてしまう 27 → sklearn Pipeline ようなも でモデルを定義し、そ れをpickleする? → ONNXモデルフォーマットが、sklearnに対応した で、それを使う?