はじめに
『ファイナンス機械学習 』著者のMarcos Lopez de Prado氏が自身のサイトで『ファイナンス機械学習』に関する講義スライドを全編無料公開している。
『ファイナンス機械学習 』については、
botter界隈やシストレ界隈では
・『ファイナンス機械学習 』を抱いて寝る人
・『ファイナンス機械学習 』を枕にして寝る人
・『ファイナンス機械学習 』で枕投げをする人
が続出しているらしく?、
幅広く読まれているようだ。
このシリーズ記事では、 著者の了解を得て、上記の講義スライドを日本語でまとめる。 英語だとどうしても読むのに時間がかかったりエネルギーを多く使ってしまう、という方向け。全10回あるが、今回はその第3回のスライドを取り上げる。ログインのような画面になる場合は、メールアドレスとパスワードを入力してSSRNのアカウントを作ればダウンロードできる。
本記事はQuantCollege管理人の学習メモであり、
管理人は必ずしもこの分野の専門家ではない点につきご留意頂きたい。
参考文献
ファイナンス機械学習の続編とも言われている、同じ著者の新しい本はこちら。
(2020/11/12更新) ついに和訳版も出たようだ。
ファイナンス機械学習とその原著はこちら。
関連記事
第2回のスライドをまとめた記事はこちら。
第3回のスライドに書かれていること
第3回のスライドでは、金融データの構造、バー作成、ラベリング、サンプルウェイト、分数次差分などが解説されている。
今日学ぶことは何?(p2)
- 金融データの構造:X マトリックス
- サンプル非同期データ
- 機械学習アルゴリズムに適用しやすいデータを作る
- ラベリング:(Y, T) 配列
- 予測する価値のあるものを予測しよう
- サンプルウェイト:W ベクトル
- 観測値の重要性は全てが同じわけではない
- 分数次差分
- メモリーの欠落が最小限に抑えられる、定常な特徴量を手に入れる
金融データの構造
金融データの重要な種類 (p4)
- ファンダメンタルデータ(財務データ)
- 資産、負債
- 売上、費用/利益
- マクロ変数、など
- 市場データ
- 価格/イールド/インプライドボラティリティ
- 出来高
- 配当/クーポン
- 建玉
- クォート/キャンセル
- Aggresor side、など
- アナリティクス
- アナリストによる推奨
- 信用格付け
- 利益見通し
- ニュースセンチメント、など
- オルタナティブデータ
- 衛星/CCTV画像
- グーグル検索
- ツイッター/チャット
- メタデータ、など
バーの作成 (p5)
- 情報は、エントロピーレートが一定で市場にやってくるわけではない
- 時系列の区間でデータをサンプリングすることはつまり、個々の観測値が持つ情報が一定ではないということ
- より良いアプローチは、交換された情報量の従属的なプロセスとして観測値をサンプリングすること
- トレードバー
- ボリュームバー
- ドルバー
- ボラティリティまたはランバー
- オーダー不均衡バー
- エントロピーバー
例1:サンプリング頻度 (p6)
- E-mini S&P500先物で3種類のバーを計算した。
- 左のグラフは、日次バーの指数加重移動平均。
- ティックバー(黒の線)は、複数のマイクロストラクチャー要因によって、サンプリング頻度の幅が広くなる傾向にある。
- ボリュームバー(緑の線)のサンプリング頻度は価格水準に反比例することが多い
- 一般に、ドルバー(青の線)はサンプル頻度がより安定する傾向にある
例2:ドル不均衡バー (1/2) (p7)
- 時点\(T\)における不均衡を\( \theta_T = \sum_{t=1}^T b_t v_t \)と定義しよう。ここで、\( b_t \in \{ -1, 1 \} \)はagressorフラグ(Buy/Sellフラグ)、\(v_t\)はトレードされる証券の数または交換される金額を表す。
- バーの開始時における\( \theta_T \)の期待値を求めると、
- \( \mathbb{E}_0 [\theta_T ] = \mathbb{E}_0 \left[ \sum_{t | b_t =1} v_t \right] – \mathbb{E}_0 \left[ \sum_{t | b_t =-1} v_t \right] \)
- \( = \mathbb{E}_0 [T] (\mathbb{P}[b_t = 1]\mathbb{E}_0 [v_t | b_t = 1] – \mathbb{P}[b_t = -1] \mathbb{E}_0 [v_t | b_t = -1] ) \)
- ここで、\( v^+ = \mathbb{P}[b_t = 1]\mathbb{E}_0 [v_t | b_t = 1], v^- = \mathbb{P}[b_t = -1]\mathbb{E}_0 [v_t | b_t = -1] \)と定義すると、\( \mathbb{E}_0 [T]^{-1} \mathbb{E}_0 [\sum_t v_t ] = \mathbb{E}_0 [v_t ] = v^+ – v^- \)と書ける。\(v^+ , v^- \)は\(v_t\)の期待値を、買いの部分と売りの部分に分解したと考えることができる。
例2:ドル不均衡バー (2/2) (p8)
- すると、\( \mathbb{E}_0 [\theta_T ] = \mathbb{E}_0 [T] (v^+ – v- ) = \mathbb{E}_0 [T] (2v^+ – \mathbb{E}_0 [v_t ]) \)と書ける。
- 実際には、
- \( \mathbb{E}_0 [T] \)は、前のバーからの\(T\)の指数加重移動平均で推定する。
- \( (2v^+ – \mathbb{E}_0 [v_t ] ) \)は、前のバーからの\( b_t v_t \)の指数加重移動平均で推定する。
- 以下の条件を満たすようなティックについて\(T^* \)に隣接する部分集合としてバーを定義する:
- \( T^* = \mathrm{argmin}_T \{ |\theta_T | \geq \mathbb{E}_0 [T] |2v^+ – \mathbb{E}_0 [v_t ]| \} \)
- ここで、期待される不均衡のサイズは\( |2v^+ – \mathbb{E}_0 [v_t ]| \)からインプライされる。
- \(\theta_t \)が期待よりも不均衡であるほど、上記の条件を満たす\(T\)は低くなる。
マルチプロダクト系列 (p9)
先物とオプションのローリングバスケットについては、2.4.1節(ETFトリック)も参照せよ。
特徴量サンプリング (p10)
- 特定のイベントの結果を予測するようアルゴリズムを学習させるために、不規則な頻度で特徴量をサンプリングしたい場合がある。
- そのような場合は、できるだけ多くの行を持つマトリックスXを作り、それから選択した特徴量で予測可能な行の部分集合(イベント)にダウンサンプルする
ラベリング
ファイナンスにおけるラベリング (p12)
- 見る限り全てのファイナンス機械学習のペーパーは、固定タイムホライズン法を使って観測値をラベリングしている
- インデックス t を持つバーから特徴量たち\( \{ X_i \}_{i=1,…,I} \)を取ってくる。観測値 \(X_i \)は以下のようにラベル\( y_i \in \{ -1, 0, 1 \} \)に割り当てられる。
- \(r_{t_{i, 0}, t_{i, 0} + h} < – \tau \)ならば:-1
- \(|r_{t_{i, 0}, t_{i, 0} + h}| \leq \tau \)ならば:0
- \(r_{t_{i, 0}, t_{i, 0} + h} > \tau \)ならば:1
- ここで、
- \(\tau \)は事前に定められた一定の閾値
- \(t_{i, 0} \)は\(X_i \)が起こった直後のバーのインデックス
- \(t_{i, 0} + h\)は\(t_{i, 0}\)から\(h\)バー後のインデックス
- \(r_{t_{i, 0}, t_{i, 0} + h} \)はバーホライズン\(h\)に渡る価格リターン
- 文献ではほぼ常にタイムバーを取り扱っているので、\( h \)は固定タイムホライズンを意味する。
固定タイムホライズン法の注意事項 (p13)
- このようなラベリングの方法を避けるべき理由がいくつかある:
- タイムバーは統計的性質が良くない
- 観測されるボラティリティとは関係なく、同じ閾値 \( \tau \)が適用されている
- より良い代替案は例えば:
- 可変の閾値 \( \sigma_{t_{i, n}} \) ごとにラベリングする。閾値はリターンのローリングの指数加重の標準偏差を使って推定する
- ボリュームバーやドルバーを使う。これらのボラティリティはかなり一定に近い(分散均一性:homoscedasticity)
- しかしこれら2つの改善では、固定タイムホライズン法の重要な欠点を見落としている:価格が描く経路(path)である。トリプルバリア法でこれに対処する。
トリプルバリア法 (p14)
- ファンド、取引所(マージンコール)、投資家によってストップアウトされたポジションから利益をあげる戦略を作るのは単に非現実的
- トリプルバリア法は3つのバリアのうち初めにタッチしたバリアに従って観測値をラベリングする
- 利確と損切りのリミットとして、水平なバリアを2つ定義する。これらは推定した(リアライズドであれインプライドであれ)ボラティリティについて動的な関数である
- 3つ目は垂直なバリアで、ポジションをとった時点から経過したバーの数によって定義する
- 価格の経路が初めにタッチしたバリアがラベルを決定する:
- 上方バリア:ラベル 1
- 下方バリア:ラベル -1
- 垂直バリア:ラベル 0
トレンドスキャン法 (p15)
- 一連の観測値 \( \{ x_t \}_{t=1,…,T} \) があるとする。\( x_t \)は予測しようとしている証券の価格を表す
- 全ての観測値 \( x_t \) に対して、\( x_t \) が下降トレンドなのか、トレンドなしなのか、上昇トレンドなのか、に基づいて、ラベル \( y_t \in \{ -1, 0, 1 \} \)を割り当てたい
- 1つの可能性としては、以下の線形の時間トレンドモデルで推定された回帰係数\( \beta_{1} \)に関するt-値を計算すること
- \( x_{t+l} = \beta_0 + \beta_{1} l + \epsilon_{t+l} \)
- \( t_{\beta_1} = \frac{ \beta_1 }{\sigma_{ \beta_1 }} \)
- \( l=0, …, L-1 \)
- \( L \)はルックフォワード期間でありL≦t
- \( L \)が異なるとt-値も変わってくる
- この不確定性を解決するには、\( L \)の値をいくつも試して、t-値の絶対値を最大化する値を選択すればよい
- このようにして、\( x_t \)に対して、複数のルックフォワード期間の可能性の中から、過去に観測された最も重要なトレンドを割り当てる。
メタラベリング
弱い予測器を強い予測器に変える (p17)
- 売りか買いかを決めるモデルを持っているとする:
- その賭けのサイズを学習するだけでよい。サイズには、全く賭けない(サイズ=ゼロ)の可能性も含む。
- これは実務家が通常出くわす状況である。商品を買いたいか売りたいかは知っていることが多く、残っている質問は、その賭けにどれだけの金額をリスクにさらすか、ということだけ。
- メタラベリング:第1のモデルが出す結果に、1(利益)か0(損失)をラベリングする。『ファイナンス機械学習』の3.6節から3.8節を見よ。
- ゴールはマーケットを予測することでない。そうではなくて、ゴールは第1のモデルの成功を予測すること。
- メタラベリングは、第1の外部モデルの使い方を学習する第2の機械学習モデルを作る。
- 第2のモデルはサイドを学習しない。サイズだけを学習する。
- メタラベリングは結果が非対称である場合に特に役立つ。その場合、recallをいくらかあきらめることで、その代わりにprecisionを改善する。これによってシャープレシオを大きく改善することができる。
なぜメタラベリングは機能するのか (p18)
- 二値分類結果に関連するシャープレシオは以下のように導出できる(『ファイナンス機械学習』の15.3節を見よ)。
- \( \theta [p, n, \pi_- , \pi_+ ] = \frac{(\pi_+ – \pi_- ) p + \pi_- }{ ( \pi_+ – \pi_- ) \sqrt{p(1 – p)} } \sqrt{n} \)
- \( \{ \pi_- , \pi_+ \} \)はネガティブな結果、ポジティブな結果によるペイオフを決定する。
- \( p \)はポジティブな結果の確率
- \( n \)は1年あたりの結果の数
- \( \pi_+ \)が \( \pi_- \)よりも十分に小さい場合、\(p\)を増加させるか\(n\)を増加させると、\( \theta [.] \)を高めることができる
- 第1のモデルは\( \{ \pi_- , \pi_+ \} \)を決定し、第2のモデルは採択する閾値を調整して\( \{ p, n \} \)を制御する。
- 左の例では、メタラベリングによって大きな損失を避けられたおかげで、戦略のシャープレシオが2.65上昇した
メタラベリングの使い方 (p19)
- メタラベリングは高いF1値を出したい場合に特に有用
- 第一に、たとえprecisionがあまり高くなかったとしても、recallを高められるモデルを作る
- 第二に、第1のモデルが特定したポジティブな結果に対してメタラベリングを適用することで、低いprecisionを改善する
- メタラベリングはさらに3つの理由から、とても有力な道具である:
- 機械学習アルゴリズムはよくブラックボックスだと批判されるが、メタラベリングによって、ホワイトボックスのもとで機械学習システムを作ることができる。
- メタラベリングを適用する場合に過学習の影響は限定的である。なぜなら、機械学習は賭けのサイドは決めず、サイズだけを決めるからである。
- 少額の賭けで精度が高く、多額の賭けで精度が低いと大変なことになる。良い機会を特定するのと同じくらい重要なのは、賭けのサイズを適切に決めることである。よってその重要な決定(サイズを決めること)を正しくすることだけにフォーカスした機械学習アルゴリズムを開発するのは理にかなっている。
- メタラベリングは全ての裁量ヘッジファンドにとって本質的な機械学習のテクニックになるはず
- メタラベリングによって、裁量的なインプット(第1のモデル)と定量的なオーバーレイ(第2のモデル)とをシームレスに組み合わせることができる。
サンプルウェイト
uniquenessによって観測値をウェイト付けする (1/2) (p21)
- 2つのラベル\( y_i , y_j \)は、これらが両方とも少なくとも一つの共通リターン \( r_{t-1, t} = \frac{p_t}{p_{t-1}} – 1 \)の関数になっている場合、これら2つのラベルは時点\(t\)で同時に発生する。
- 1.全ての観測時点\(t = 1, …, T\)に対して、二値の配列 \( \{ 1_{t, i} \}_{i = 1, …, I} \)を作成する。ここで\( 1_{t, i} \in \{ 0, 1 \} \)である。この配列はその結果がリターン\( r_{t-1, t} \)に関係しているかどうかを示す。
- 2.時点\(t\)で同時に発生しているラベルの数を数える。\( c_t = \sum_{i=1}^I 1_{t, i} \)
- 3.ラベル\(i\)の時点\(t\)におけるuniquenessは\( u_{t, i} =1_{t, i} c_{t}^{-1}\)
- 4.ラベル\(i\)の平均的なuniquenessはそのラベルのライフスパンに渡る\(u_{t, i}\)の平均であり、それは\(\overline{u_i} = (\sum_{t=1}^{T} u_{t, i}) (\sum_{t=1}^{T} 1_{t, i} )^{-1} \)
uniquenessによって観測値をウェイト付けする (1/2) (p22)
- 5.サンプルのウェイトは、対数リターンの絶対値をイベントのライフスパン\( [t_{i, 0}, t_{i, 1}] \)に渡って合計したもので定義できる。
- この方法の理論的根拠は、観測値を、それにユニークに関連付けられた対数リターンの絶対値の関数としてウェイト付けする、というものである。
- このウェイトはsequential bootstrap (4.5節)で使うことができる。
配列W (p23)
- 配列Wはタプル\( (X, y) \)の各行にウェイトを割り当てる。
- この情報があれば、
- アルゴリズムは冗長でないサンプルのもとで学習する。
- アルゴリズムは最も重要な例における誤差を最小化しようとする。
- 特に、\(W\)は時系列をモデリングするのにとても役立つ。なぜなら:
- 近くの観測値を学習しても追加的な情報はほとんど得られない。
- 古い観測値は新しい観測値と比べて重要性は低いことが多い。
- 最近の観測値に対してより大きなウェイトを割り当てるために\(W\)が使える。
分数次差分による特徴量
定常性 vs. メモリー のジレンマ (p25)
- 統計的推測を行うためには、研究者は不変な過程を取り扱う必要がある。例えば:
- 価格のリターン(または対数価格の変化)
- イールドの変化
- ボラティリティの変化
- これらの操作は系列を定常化するが、その代償として原系列からメモリーを取り除いてしまう。
- メモリーはモデルの予測力の基礎である。
- 例えば、均衡(定常)モデルは予測を生成するために、価格過程が長期的な期待値からどれくらい乖離しているか評価しようとすると、ある程度メモリーが必要になる。
- ジレンマは、
- リターンは定常だがメモリーが失われている。そして、
- 価格はメモリーを持っているが非定常である。
定常性とメモリーのトレードオフの最適化 (p26)
- 問題:できるだけ多くのメモリーを保存したまま、価格系列を定常化できる最小階数の差分は?
- 解答:全てのメモリーが消されるわけではないような定常系列を考えるために、リターンの概念を一般化したい。
- このフレームワークのもとで、リターンは他にたくさんあるうちのひとつの(そして多くの場合最適ではない)価格変換の方法に過ぎない。
- 左下グラフの説明:
- 緑の線:E-mini S&P500先物のトレードバー(サイズ1E4)
- 青の線:分数次差分(次数\(d = 0.4\))
- 短期スパンで見ると、分数次差分はリターンに近い
- 長期スパンで見ると、分数次差分は価格水準に近い
例1:E-mini S&P500先物 (p27)
- x-軸は、ADF statを求める系列を生成するのに使った差分次数\(d\)の値
- 左のy-軸は、原系列(\(d = 0\))と様々な\(d\)の値で求めた差分系列との相関
- 右のy-軸は、対数価格に対して求めたADF stat
- 原系列(\(d = 0\))はADF statが -0.3387、リターン系列(\(d = 1\))はADF statが -46.9114
- 95%の有意水準だと、検定の臨界値は -2.8623
- ADF stat(青の線)は\(d = 0.35\)の近くでその閾値とクロスしており、そのとき相関(オレンジの線)はまだ非常に高い(0.995)
例2:最適な分数次差分の定常性 (1/2) (p28)
- この表は、世界中の非常に流動性のある先物契約に対する、ADF statを示している。
- 縦軸が商品、横軸が差分階数 ( \(d\) )。
- 緑色でハイライトしたセルは、ADF値が単位根の帰無仮説を棄却できないセル。
- 赤色でハイライトしたセルは、ADF値が単位根の帰無仮説を棄却できるセル。
例2:最適な分数次差分の定常性 (2/2) (p29)
- ほとんどの金融時系列は0.5より小さいオーダーdの分数次差分でも定常化できる。
- しかしながら、ほとんどのファイナンスの研究はリターンをベースに行われている。リターンはつまりd = 1である。
- インプリケーションとしては、何十年間も、ほとんどのファイナンスの研究では、高すぎる次数で差分をとった(メモリーが少ない)系列のもとで行われていた。これによって、間違った予測や過学習が生じている。