やはり難しいAIによる株価予測

このところ、AI(機械学習)による株価予測モデルの構築に奔走していました。
機械学習の手法は様々ですが、場当たり的にそれぞれの手法を検証したわけではなく、
フィナンシャルデータを扱うために適切な手法がどのようなものか
理論的な考察の下でアプローチを進めました。

ところが結果として、
統計的手法に基づく予測モデルのパフォーマンスを上回ることが出来ませんでした。
今回は簡易的ではありますが、その結果の一部を公開します。


◆機械学習の手法
(1)スタッキング
 機械学習の予測精度を高めるためには、
 スタッキング(ブレンディング)と呼ばれる手法が使われます。
 集団学習手法の1つであり、複数の機械学習手法の結果を組み合わせるものです。
 単一の機械学習の手法にはそれぞれ得手不得手があるため、
 スタッキングを行うことでそれぞれの弱点を相補的に補うことができます。

 スタッキングは機械学習コンペなどで上位に入るために
 「やっていない人はいない」と言われるくらい常識的に使われている手法です。
 これまで何度も言及してきた通り、フィナンシャルデータの予測モデル構築に
 ディープラーニングが使われることは通常はありません。
 しかしなぜか国内の大手機関は使いたがる傾向にあるようです。
 これは流行のものに飛びつくという日本人の性質によるものなのかもしれません。

(2)構築した機械学習モデル
 今回構築したAI(機械学習)による予測モデルでは、
 3種類の機械学習手法をスタッキングしています。
 それぞれの手法の名称については非公開ですが、
 フィナンシャルデータの特性と機械学習手法の特徴を鑑み、適切なものを選択しています。
 またデータセットはそれぞれの手法で同じものを使いますが、
 各手法の特徴に応じて異なる前処理を施しています。


◆結果
 以下に結果を示します。
 それぞれ、ロングショートポートフォリオの累積リターンです。
 ポートフォリオの銘柄数、仕掛け金額等の構成は非公開です。

 170804-1.png

 各手法の比較はアウトオブサンプル期間で行います。
 機械学習手法は与えられたサンプルに強くフィッティングできてしまうため、
 インサンプル期間のパフォーマンスで判断することはできません。
 結果として機械学習手法は全く統計的手法に追い付いていないことが分かります。
 なお、現在の運用はこの統計的手法ベースで行っていることは言うまでもありません。


冒頭にも述べた通り、
今回の検討ではAI(機械学習)による予測モデルは統計的手法に基づく予測モデルを
上回ることができませんでした。
この結果はAI(機械学習)による株価予測モデル構築の難しさを示唆するものですが、
必ずしも本当にその通りであるとは限りません。
しかし今回の一連の検討の過程においてなぜこのような結果に至ったのか、
フィナンシャルデータの予測モデル構築における自分なりの理論が確立できたと思います。
また1年超に渡りAI投資の研究を進めてきましたが、
ここにきて投資におけるAI活用の本質がどのようなものか確信が持てました。
こちらについてはそのうち記事する予定です。

トレーディングフロアにおけるAI

6月25日の21時より、NHK総合にて「人工知能 天使か悪魔か 2017」が放送されました。
この番組では人工知能の各分野への応用について紹介がありましたが、
その中に金融分野への応用に関する事例がありました(わずか2分半ばかりでしたが)。

人工知能の金融分野への応用にはいくつか種類がありますので、まず簡単に説明しておきます。

(1)投資判断支援
 例えば決算短信を要約したり、WEB情報を集積して配信する分野です。
 大手情報サービスのQUICKや、フィスコ、ゼノデータなどがこれを手掛けています。

(2)取引執行支援
 野村證券やみずほ証券が顧客の機関投資家向けに行っているサービスです。
 短時間での値動きを予測し、少しでも有利なポイントでの注文執行を実現する手法です。

(3)投資指標抽出
 いくつかの手法に分かれますが、
 画像やテキストなどの非構造データをラベル付けして数値化し、投資指標として活用する手法です。
 例えば米大手ヘッジファンドのツー・シグマは、
 衛星写真を分析して駐車場の混雑具合から売上を予測するようです。
 (このようなやり方は公正取引委員会により今後規制される可能性が高くなっています)
 またWEBのニュース記事やツイッターを分析する手法は、
 国内ではマグネマックスやファイブスター、海外ではゴールドマンサックスが話題に挙がります。

(4)投資銘柄選定
 人工知能(=機械学習)により直接株価を予測して投資銘柄を選定する分野であり、
 投信として売り出す場合と、自社運用する場合があります。

今回の放送では、上記(2)の分野である野村證券の事例が紹介されました。
本コラムのタイトルである、「トレーディングフロアにおけるAI」です。


