機械学習による株価予測　さがそうNumerai Signals

#はじめに
前回記事は[こちら](https://qiita.com/blog_UKI/items/fb401725288e58c92bd6)。本記事はNumerai Tournamentに参加したことがある方を対象読者として想定しており、予備知識があるものとして説明を行う。

前回記事で説明したNumerai Tournamentは、運営が予め用意したデータセットで予測性能を競うものだった。これに対してNumerai Signalsはさらに実戦的で広大なバトルフィールドだ。ユーザーは予測に使うデータセットを自ら用意しなければならない。それどころか、ユニバースの選択でさえ自身の手に委ねられている。
現在はまだベータ版であるが、参加者は将来的にTournament同様とてつもなく大きな恩恵を享受できるようになると考えている。以下にSignalsの仕様、参加するインセンティブ、そしてSignals構築における留意点について解説を進める。

#Numerai Signalsの仕様
###Signals概要
Signalsのドキュメントは[こちら](https://docs.numer.ai/numerai-signals/signals-overview)。Signalsは世界中の市場における株価の騰落の予測を提出するものである。以下のサンプルのように騰落の予測を0～1の数値（一般的な機械学習におけるProbability）として提出する。参加者の最終的な目標は、提出したSignalをNumeraiのようなデータドリブンなヘッジファンドに「購入してもらう」ことだ。世界中の様々なデータソースにアクセスし、たっぷりとアルファを含んだ特徴量を見つけ出し、そこから予測性能が高く且つオリジナリティのあるSignalを抽出する。そして自らがヘッジファンドのブレインの一部として置き換わる。何ともエキサイティングな試みだろう。
それでは以下にSignalsの仕様について説明していこう。
<img width="400" alt="01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562749/cb1587fc-0b2f-2d6c-a0df-9f1121ea1cbf.png">


###対象アセット
Numerai Signalsは世界中の市場における株式銘柄を対象としており、現時点でその総数はおよそ5200銘柄である。このリストには毎日変更が入るが、流動性不足の銘柄が入れ替わったりするだけで殆どの銘柄は据え置きとなる。最新のリストは[こちら](https://numerai-quant-public-data.s3-us-west-2.amazonaws.com/example_predictions/latest.csv)から入手することができる。

参考までにどの市場の銘柄がどれだけあるか集計した。最も多いのはUS市場でありおよそ2000銘柄超である。続いて日本市場、韓国市場、ロンドン市場と続いている。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562749/7b73d05b-8f2b-8512-0a4e-3aea1f61b3d6.png)


参加者はこの全ての銘柄について予測を提出する必要はない。5000を超える銘柄の中から自身で好きなようにユニバースを作ることができるのだ（ただし最低100銘柄以上が必要となる）。これは自由度が高い反面、ユニバースの選択方法も重要な判断が必要となる。

###データの取得について
これらの銘柄について、予測に必要なデータは参加者自身が収集する必要がある。Numerai Signalsは、既に自身の予測システムを構築済みで市場データにアクセスできるユーザー向けのプラットホームなのだ。
参加者の予測性能を評価するために運営が公式で使っているデータソースはQuandlである。その他のデータソースとしてQuantopianやAlpacaなどが挙げられる。NumeraiのForumでは安価なデータソースのリストが共有されているので、[そちら](https://forum.numer.ai/t/free-or-cheap-data-for-erasure-numerai-quant/350)を是非参考にすべきだろう。なお筆者は現時点ではYahoo Financeを使っている。

###Submissionについて
参加者は任意の時刻に予測結果をSubmissionできる。次のSubmissionが行われるまで、参加者の予測は最終Submissionの内容が保持されることになる。つまり参加者は予測結果をSubmissionすることでポートフォリオをリバランスすることができると思えばよい。週次の予測モデルであれば週一回のSubmissionでもよいのだ。なお後述するリーダーボードの評価におけるタイムフレームは日次であり、終値が基準となっている（Close to Closeでの予測）。

1点注意しておきたいことは、予測結果が反映されるのは最終Submissionの次の終値時刻だということだ。つまり翌日の日次を予測するためには、市場がクローズする前にSubmissionを行う必要がある。予測結果の評価は毎日行われる。一度提出した予測結果は60日後まで有効であるため、60日以内に次のSubmission（リバランス）を行う必要がある。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562749/208ca416-2082-37fe-3479-28feeb7ab0d5.png)


###リーダーボード
形式的であるが、リーダーボードが存在する。ランキングの基準は現時点では日次リターンのシャープレシオである。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562749/677f0777-d5b3-e181-ae0d-a59681cac17c.png)

シャープレシオの計算方法は以下による。ここで、$r_{long}$は予測結果の上位半数に含まれる銘柄の日次リターン、$r_{short}$は下位半数に含まれる銘柄の日次リターンである（銘柄数が奇数の場合、真ん中の銘柄はロングに含まれる）。この式はあまり見掛けない形かもしれないが、計算結果は$ave(r_{long})-ave(r_{short})$とほぼ一致する。Sharpeは日次から年次へと換算したシャープレシオである。ここで$r_{daily}$は、ユーザーがSubmissionを開始した後の全ての結果が含まれる。試験的にHigh Varianceな予測結果をSubmissionしてしまうと生涯反映され続けるので、ある程度モデルが決まってからSubmissionを開始したほうがよいかもしれない。

（2020/6/26追記）
式を訂正（$\sqrt{365}$ → $\sqrt{252}$）。シャープレシオの年率換算はカレンダー日でなく営業日とのこと。

```math
r_{daily}=\frac{1+ave(r_{long})}{1+ave(r_{short})}-1\\
Sharpe=\sqrt{252} \times \frac{ave(r_{daily})}{stdev(r_{daily})}
```

なお、リーダーボードに載るには最低でも直近20日のデータが必要である。ただし今はベータ版であるため、Submission直後（厳密には結果が集計される3営業日程度後）からリーダーボードに載るようだ。

#報酬体系
###ステイクに対する報酬（もしくは徴収）
記事執筆の現時点（6/23）において、ステイクの仕様は未決定である。ユーザーは自身の予測結果を裏付けるためにNMRをステイクしなければならない（当然ステイクしなくても参加できるが、報酬や評価対象には含まれない）。これは試験的な予測結果を提出したり、ラッキーパンチを狙って提出するユーザーがいるため当然の仕様である。
ステイクは早ければ近日中に実装される見込みである。ステイクの仕様が決まり次第、本章は更新する予定である。

###Singalの買い取り
ステイクに対する報酬とは別に、NumeraiがSignalを購入する場合がある。しかし、この購入基準や報酬額については公開されることはない。唯一分かることは、Numeraiが求めているものは、ロバストで長期間安定しており且つ他の一般的なファクターとの相関が低いSignalであることだ。Signalは予測性能にも増してそのオリジナリティが重要であり、当然ながらリーダーボードの順位に基づいて購入されるわけではない。

###Signalsに参加するインセンティブ
本章はステイク仕様が決定し次第更新するが、Tournamentにおける知見からSignalsにおいても以下のようなインセンティブが存在すると考えられる。これらはシステムトレーダーにとって驚くほど大きな恩恵だ。米国個別株の運用を視野に入れていた筆者もこれらの恩恵を最大限に授かろうと目論んでいる。

- 参加者のSharpeを元に報酬が付与徴収される場合、実際の株式リターンよりもハイレバレッジとなりマーケットニュートラルの資金効率を劇的に改善できる可能性がある。
- Numerai SignalsではTournament同様に参加者は実際に株式を購入するわけではなく、予測そのものにベットできる。このためポートフォリオ構築に要する執行コストを無視することができ、理想的なリターンを享受することができる。
- 現実的に個人投資家が構築できないような分散されたポートフォリオにベットすることでき、運用成績の安定に繋がる
- Numerai SignalsではTournament同様に予測モデルを提出する必要はない。このため参加者の知的財産は全て保護される。


#Signals構築における留意点
###ユニバースの選定
ユニバースの選定はSignalsにおいて最も重要な項目だと考えている。予測力が同じ場合、ユニバースが広いほうがシャープレシオは改善する。予測力を一定と仮定した場合、ユニバースの銘柄数の1/2乗に比例してシャープレシオは向上する。下図は理想的なシミュレーション結果である。
一方であまりに多数の銘柄を取り込みすぎると、極端にボラティリティの高い銘柄が含まれていたり、少数のユニバースでは見えていた特性が逆に見えなくなって全体としての予測性能が劣化する可能性もある。従ってユニバースを逆に狭く限定することで、値動きの安定した銘柄に絞りつつユニバース内の説明力を向上させるという選択肢もあるわけだ。
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562749/0763f645-134e-ef32-a4c6-31b071ba688b.png)

