Alpaca技術ブログ

AIと超高速データストレージを駆使して新しいトレーディングを創る

AIを活用したサービスの勘所をCapitalicoをケーススタディに考える

Alpacaの北山(@gamella, blog)です。

現在、クローズドベータ中のトレーディングプラットフォーム「Capitalico」(キャピタリコ)ですが、このサービスを設計する上で、AIを活用するサービスについて改めて考る良い機会となりましたので、その開発の過程で得た知見を共有したいと思います。

AIを活用したサービスを考える上で、最初にベースとなる出発点は、どのようなタスクをAIに行わせるか、になると思います。人間ができないことをAIにさせるというのも重要ですが、たとえ人間ができることをさせるとしても、AIが人間をサポートするとき、そのサポートするタスクの価値が高ければ高いほど、価値が高まると考えています。

僕もCapitalicoの開発をはじめてから知ったのですが、世の中には様々な投資戦略が存在し、数多くのトレーダーがそれを自己流に改造して、トレーディングを行っています。その多くの人々は机に座りチャートに張り付いたり、チャートをスマートフォンで眺めて、値動きを確認し、自分の戦略に合致した瞬間に売買を行います。

このトレーダーの方々が行っている上記のプロセスを要素分解すると、

  • 投資戦略の立案
  • 仮設の検証
  • 投資戦略の実施

という形に分けることができます。例えば、ヘッジファンドと呼ばれるチームがどういうことをしているかというと、もちろん様々な流派があるとは思いますが、

  • 経験のあるトレーダーや数学者・統計学者などがある投資に立てる仮説を組み立てる
  • それをプログラミングして、その仮説が過去の投資に対してどれくらいの利益をだすかを調べる(この作業はバックテストと呼ばれます)
  • その中でできの良いアルゴリズムを選別して、リスク・リターンを計算し、ポートフォリオを組み立てていく

というプロセスを行っています。

その分野のプロフェッショナルが行っているフローに対してAI活用を持ち込もうとしたとき、僕たちはCapitalicoのサービスの根底に流れるテーマの一つとして、「特定の根拠に基づくアプローチをトレーディングにどれだけ簡単に導入できるか」を考えました。

もちろん最初の投資戦略の立案で、ものすごい複雑な仮定を導入することもありえますが、まずは最初の一歩として、だれにとっても自明な根拠に基づくAIをプログラミングなしで作成することができれば、上記のプロセスを投資に興味のあるすべての人が利用可能となると仮定したのです。それが以下のエントリーで説明したチャートに対するラベリングをベースにAIを設計するという手法です。

blog-jp.alpaca.ai

Capitalicoは下記のように、検知してほしいパターンをチャート上でそのままダイレクトに指定します。

f:id:alpacablog:20151105110731p:plain

プログラムをできない人が上記プロフェッショナルのワークフローを実施する場合、最大の壁は仮設の検証とその継続的な実施です。特に継続的な実施において、人間が机の前に座って集中していられる時間は非常に限られます。AIは疲れませんので、いくらでもチャートの動きを監視させることができますので、この人間が机の前座っているタスクをAIに置き換えることも非常に重要なポイントになると考えました。

では、Capitalicoが上記の3つのプロセスにおいてどのようなことをしてくれるかというと、以下の通りです。

  • 過去のチャートの履歴から、自分が投資したいチャート上の動きが発生したデータをシステムに提供し、そのデータを使って、ある条件を満たす時系列が発生したときに反応するAIをDeepLearning(LSTMを利用した金融時系列解析にAlpacaでチューニングしています)で作成する
  • 過去10年間の任意の期間に対して、GPUを活用して非常に高速にバックテストを行い、作成したAIがどのくらい正しいかを短時間で検証する
  • 複数の作成したAIがチャートを監視して、自分の投資戦略を満たす特定のパターンが出現したときに教えてくれる

上記を利用して、複数のAIを作成し、自分だけのポートフォリオを組み立てていくことになります。

Capitalicoはアプリとしてまだまだ荒削りで、また機能も限定されており、ブラッシュアップできることはたくさんあります。ただ、少なくともこれまでできなかった、投資戦略をある一定の根拠に基づき直感的に設計できるというのは、僕が慣れ親しんだ再現性を重要視して仮説検証を繰り返す、工学的なアプローチを採用できるという点で非常に魅力的です。この観点から、AIの挙動が特定の根拠に基づき一貫性があることがすごく重要だと考えており、その検証にものすごいコストを割いてサービスを作成しています。

これまでのCapitalico開発を通して学んだことをまとめますと、AIを活用したサービスの勘所は以下のようになります。

  • AIが行ってくれるタスクがどのくらい価値があるかを常に考える
  • AIは疲れないので、人間が長時間行うのはとても大変な作業を肩代わりしてもらう
  • AIの挙動に関する根拠を可能な限り透明性があり自明なものにすることでAI設計を多くの人に可能にする

上記のようなアプローチに興味ありましたら、トレーディング自体に興味がない人もぜひぜひ招待リストに追加いただければと思います!