◆NHKの要約と所見
・野村證券は、年金などを運用する機関投資家の取引執行に人工知能サービスを導入(2016年より)。
・東証500銘柄、ティック、直近1年間のデータから値動きの法則性を見つけ、5分後の株価を予測する。
・東証から1秒間に最大で2万5000メッセージが配信される。
・執行もプログラムで処理する。

 さて、NHKの放送では、
 「どれだけ優れたAIを開発できるかがマネーゲームの勝者と敗者を分ける」
 とのナレーションがありましたが、そのようなことは決してありません。
 このような誤解を生む表現が、世間に対してAIというものを過大評価させる原因となります。

 AIによる取引執行支援はあくまでも執行タイミング調整によるコスト削減が目的であり、
 要するに過去の訓練データを使ったVWAP等の最適化でしかありません。
 AI導入により執行コスト分をペイできればよいという考え方であり、勝率を気にする必要はなく、
 近年のAIブームに乗っかって広告価値が高いため開発側としては比較的気楽に導入できます。
 その反面、データの扱いは大容量化・高速化が必要で、インフラの規模は大きくなってしまいます。
 これらのAIによる取引は、一日の取引量や中長期的な価格形成に影響を与えるものではありません。
 ただし一日の中では、価格形成の歪みや効率化を促す要因となりえます。


 また、放送では日次データでなくティックデータを扱うことが強調されていました。
 TOPIX500銘柄の一日の総Tick量は、およそ100万Tick~150万Tickです。
 1年間の総延べサンプル数は最大で3億6000万程度にもなります。
 これらを全て同列にデータセットとしてしまうと当然何も見えなくなってしまいます。
 みずほ証券のAIのように時間毎にプロファイルを分けるなど、何かしらの工夫が必要となります。
 この辺りには証券会社固有の知識が織り込まれているはずです。
 何となくですがディープラーニングには時系列を扱うリカレントNNは採用されていない気がします。
 「(トレーダーは)人工知能の行う取引をじっと見つめるだけである」など、
 恣意的な演出が目立ちました。


とりあえず書き始めたものの、今回は大した記事にならなくなってしまいました。
以上です。



<参考:野村證券のAI手法~AI投資(4)より>
・2016年4月から一部の機関投資家向けに試験的なサービス提供を開始。
・AI手法はディープラーニング。
・対象銘柄はTOPIX500、5分後の株価を予測。
・使用するデータは株価の過去の乖離率など
・的中率は100%ではないが(当然ですが笑)、多くの銘柄で大量の注文を執行する際に有効。
・AIベンチャーであるHEROZと共同開発。

株式市場におけるアルファ碁とは

長くなるので省略しましたが、
正式タイトルは「株式市場におけるアルファ碁とはアルファ碁たりうるのか」です。

5月23日~27日に行われた「Future of Go summit」で、
囲碁の世界ランク1位の柯潔九段とアルファ碁の対局が行われました。
結果としてアルファ碁の3勝0敗であり、その力の凄まじさを見せ付けられる結果となりました。

特に第3局(黒番アルファ碁)では、
アルファ碁は序盤から人間には考えられないような手を連発し(黒13の詰め、黒21の手抜き、など)、
一気に形勢を決めてしまいました。
このように絶対的な法則に支配される世界では、AIの優位性が確立されたと言えるのでしょう。



では、果たしてこれが株式市場であればどうでしょうか?
今回は株式市場についてディープラーニングを適用したときの結果から検討を進めます。

今回の検討では畳み込みニューラルネットを使います。
畳み込みニューラルネットは、データの持つ次元構造を保持するため、
データの与え方によっては単純なニューラルネットよりも良い結果が得られるのでは、
と考えてのことです。

-------------------------------------------------------------------------------------
◆ディープラーニング概要
 (1)ニューラルネット構造
  ・畳み込みニューラルネットワーク
  ・層数=3(この程度の層数でディープと呼べるのかは分かりませんが)
  ・各層のフィルタ数、ニューロン数は非公開です。

 (2)データセット
  ・説明変数は非公開です(大したものは使っていません)。
  ・畳み込みを使うため、データセットの構造を少し工夫しています。
  ・目的変数(解答ラベル)は銘柄の騰落率であり、0/1の2値です(平均より上昇/下落)

 (3)訓練(インサンプル)データ/検証(アウトオブサンプル)データの考え方
  ・以下の図のように、1つの訓練データと2つの検証用データを使います。
   アウトオブサンプル1:訓練データと同一期間のものからランダムに抽出
              (当然、訓練データからは除外しておきます)
   アウトオブサンプル2:訓練データに対して未来の期間のもの

  170603-1.png

 (4)結果の比較
  ・ベンチマークとして同一説明変数の線形モデルの識別精度を算出し、比較を行います。

◆結果
170603-2.png