ユニバースというハイパーパラメータのチューニングがパフォーマンスの優劣を分けるカギだと考えている。またそのチューニングを網羅的に行うために、できるかぎり多くの銘柄について正確なデータベースを構築する能力が求められる。

###タイムフレーム（リバランス頻度）の最適化
基本的にリバランスは短いほど予測力は向上し成績は安定する。これはフィナンシャルデータの予測力には大きなタイムディケイが発生するからだ。以下に日次、週次、月次リバランス時の損益曲線の一例を示す。
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562749/0e962ce0-d662-0ff2-2a67-67752527ebc3.png)

ただし、現実の世界では執行コストが発生してしまうため、頻繁にリバランスできないことが多い。Numerai Signalsでは現時点ではSubmissionの頻度に対するペナルティは発生しない。しかし実際に予測が頻繁に変化すると運用額の大きなファンドには好ましくないため、Submissionあたりに一定のステイクを徴収する、などという対応が取られる可能性がある。この辺りの事情を加味して予測のタイムフレームもユーザー自身が最適化することになる。

#おわりに
本記事ではNumerai Signalsの仕様、参加するインセンティブ、そしてSignals構築における留意点について解説した。Numerai Signalsは自由度が高く、戦略の殆どが参加者に委ねられており、参加者は自身の知見を存分に活用することでこれに挑戦することができる。そしてその行く末にヘッジファンドがあなたの力を借りるという未来があれば、それはとても名誉なことではないか。ヘッジファンドが投資判断のために個人投資家を力を借りる時代が、今まさにそこまで来ているのだ。ワクワクしてきただろう。

さあ君もたっぷりとアルファを含んだ、とびっきりのSignalをさがしてみよう。