見出し画像

Advances in Financial Machine Learningを読んでのメモ(その1)

こんにちは、しゃしゃしゃしゃです。

今回はTLでみかけて今読んでいる最中の「Advances in Financial Machine Learning」という本を、メモ&アウトプットついでにnoteにします。

この本についてざっくり説明すると、機械学習を投資に生かすための本です。

ただ、世の中にあふれている機械学習+投資本とこの本が違うところは著者の経歴だと思っています。

著者はAQR Capital Management(運用資産総額世界2位のヘッジファンドだっけ?)の機械学習部門のトップという実務家の面も持ちながら、 Lawrence Berkeley National Laboratoryのリサーチフェローであったり、金融経済学博士、数理経済学博士でもあるというスーパーマンなんですね。

とりあえずは無料公開します。その2以降は多分有料化すると思う。

なんかまだChapter2くらいまでしか読めてないけどかなり良本感があるので無料公開はもったいないなと思いまして。

Amazonでも安価に入手できるのでおすすめです。

この本の目次

前文
Chapter 1: Financial Machine Learning as a Distinct Subject
ーーー今回はここまでまとめますーーー
Part 1: Data Analysis 
Chapter 2: Financial Data Structures
Chapter 3: Labeling
Chapter 4: Sample Weights
Chapter 5: Fractionally Differentiated Features
PART 2: Modelling
Chapter 6: Ensemble Methods
Chapter 7: Cross-Validation in Finance
Chapter 8: Feature Importance
Chapter 9: Hyper-Parameter Tuning with Cross-Validation
PART 3: Backtesting
Chapter 10: Bet Sizing
Chapter 11: The Dangers of Backtesting
Chapter 12: Backtesting through Cross-Validation
Chapter 13: Backtesting on Synthetic Data
Chapter 14: Backtest Statistics
Chapter 15: Undestanding Strategy Risk
Chapter 16: Machine Learning Asset Allocation
PART4: Useful Financial Features
Chapter 17: Structural Breaks
Chapter 18: Entropy Features
Chapter 19: Microstructural Features
PART 5: High-Performance Computing Recipes
Chapter 20: Multiprocessing and Vectorization
Chapter 21: Brute Force and Quantum Computers
Chapter 22: High-Performance Coputational Intelligence and Forecasting Technologies

Chapter 1: Financial Machine Learning as a Distinct Subject

本には2種類あって、教授みたいな実務家でない人が書いた存在しない世界における数学理論がかかれたものと厳密な数学的な説明のない数学を誤用した実験的なもの。

→この本はその二つを結びつけるために書かれた(著者はAQRでML部門のトップをしている&金融経済・数理ファイナンス博士で教授)

顔認証や自動運転よりも群衆の知恵を打ち負かすのは難しい

→市場で勝つのは難しい

売り指値がキャンセルになって成行が入ったり、買い指値がキャンセルになってもっと下に行った場合などは売りが優勢でそれ自体は戦略として使えないが、執行や流動性リスクの監視、MM、ポジションテイクなどに使える

→OFI的な考えに似てる。

理論を考えた場合、どういう場合が損失状況になるのかを特定しておく必要がある。行動バイアスなのか、情報の非対称性なのか、規制上の制約なのか。

→確かに自分が作ってるbotの損失状況を把握してる人は強いイメージ。そうでもしないと改良案も出てこないし。

時間敏感(速度が重要)なのでスケジューラや自動化サーバ(Jenkins)、ベクトル化、マルチスレッド、マルチプロセス、GPU利用、分散コンピューティング(Hadoop)、HPC(Slurm)利用、並列化手法などにかなり依存する

→分かってはいたけどここまで厳密に作ってる人は少なそう=やれば儲かる可能性有

