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 Engineer
    Keisuke Umezawa
    Deep Learningでリアルタイムに
    マーケット予測をしてみた

    View Slide

  2. AlpacaJapan
    3
    金融 x 機械学習 がテーマ スタートアップ
    主な提供サービス/プロダクト
    ❖ 銀行・証券会社・信託銀行を中心に 金融機関向け トレーディング AI技術で多く 実績を保持
    「相場予測モデル 構築」 プロジェクトで
    協業
    「AlpacaSearch for kabu.com」
    相互に類似している銘柄 チャートパター
    ンを表示
    「AI外貨予測」「AI外貨積立」
    指定した外貨 為替 変動を予測し、予測
    した日に一定金額を積立
    可能
    主要マーケット 短期予測
    をリアルタイムで表示
    弊社 大規模データ処理
    技術やディープラーニン
    グ技術を活用したアプリ
    ケーション

    View Slide

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

    View Slide

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

    View Slide

  5. Alpaca Forecast App
    ブルームバーグと共同
    リリースしたアプリ
    ● 世界で40万人以上 ユー
    ザーを持つブルームバー
    グ端末で動作するアプリ
    ● Alpacaが研究開発した最
    新 予測モデル 結果を
    リアルタイムに届けている
    6

    View Slide

  6. Alpaca Forecast API
    予測結果をアプリで なく、APIで
    配信するサービス
    ● 大手金融機関 システムがシ
    グナルを利用して自動取引す
    ることを想定
    ● アプリで 表現できない詳細
    な情報を渡すことで利益を上
    げる
    7

    View Slide

  7. Alpaca 予測モデル 触りだけ
    ● AI・ディープラーニング
    に向いている 大量
    に発生したデータからパ
    ターンを探す作業
    ● マーケットにおいて最も
    大量に発生している
    データ なにか、それが
    Tick
    ● 大量 Tickデータから
    発生パターンを解析し、
    ど ようなパターンが発
    生したときにプライスが
    上がるか・下がるかを
    ディープラーニングで学

    8
    画像認識向け CNNを
    時系列解析 ネットワークとして拡張
    ディープニューラルネットワークがマーケット
    特徴的なTick 発生パターンを解析、予測を出
    している。
    画像認識
    Tick発生パターン

    View Slide

  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で公開。
    予測結果を出力。冗長
    化を保ちながらまんべん
    なく分散されるように設
    計。

    View Slide

  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

    View Slide

  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
    勿論ここ!

    View Slide

  11. チームでデータサイエンスを行うと、
    こんなことありませんか・・・?
    ● なぜかデータが存在しない・・・
    ● なぜか環境が再現できない・・・
    ● なぜか渡されたNotebookが動かない・・・
    ● なぜかscriptが動かなくなっている・・・
    ● etc...
    12

    View Slide

  12. 研究成果をプロダクトに取り込もうとすると、
    こんなことありませんか・・・?
    ● そもそもプロダクション環境がない・・・
    ● 現在 プロダクションで稼働するに 変更が多すぎる・・・
    ● 実験で使ったコードを丸々プロダクション ために書き直さないといけない
    ・・・
    ● モデル 性能を再現できない・・・
    ● etc...
    13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. チームでデータサイエンスを行うために
    1. データを共有できるように、
    a. DB等でデータを一箇所で管理
    b. データパイプラインで更新作業を自動化
    2. 環境を共通化できるように、
    a. コンテナによる開発・実験
    3. 後々に実験が再現できるように、
    a. Test可能な方法で実験を行う
    b. Notebookによる実験 行わない、可視化 ため
    だけに使う
    4. 誰でも実験を再現できるように、
    a. 前処理・学習・評価を一連 パイプラインとして管

    b. 可読なモデルフォーマットによる実験内容 管理
    17
    自社開発

    View Slide

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

    View Slide

  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. 可読なモデルフォーマット
    による実験管理

    View Slide

  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
    開発ニーズ

    View Slide

  20. ModelPackage 目的と実装
    21
    目的
    1. 実験とプロダクションで共通 フォーマットでモデルを定義
    する
    2. 可読なモデルフォーマットで実験を管理する
    実装
    1. 実験とプロダクションに必要なインタフェースを定義し、両
    環境でそれを呼び出す
    2. それぞれ インタフェース 実装をyamlファイルで定義で
    きるようにする

    View Slide

  21. ModelPackage インタフェース
    ModelPackage 以下を行うインタフェース
    が提供されている。
    ● データ 前処理
    ● 正答ラベル 作成
    ● 推論
    プロダクションで 、データ 前処理と推論
    インタフェースを呼び出すようになってい
    る。
    新しいモデルをデプロイする時もこ インタ
    フェースさえ満たしていれ 即時にリリース
    可能。
    22
    ModelPackage
    build_dataset
    calc_labels
    predict_with_df

    View Slide

  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
    実験・プロダクションで 同じインタフェースを呼び出すことで、同じ動作をすることが保
    証されている。

    View Slide

  23. ModelPackage 定義ファイル
    すべて 予測モデル ModelPackageとい
    うパッケージ形式で管理
    ● データ 前処理
    ● 正答ラベル 作成
    ● 学習・推論
    などなど、予測モデルを動作させるすべて
    情報がyamlファイルで記載され
    ModelPackage内部で保持
    ロードされたModelPackage 自分に保存
    された情報から、自分がど ように動作すれ
    いいか一意に決定する
    24
    例: 特徴量をど ように生成するかを
    YAMLファイルで管理している

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. STRICTLY CONFIDENTIAL 28
    We're hiring!!
    https://www.wantedly.com/companies/alpacadb
    ● Web Engineer
    ● ML Engineer
    ● Data Engineer

    View Slide