上記の結果を見て、「ディープラーニングによるモデルは過剰フィッティングが発生している」
と言えるのでしょうか?
結論として、「過剰フィッティングが発生しているとは言えない」と思います。
これはアウトオブサンプル1データでの劣化度合いがそれほど大きくないことが理由です。
訓練データの期間においてディープラーニングは市場を良く表現しておりモデル化の結果は良好です。
にも関わらずアウトオブサンプル2データで識別精度が大きく劣化する理由は、
「株式市場は水物であり、期間を隔ててモノが変わっている」としか言えないのです。

もう少し、詳細を見ていきます。
下記は、ニューラルネットのフィルタ数およびニューロン数が多いモデルと少ないモデルの比較です。
モデルの規模を縮小して表現力を落とすと、アウトオブサンプル2での識別精度が向上します。
その最高識別精度は約52%であり、線形モデルのそれとほぼ同等です。

170603-3.png

-----------------------------------------------------------------------------------------

要するに株式市場では時系列での構造変化(テーマの変遷とも言えます)が発生するため、
特定の期間において市場構造を上手く表現することに「意味がない」ということです。

囲碁で例えるならば、
過去の数十万局のデータから学習させたアルファ碁をいざ人と対戦させてみると、
そのときには囲碁のルールが全く変わっていた、ということになります。
例えばコウの上限が定められたり、ツケが禁止になったり、辺を1目として数えなくなったり、
という極端なルールの変化です。

よって株式市場でアルファ碁がアルファ碁であるためには、
上記のようなルールの変化の予測までを組み込んでいなければなりません。
単純なアルファ碁では与えられた世界にのみ強く適合しているため、このような変化に対応できません。
逆に言うと、適合の度合いが弱ければ弱いほど、極端な変化に対してロバストとなる可能性があります。

では、このルールの変化とは予測できるものなのでしょうか。
当然、そこには絶対的な法則は存在せず、それゆえにフレームワークも決めることはできません。
単純にモデルにデータを与えても、解決の糸口は見えてこないのです。
株式市場におけるAIの取り組みとは、他の分野と比べてかなり異質なものと言えるでしょう。


ヌメライに関する捕捉

ここ数日、ヌメライの検証ばかりしていました。
いくつか分かったことについて、捕捉として紹介します。

◆ランクについて
 前回、122位/854971モデルと報告しましたが、
 このランクの母数とは実際に予測結果をアップロードしたプレイヤー数であり、
 先週のトーナメントではその数はおよそ400名~500名でした。
 よって正しくは「122位/およそ500名」でした(失礼しました)。

 WIREDでは「7500名の匿名のデータサイエンティスト」と触れ込んでいましたが、
 実際にはそれらが淘汰され、残っているのは数百名です。

◆トーナメントについて
 トーナメントは週単位で行われています。
 データセットの更新は、毎週木曜日のAM7:00(日本時間)です。
 おそらくヌメライのポートフォリオは週1で金曜日にリバランスしていると考えられます。

 一日にアップロードできる予測数は25であり、最後にアップロードした予測が有効となります。
 一度でも予測をアップロードすると、参加費として$0.15が貰えるようです。

◆ランク付けとスコア(LOGLOSS)の関係について
 スコアの基準値は勝率50%における0.693であり、低いほうが優秀となります。
 しかしLawDataによる機械学習では、どんな手法を使っても0.691が限界のようです。
 (ロジスティック回帰、RGF、NN、RF、XGBなど)
 (私のベストスコアも0.691です)

 これらの結果でスコア0.691を出してもTOP100に入ることはできません。
 TOP100に入るために重要な点は、単純なスコアの良し悪しではなく、
 他のプレイヤーの予測値との相関であると考えられます。
 よって、何か特殊な方法でデータをこねくり回すなど、人と違った工夫が必要となります。
 (なお、スコア0.690を達成すると、問答無用で1位となると思います。)
 (前回のトーナメントでは、TOPのXIRAX氏だけが0.690でした)


確かに人と違った予測をすることは重要ですが、
ランク上げのためだけにプログラムの行数を増やす意味のない作業になってしまいます。
このことから「ヌメライのトーナメントに参加することは全く技術磨きにはならないなぁ」、
と感じました。

この話題に興味がある方はごく少数だと思いますので、本記事で最後とします。
もしも興味がある方や質問がある方がいればコメントでお願いします。


-----------------------------------------------------------------------------------------
<参考:ヌメライでのベストランク>             更新日:2017/3/10

RANK=5@LOGLOSS=0.691、ROUND46 (※順位は高頻度で変動します)
170310-1.png


追記-ヌメライでランク入りしました。

一応報告しておきます。

ヌメライでランク入りしました(122位/854971モデル)
順位はかなりの頻度で変動するようです。
もう少し頑張ればビットコインが貰えるんでしょうかね?

AI投資には持論があり、それが一応証明された形となりました。

170305-1.png