戦略がデプロイされたら以下のライフサイクルを回す
1. 出入港禁止: バックテスト以後の期間を使ってバックテストをしてみてパフォーマンスを確認しバックテストと一致すれば次に進む
2. 模擬取引: 実際には取引しないが、実環境でデータ読み込み遅延・計算遅延・執行遅延などを含んだ環境で模擬取引を行う。予測した通りのパフォーマンスなら次に進む
3. 卒業: リアルポジションを取る。様々なリスク、リターン、コストを含めて正確に評価。
4. 再配置: ポートフォリオの組み換えを行う、最初は小ロット、だんだん大きくしていってパフォーマンスが出なくなれば小ロット。
5. 引退: 使えんなったというエビデンスが出たら引退

→自分には2が足りてない、1やった後にすぐ実弾でフォワードテストやってる。

Data:
- 問題: GIGO→無意味なデータは無意味な結果をもたらす。
- 解決策: ユニークなデータや扱いにくいデータを使うこと
- 方法:
 - Chapter2: データを正しく構造化する
 - Chapter3: 情報量の多いラベルを作る
 - Chapter4,5: IID(独立同分布)以外の時系列を適切に扱う
 - Chapter17-19: 予測に有益な特徴量を見つける

→みんなが見つけてないデータは使えてないかも…特徴量作成は結構重要視してるけど。

Software:
- 問題: 特別なタスクはカスタムかされたツールが必要
- 解決策: 自分自身が開発したクラスを使うこと、有名なライブラリとかは競合と同じ井戸を掘ることになる
- 方法: Chapter2-22すべてで自分たち自身の関数を開発する。

→脳死で使えるようなことだけやってたらダメってことだと認識

Hardware:
- 問題: MLは数学で最も計算負荷の高いタスクを含む。
- 解決策: HPCのエキスパートになる
- 方法:
 - Chapter20-22:マルチプロセッシングアーキテクチャの観点から考える方法を学びます。 ライブラリをコーディングするときはいつでも、関数を並行して呼び出せるようにライブラリを構築してください
-  Chapter21: 量子コンピュータ用のアルゴリズムを開発

→いったん置いておきたいところ、ここら辺に手を出すなら研究室の先輩とかのつてを頼ろう

Math:
- 問題: 数学的な証明は時間がかかるがだれも待たない
- 解決策: 実験的数学を使う
- 方法:
 - Chapter5: メモリ維持のデータ変換に精通
 - Chapter11~15: 過去のシミュレーションよりも良い戦略評価を学ぶ
 - Chapter16: サンプル内で最適なものがサンプル外でも最適であるわけではないことを学ぶ
 - Chapter17、18: 構造のブレイクを検知する方法を学び、時系列データから得られるモノを定量化する
 - Chapter20: 分散コンピューティングのキューイング法を学ぶ
 - Chapter21: 量子コンピューターに精通

→11~15とか17とかめっちゃおもしろそう。そこに行くまでどんだけ時間かかるか…

Meta-Strategies
- 問題: アマチュアは個々の戦略を開発するがプロは大量生産する方法を開発する
- 解決策: ビジネスのように考えて、インスピレーションから生まれるのではなく研究室のようなハードワークによって生まれる状況を作る
- 方法:
 - Chapter7~9: 特徴量の多重共線性を扱いながらアセットクラス全体で関連する機能を識別するプロセスの構築
 - Chapter10: 複数の予測を結合させる
 - Chapter16: アウトオブサンプルで機能するロバストな方法で資金を割り当てる

→耳が痛い。戦略の大量生産大事ね。

Overfitting
- 問題: 通常のCVは間違っている
- 解決策: 常にどのような方法でオーバーフィットするかを考える。常に懐疑的であること。多くの研究者がやっているということはそれが正しいという理由にはならない。時間・リソース・機会を無駄にする。
- 方法:
 - Chapter11-15: バックテストのパラダイムは3つあるがヒストリカルシミュレーションは1個だけ。各バックテストは常にある程度Overfittingしてるのでその量で補正して定量化することを学ぶ
 - Chapter16: インサンプルでOverfittingしてアウトサンプルでのパフォーマンスを犠牲にしない方法を学ぶ

→ヒストリカルシミュレーションが3個中1個というのに驚きモモノキ。気になる。

今回はここまで

まだChapter1まとめただけなのにかなりボリューミーだった。



この記事が気に入ったらサポートをしてみませんか?