目次
はじめに
『ファイナンス機械学習 』著者のMarcos Lopez de Prado氏が自身のサイトで『ファイナンス機械学習』に関する講義スライドを全編無料公開している。
『ファイナンス機械学習 』については、
botter界隈やシストレ界隈では
・『ファイナンス機械学習 』を抱いて寝る人
・『ファイナンス機械学習 』を枕にして寝る人
・『ファイナンス機械学習 』で枕投げをする人
が続出しているらしく?、
幅広く読まれているようだ。
このシリーズ記事では、 著者の了解を得て、上記の講義スライドを日本語でまとめる。 英語だとどうしても読むのに時間がかかったりエネルギーを多く使ってしまう、という方向け。今回は番外編としてNumeraiに関するスライドを取り上げる。ログインのような画面になる場合は、メールアドレスとパスワードを入力してSSRNのアカウントを作ればダウンロードできる。
本記事はQuantCollege管理人の学習メモであり、
管理人は必ずしもこの分野の専門家ではない点につきご留意頂きたい。
参考文献
ファイナンス機械学習の続編とも言われている、同じ著者の新しい本はこちら。
(2020/11/12更新)ついに和訳版も出たようだ。
ファイナンス機械学習とその原著はこちら。
キーポイント (p2)
- このコースでは、金融データを洞察に変える方法について学んできた。学んだことを実践に移す時が来た。
- Numeraiのデータセットを使い、機械学習ベースの投資アルゴリズムを構築する。
- このプロジェクトのゴールは:
- 匿名化されたデータを使い、金融予測の問題を解く方法について学ぶこと
- Numeraiトーナメントに出場すること
- 成果物は:
- ペーパー:自分の予測アルゴリズムの説明を書く
- 提出:自分の予測をNumeraiトーナメントに提出する
トーナメントの仕組み
データ構造 (p4)
- 投資対象は様々な国、業種、規模の5,000企業
- クロスセクション実数値の \(X\) 行列
- 1か月ごとに1つの行列(monthly Eras)
- サイズは約 (5,000 x 310)
- 値は、国/業種/規模のバイアス調整されている
- カテゴリカルな \(y\) 配列
- 1か月ごとに1つの配列
- ラベルはfixed-horizon法に従い、horizonは1か月(Eras間で時点の重複はない)
- {0, 0.25, 0.5, 0.75, 1} は他と比べてアウトパフォーム、ニュートラル、アンダーパフォームを表す(ターゲットはバイアス調整されている)
- 時が経つと新しい特徴量が追加される
データの難読化 (Obfuscation) (p5)
- トーナメントとバックテストのプラットフォームにおける共通の問題は、ユーザーがテストデータの情報を訓練データに取り入れてしまうこと。
- guided searchesを防止するために、\((X, y)\) を難読化する:
- 距離を保存するランダムな変換を \(X\) の全ての値に適用する
- 各Eraの中で行をシャッフルする
- 行の名前を暗号化する
- 列の名前を暗号化する
- 難読化によって、ユーザーが彼ら自身のバイアスを予測に適用することを防ぐ。ユーザーは提供されたデータだけを用いて、課された問題だけをモデリングする。
モデルの訓練 (p6)
- データを分割する:
- 訓練データ:120か月(Eras)
- 配列 \(y\) は与えられる
- K分割交差検証に有用
- 検証データ:12か月
- 配列 \(y\) は与えられる
- ハイパーパラメーターのチューニングに有用
- テストデータ:63か月
- 配列 \(y\) は与えられない。ユーザーが予測しないといけない。
- ライブデータ:live tradingのための直近のデータ
- 訓練データ:120か月(Eras)
- p-hackingができない:ユーザーによる選択バイアスが防止されている。なぜなら、データは難読化され、テストデータで配列 \(y\) が隠されているからである。
- 訓練データのオーバーフィッティングを避けるために、ユーザーは検証データにおける予測誤差が、どのポイントから下げ止まったかをモニターしないといけない。
モデルのスコアリングと選択 (p7)
- トーナメントは週に一度行われる。
- ある週に貢献したモデルの中から、パフォーマンスが最も良いものを、ファクターの組み合わせに基づいて選択する:
- テストデータに対する予測と、実際のターゲットとの相関:アウトパフォームする銘柄とアンダーパフォームする銘柄を見分ける能力
- 新規性:予測が相関しないモデルが好まれる
- ユーザーの選択バイアス防止に加えて、Numeraiは自分自身による選択バイアスも修正している
- クラスタリングアルゴリズムを使って、類似した/冗長なモデルの集まりを特定し、分散・多様化 (diversification) を強化する
ユーザーステイキング (User Staking) (p8)
- ユーザーはオーバーフィッティングではなく、良いモデルに貢献するようインセンティブを与えられている
- ユーザーは自身のlive performance に対して仮想通貨を賭けることにより個人として関与している
- ユーザーの報酬は以下の組み合わせ:
- その週のNumeraiの支払い
- 生成したシグナルが、 次の月にライブデータに対して残したパフォーマンス
- ユーザーが賭けた金額
- 長期的な一貫性
- オークションのメカニズムでユーザーが表現したモデルに対する自信
- バックテストやテストデータに基づく報酬はない
プロジェクトペーパーのセクション
1.特徴量エンジニアリング (p10)
- 訓練データのみを使い、有用な性質を示す特徴量エンジニアリングをする。
- 定常性:
- 定常な特徴量からしか学習できない
- 定常性の検定を適用し、必要ならデータを変換する
- 互いに共通する情報が少ないこと
- 代替効果を避ける。代替効果は特徴量の正しい選択を妨げ、過学習を引き起こし、予測器間の相関を高めてしまう。
- 次元圧縮
- 次元の呪いを避ける
- ノイズを一部相殺することでシグナルを強化する
- クラスタリング:凝集型クラスタリング、partitioning clustering
- 基底変換:PCA、カーネルPCA、UMAP (Uniform Manifold Approximation and Projection) など
2.特徴量選択 (p11)
- 訓練データのみを使い、MDA分析を適用する
- ベースライン分類器:ランダムフォレスト(max_features以外は全てデフォルト引数)
- マスキング効果:引数 max_features = int(1) とセットすることに注意。こうすることで、ランダム特徴量をレベルごとに1つだけ考慮する
- K分割交差検証:生成された特徴量の数を所与として、適切な分割数Kを選ぶ
- スコア:マルチラベル分類(マクロまたはミクロ)に対してAUC-ROCを計算する
- たとえコンセンサス予測が弱かったとしても、得られる確率は有益かもしれない
- その代わりとして、Spearman相関に対するFisher変換をスコアとして使うことができる
- 判断基準:平均スコア改善がポジティブな特徴量を全て選択する
- 初めの一歩として、ファイナンス機械学習の8章のコードを使いたいかもしれない
3.モデリング (1/2) (p12)
- 訓練データのみを使い、適切な近似関数を選ぶ
- 目的はベースライン分類器(ランダムフォレスト)に勝つこと
- ハイパラチューニング
- オプションとしては、
- 修正ランダムフォレスト
- ロジスティック回帰
- ナイーブベイズ
- AdaBoost
- 勾配Boost
- SVC
3.モデリング (2/2) (p13)
- モデルを作る際のアドバイス:
- Eras間のバランス:モデルのパフォーマンスが悪いErasを特定し、それをモデルから除いて、それ固有のモデルを作る(一種のブースティング)。目的関数は、組み合わせたモデルが全てのErasに渡ってうまくいったかどうかを評価すべきである。場合によっては、加えて、国、業種、規模などに渡ってパフォーマンスをバランスさせる。
- 特徴量間のバランス:少数の特徴量に強く依存するモデルは避ける。それら特徴量がワークしなくなったらモデルのパフォーマンスが悪化するだろう。
- ターゲットのバランス:あるレベルではパフォーマンスが良いが、他のレベルでは悪いようなモデルは避ける。頑健なモデルは、異なるレベルにおいても有益な特徴量に依存している。
- 分散減少:バギングの際、小さなbagsを形成し、drawsが異なるErasから来るようにコントロールする。これによりbags間の相関が下がり、したがって誤差のバリアンスをより効果的に減らせる。
4.交差検証 (p14)
- 検証データ (validation set) に対してスコアを計算する(点推定)
- 他の方法として、検証データに対してK分割交差検証を適用する
- 予測される各分割に対して、残りのデータセットに関数をフィットさせる
- 訓練データ全て
- 検証データの (K-1) 分割
- 例えば、
- 分割1を予測するために、訓練データと、分割2から分割K、に対してモデルをフィットさせる
- 分割2を予測するために、訓練データと、分割1と分割3から分割K、に対してモデルをフィットさせる
- ・・・
- 分割Kを予測するために、訓練データと、分割1から分割 (K-1) 、に対してモデルをフィットさせる
- これにより、スコアに対して平均や標準偏差を計算できる
- 予測される各分割に対して、残りのデータセットに関数をフィットさせる
5.提出 (p15)
- Numeraiのアカウントを作成する。ペーパーにアカウント名を記載する。
- テストデータに対して予測を計算する
- 多クラス予測確率はシングルスコアに要約する
- 例えば、[0.0, 0.1, 0.2, 0.7, 0.0] → 0.6 + 0.7 x (0.8 – 0.6) = 0.74
- 予測をアップロードする
- ペーパーとソースコードを私に提出する
クオンツリサーチの過去と未来
キーポイント
- 伝統的に、投資戦略の開発に求められるのは:
- ドメイン固有の知識
- 公開が制限されているデータセットへのアクセス
- データサイエンティストの大多数には、これら要求のうちどちらか、あるいは両方が欠けている
- これら2つの障害が存在するのはその仕組みから言って当然
- 金融知識は企業に蓄積され、取引の秘密として守られる
- 金融データは高価であり、それによって幅広い科学コミュニティがアクセスできなくなっている
- チャレンジ:これら2つの障害を乗り越えて、全てのデータサイエンティストが市場の非効率性を特定できるようにする
- チャンス:金融を民主化することで市場の効率性を高める
- より詳細な議論については、ペーパーを参照のこと。
現代クオンツリサーチのハンディキャップ
旧パラダイム (後半のp4)
- ファンドマネージャーは定期的にクオンツリサーチャーのチームを雇って投資戦略を開発する
- これらチームはアセットアロケーションについて互いに競い合う
- 互いにIPをシェアしない
- 雇用している企業とIPをシェアしてはいけない
- これらの戦略を導き出すために、リサーチャーは大量のヒストリカルデータを分析し、再現性のある結果につながるパターンを探す
- これら再現性のあるパターンはヒストリカルシミュレーションによって立証される(バックテストとして知られる)
- 伝統的に、クオンツチームはサイロ(silo: 貯蔵庫)として働き、運営されてきた。会社が複数の投資戦略をカバーする能力は、いくつのチームを雇用できるかによって制限される。
ハンディキャップ#1:経験の障害 (後半のp5)
- 投資戦略の開発は典型的に、ドメイン固有の知識を要求する
- これはデータサイエンティストコミュニティの参加を妨げる。投資戦略開発の問題を抽象的な予測問題に変換する方法を理解しているのは、彼らのうちごく少数しかいないからだ。
- 結果として、複雑な投資機会の多くは裁定取引が行われず、または活用されない。なぜなら、予測問題を解くのに必要な技術的能力を持っている人は、そもそも問題を提起するのに必要なドメイン知識を持っていないかもしれないからだ。
- Web of Scienceによると、経済学のジャーナルで次の用語のいずれかを含む記事は89本(0.65%)しかなかった:分類器、クラスタリング、ニューラルネットワーク、機械学習
ハンディキャップ#2:データ/リソースの障害 (後半のp6)
- 投資機会の開発はたいてい、高価なデータセット、ソフトウェア、ハードウェアへのアクセスを要求する
- マスメディアにチャンスが流れていた時代は過ぎ去った
- ミスプライスされた証券を特定するには、洗練された分析が求められるが、それによって複雑なデータセットが消費される
- これらのデータセットを購入し、整理し、分析するのは高価である
- それに加え、スーパーコンピューターや特別なソフトウェアのコストもある
- バイサイドファームがオルタナティブデータに費やしている予算の総額は過去3年で4.7倍になっている
ハンディキャップ#3:選択バイアス (後半のp7)
- リサーチャーにはモデルをオーバーフィットさせるインセンティブがある。なぜなら期待できるパフォーマンスをバックテストで生み出すことで雇われているからだ。
- 企業にとっては典型的にバックテストのオーバーフィッティングを防ぐ方法がない
- 場合によっては、企業はオーバーフィッティングを奨励するかもしれない。なぜなら、オーバーフィットしたバックテストをプロモーションに使うことで投資家から資金を集められるからだ。
- 1つの解決策は「組立ラインパラダイム」を実践すること
- 試行回数をコントロールしていない場合、バックテストのシャープレシオで高い値を得るのは当然である
クオンツリサーチのクラウドソーシング
クラウドソースリサーチとは何か? (後半のp9)
- クラウドソースリサーチでは、クオンツは以下のリソースをシェアする:
- データ
- ソフトウェア
- ハードウェア
- リソースをシェアすることに加え、クラウドソーシングは分散化・分権化しないといけない
- 中央で計画するとクラウドソーシングの目的を壊してしまう:
- 計画によって方法やアイデアのレンジが狭くなってしまう
- クラウドをマイクロマネージするのは手間がかかる
- カギとなるのは、指示ではなくインセンティブの仕組みを通して、クラウドの仕事をまとめ上げることである
- 伝統的なクオンツファームはリサーチを内部で行う。モダンなクオンツマネージャーはリサーチの労力をますますアウトソースあるいはクラウドソースするようになっている。
バックテストプラットフォームアプローチ (後半のp10)
- プラットフォームアプローチでは、リサーチは指示されることなく、成果物はトレードであり、予測値ではない
- リサーチャーは全ての戦略モジュールを開発するか使用する:
- データ分析
- 取引戦略(または少しまれだが、予測モデル)
- リスク/ポートフォリオ管理
- 取引執行
- バックテスト
- バックテストプラットフォームは、データとリソースを彼らのユーザーに提供することで、ハンディキャップ#2に効果的に対処できる。しかしながら:
- ハンディキャップ#1(経験の障害)はデザインによって解決されておらず、ユーザーに課されたままである
- ハンディキャップ#3(選択バイアス)は克服するのが難しい。理由は、バックテストは監視されておらず、結果を選択して報告するから。
- データレポジトリ → シグナル生成(ポジション(ルールベース)またはバリュー(予測ベース))→ ポートフォリオ構築、リスク管理 → 取引執行
トーナメントアプローチ (後半のp11)
- トーナメントアプローチでは、リサーチは指示されるが、成果物は予測値であり、トレードではない
- トーナメントでは次のように対処する:
- ハンディキャップ#1:データは、経験豊富なリサーチャーによって前処理され、構造化され、関連する問題(組織にとって有用なもの)が予測課題として提示される。
- ハンディキャップ#2:データは利用可能となっている。あまり一般的ではないが、計算クラスターへのリモートアクセスが提供されることもある
- ハンディキャップ#3:トーナメントは、選択バイアスが発生しないように、または、もし発生したらそれを考慮できるようにデザインされている。
- トーナメントデザインは複雑な課題だが、実際の例を見ると最も良くわかる
- 生データ → データの前処理と構造化 → リサーチャーは機械学習モデルを作成 → 予測を集計 → 取引執行
ケーススタディ:Numeraiトーナメント
データ構造 (後半のp13)
(今回のスライド前半部分と同一のため省略)
データの難読化 (後半のp14)
(今回のスライド前半部分と同一のため省略)
モデルの学習 (後半のp15)
(今回のスライド前半部分と同一のため省略)
モデルのスコアリングと選択 (後半のp16)
(今回のスライド前半部分と同一のため省略)
ユーザーステイキング (後半のp17)
(今回のスライド前半部分と同一のため省略)
スコアカード
3つのリサーチパラダイムの比較 (後半のp19)
- 経験の障害
- サイロ:各チームは金融の専門家を含む
- プラットフォーム:各参加者は金融の専門家でなければならない
- トーナメント:金融の専門家は問題を定義し、非専門家がそれを解けるようにする(misspecification risk)
- データの障害
- サイロ:小さなチームにデータが配布される
- プラットフォーム:データは大きなコミュニティに配布されなければならない(多くのライセンスが必要)
- トーナメント:データの難読化によって1ドル払うだけで大量データを再配布できる
- データのマネタイズ
- サイロ:低い
- プラットフォーム:高い
- トーナメント:極めて高い
- 選択バイアス
- サイロ:メタデータの収集により事後的に防ぐのは可能
- プラットフォーム:事後的に防ぐのは可能だが困難でコストがかかる
- トーナメント:その設計によって事前に防げる
- アウトプット
- サイロ:トレード、ポートフォリオ、予測値
- プラットフォーム:トレード、ポートフォリオ
- トーナメント:予測値
- IP所有権
- サイロ:IPは典型的に企業が所有
- プラットフォーム:IPは個人に帰属するがシェアしないといけないかもしれない
- トーナメント:個人が所有(コードはシェアされない)
- ハードウェア/計算リソース
- サイロ:企業が支払う
- プラットフォーム:プラットフォームが支払う
- トーナメント:出場者が支払う
- 幅広さ
- サイロ:低い
- プラットフォーム:高い(指示されないクラウド)
- トーナメント:中間(指示されるクラウド)
- 深さ
- サイロ:低い(小さなチームだから)
- プラットフォーム:低い(指示されないリサーチだから)
- トーナメント:高い(指示されるリサーチのおかげ)
- スケーラビリティ
- サイロ:低い
- プラットフォーム:中間
- トーナメント:高い
参考文献
ファイナンス機械学習の続編とも言われている、同じ著者の新しい本はこちら。まだ翻訳版は出ていないようだ。
ファイナンス機械学習とその原著はこちら。