1 ファイナンス機械学習という新分野

メタ戦略パラダイム

  • 運用プロセスを複数に分割してパーツを開発して全体を構成する(一人のクオンツが全プロセスを担わない)
  • 成功しているクオンツファームはメタ戦略パラダイムを採用している
  • この書籍は「ファイナンス研究所」の作り方を解説していると取ることもできる

プロダクションチェーン

データキュレータ

<概要>

  • データマネジメントを行うエキスパート
  • 各種DBのプロトコルやデータハンドリング技術に長けている必要がある
  • 各種データの性質を理解して、データの活用度を上げるようなデータマネジメントを行う

<終わりなき旅>

  • DB設計はユーザー(特徴量アナリスト、デプロイメントチーム)の使いやすさが大前提
  • その他に以下の点に配慮する必要がある
    • 拡張性:ユーザーの要望でデータはデータは増えていくのが一般的
    • 冗長性:拡張を繰り返すと、主キー不足などでテーブル間で冗長性が発生(パフォーマンス悪化の原因)
    • パフォーマンス:遅いDBは実質的に使えない(NO-SQL DBなど高速DBの活用も視野に入れる)
    • 更新タイミング:提供側のDBの更新時刻や更新エラーに配慮したデータ更新(直近データほどシビア)
    • ベンダー要因:ベンダー側も上記の事情を抱えているので、DBリプレースがありうる(悩ましい)
  • 定期的な大規模なリプレースが必要になる(下流に影響が出ないようにすべきだが、影響やむなしの場合もある)

<アウトプット>

  • データ構造を統一したDB(ベンダー提供DBを一次加工したもの)
  • DBからデータを取り出すためのハンドラー(むやみに関数が増えないようなDBの設計)

<ポイント>

  • 「生データ」に近い状態でデータを格納しておく
  • 特徴量アナリストが使いやすい形式にするという観点での前処理は施しておく(データ頻度や欠損値などの調整)
  • デプロイメントチームとの連携も必要(「リサーチのためのDB」「実装のためのDB」の整理が必要)
  • データの更新タイミングなどにも配慮する必要がある(実装のためのDBでは特に重要)

特徴量アナリスト

<概要>

  • 生データからアルファシグナルを作るエキスパート
  • 「情報理論」「信号処理」「ビジュアル化」「ラベリング」「重み付け」「重要度分析」などの機械学習の前処理に専門性が必要

<ファクターのレベル感>

  • 単純ファクター:生データに対して単純な処理で作成できる(E/P, Momentum(12M Return)など)
  • モデル系ファクター:モデルから出力されるファクター(Wilcox ROE-PBR, Intrinsic Value, EVAなど)
  • 合成ファクター:同じ系統のファクターを統合してファクター化(Aggressive Value, Defensive Valueなど)
  • 外部データファクター:あらかじめ外部で作成されたデータ(ESG, ニュース, Smart Estimate)

<リサーチの在り方>

  • バックテストはリサーチツールではない(マルコス本が特に強調している点)
  • リサーチとは、「アルファを作るための要素の吟味」と「変数重要度分析」をことを指す
    • データ特性: 欠損値、分布、相関(対主要ファクター)、業種特性、時系列変化、ターンオーバー
    • シナリオ: 経済合理性、アノマリー、行動ファイナンス、市場観察(自らの問題意識)
    • 変数重要度: アルファに実体があるか(裏にある相関が生み出したものでないことの確認)

<アウトプット>

  • 開発成果はファクターリストとしてカタログ化する(特徴量ライブラリ)
  • リサーチから得た知見の整理と共有化(局面分析、取引執行などのアイデア)

<ポイント>

  • 似たようなファクターが増えないように配慮する(ファクターの統合も必要)
  • アルファのプログラムは簡素な記述にすべき(改良しやすいように)
  • プログラムを簡素に保つためにはDB設計に大きく依存する(データキュレータとの連携が必要)

ストラテジスト

<概要>

  • 特徴量アナリストがリスト化したファクターをもとに投資アルゴリズムを構築(アルファシグナルの構築)
  • アルファシグナルを最大限表現できるポートフォリオの在り方を検討する(ポートフォリオの構築)
  • 「金融市場」と「経済学」に深い知見を持つデータサイエンティストが適任

<アルファシグナルの構築>

  • 特徴量ライブラリをもとに、一般的な投資理論に当てはめた戦略を開発する
  • ファクターを組み合わせて「金融市場の特性」「経済合理性」に基づく投資戦略を構築する
  • 投資戦略の構築は、「統計的手法」や「機械学習手法」を用いて行うのが一般的
  • 機械学習手法を用いる場合は解釈可能性を担保しておく必要がある

<ポートフォリオ構築> ※マルコス本では言及なし

  • アルファシグナルの構築を行う際には、「ポートフォリオイメージ」を併せて検討する必要がある
  • 投資戦略のスコアをアルファとした場合の「制約条件」「ユニバース」「リバランス頻度」の在り方を検討する
  • アルファシグナルの構築では表面化しないポートフォリオ「リスクコントロール」を意識する
  • 「リスクコントロール」とは主に制約条件のことを指し、アルファシグナルを歪めることが多い(サイズ制約など)

<アウトプット>

  • 投資戦略を出力するプログラム(バックテストチームに提出)
  • ポートフォリオ構築の条件設定

<ポイント>

  • 投資戦略はホワイトボックス化されたものである必要がある(経済合理性、解釈可能性)
  • アルファの源泉がどこにあるかを理解しておく必要がある(十分なリサーチ、オーバーフィット回避)
  • ポートフォリオ構築までイメージしたアルファシグナルの構築

バックテスター

<概要>

  • ストラテジストのオーバーフィッティングに対する牽制を行う
  • 実証的/実験的手法(計算機統計学)に深い知識を持つデータサイエンティストが適任

<オーバーフィッティング防止策>

  • バックテストの評価結果はマネジメント(CIO)のみに報告する
  • ストラテジーチームには結果のみを知らせる(バックテストの穴埋め的な改良を行うのを防止)
  • 投資戦略のバックテストを多面的に評価するプラットフォームの準備

<ポイント>

  • 様々なシナリオをもとに投資戦略の評価を行って、投資戦略の長所と短所を明確にする
  • 一般的なバックテストで使う「過去」は、あくまで確率過程の1つであったということを念頭に置く必要がある
  • 過去に発生しなかったシナリオやパスについても評価する仕組みが必要

デプロイメントチーム

<概要>

  • ストラテジストが構築したプログラムを、ワークステーションに実装するエキスパート
  • プログラム技術、データハンドリング技術に加えて、発注システムのプロトコルにも詳しい必要がある
  • 高速化のための技術(ベクトル化、並列化(GPU)、自動化)も必要となる

<ポイント>

  • 実装においては「自動化」が前提となる
  • オンゴーイングなので、DB更新タイミングなどデータ取得のタイミングが非常にシビア
  • 市場混乱時には「想定外の出来事」が起こるので、投資判断を誤らないような実装が求められる

2 金融データの構造:X

目的

  • 金融データの特徴を確認する
  • 金融関連データから特徴量をもつ行列Xを作成する方法を考える

金融データの形式

  • 主に以下の4種類のデータが存在する
  1. ファンダメンタルデータ
  2. 市場データ
  3. 分析済みデータ
  4. オルタナティブデータ

特徴量サンプリング

はじめに

  • 「特徴量サンプリング」により機械学習の精度を改善することができる可能性がある
  1. 機械学習アルゴリズムには、適切なサンプルサイズが存在する
  2. ランダムサンプリングでなく、適切な条件の下でのサンプルが精度向上につながることがある

データ量削減のためのサンプリング

  • 「等間隔サンプリング」「一様サンプリング」が行われることが多い
  1. 等間隔サンプリング: いずれも単純さがメリットである一方、抽出間隔に恣意性がある
  2. 一様サンプリング: 抽出の恣意性は排除されるが、重要な情報を含むサンプルの欠落などが懸念される
In [ ]:
 

イベントベースのサンプリング

3 ラベリング:Y

目的

  • 特徴量データXに対応するラベルデータY(教師データ)について議論する
  • 機械学習では、ラベルデータで学習して、アウトサンプルのラベルデータを予測することを目指す

固定時間ホライズン法

概要

  • 「上昇」「横ばい」「下落」など連続データを離散化したもので、「ラベリング」する方法がある
  • 金融分野の機械学習のほとんどがこの方法を用いている
  • トレーディング戦略では、「利食い」「保有」「損切り」などに置き換えることができる
  • ただし、この方法はボラティリティを考慮していない点に問題がある

動的閾値の計算

  • ボラティリティを考慮して動的閾値を導入することを考える
  • 足元のボラティリティに対して判断するので、指数平滑法など直近に重みをつけたボラティリティがよい

トリプルバリア法

概要

- 「上昇」「下落」という水平バリアに、「保有期間」という垂直バリアを設定する

分類ラベリング

不要なラベルの削除

  • 機械学習の分類器は、分布に異常値があったり、出現数の少ないのラベルに対して正しい推定ができない
  • 異常値のラベルはと削除又は置換するのが望ましい

4 標本の重みづけ

はじめに

  • 現実世界の金融データは、「観測値がIID(独立動分布)な過程で生成されていない」という問題を考える
  • 機械学習はIIDを前提としている
  • 金融データがIIDに従わないというギャップが、金融分野における機械学習の失敗の原因の理由である

同時発生的なラベル数

  • あるデータについて、他のデータとの重複のなさを「独自性」と呼ぶ
  • 独自性は期間の終了時に初めて計算可能になる
  • 銘柄間のリターン格差について、「共通リターン」「固有リターン」の存在を意識しておく必要がある

重み付け

リターンによるサンプルの重みづけ

時間減衰

  • 市場データは時間とともに直近データと過去データの関連性が下がる
  • 「線形減衰」「指数減衰」といった方法で、時系列方向にウエイトをつける

クラス重み付け

  • まれにしか発生しないラベルを補正することで、モデル全体の推定精度を改善する

<クラス重み付けとは>

クラス重み付けの説明をする前に、imbalanced classificationが起こる原因についてまとめます。

基本的に機械学習(ニューラルネットワーク含む)の学習処理は(1)モデル、(2)コスト関数、(3)オプティマイザーで構成されます。このimbalanced classificationは、クラスの不均衡がコスト関数に起因してオプティマイザーがうまく機能させない状況のことをいいます。 このコスト関数ですが、2値分類におけるクロスエントロピー誤差を例にいうと、以下のようにコストが計算されます。 (1)クラス0を対象に1件づつコスト(精度の悪さ)を計算して合計を算出 (2)クラス1を対象に上記の同様の計算を実施 (3)上記の(1)と(2)を合算してコストの総計を算出 クラス間に大きな不均衡がある場合、少数派の1件あたりのコストの平均が多数派よりも大きくても件数の大きさに引きずられて総コストにあまり影響を与えません。オプティマイザーは、このコスト関数の出力をもとにパラメータの更新を行うことになるので、結果としてコストに大きな影響を与える多数派の精度を高めるようにパラメータの調整を進めることになります。 これが、imbalanced classificationが起きる原因です。

クラス重み付けとは、上記の説明におけるコスト関数そのものを調整することと同義です。 少数派の件数の少なさをウェイトによって調整することで、少数派のコストが総コストに与える影響をより大きくしようということです。こうすることでオプティマイザーは少数派と多数派をイーブンに扱ってパラメータ調整を進めるようになるとことです。先の処理の説明でいうと、(1)または(2)のうち少数派のほうに所定のウェイトを乗算すればいいことになります。 skitlearnの関数の場合、クラス重み付けはオプションパラメータを設定すれば、後は関数の内部でうまく処理してくれます。一方、tensorflowを使ったニューラルネットワークの場合は、コスト関数を自前で記述する必要がある(もしかすると関数があるかもしれませんが、私はコードを書いているので、そういうことにしておきます)ので、適宜、記述する必要があります。

なお、このクラス重み付けは必ずしも分類の不正確性をなくすものではありません。あくまでも少数派の分類精度を高めるようになるだけです。与えられたデータやウェイトのかけ方によっては多数派の分類精度を犠牲にすることも起こりえます。このあたりはやってみないと分からないというのが実態ではないでしょうか。

5 分数次差分を取った特徴量

6 アンサンブル法

はじめに

  • 機械学習のアンサンブル法を効果的に適用する方法について確認する
  • 金融分野における誤用につながりそうな点を確認する

誤りを起こす3つの要因

バイアス

  • この誤りは、非現実的な仮定を置くことによって引き起こされる
  • バイアスが大きいと、機械学習アルゴリズムはインプットとアウトプットの関係性を正しく認識することができない
  • 「アンダーフィット」が引き起こされている

バリアンス

  • この誤りは、訓練データセットにおけるわずかな変化に対する感応度が高いことから引き起こされる
  • 訓練データの一般的なパターンを学習しているのではなく、ノイズをシグナルと誤認している可能性がある
  • 「オーバーフィット」が引き起こされている

ノイズ

  • 予測不可追うな変化や観測誤差により発生する

7 交差検証法

はじめに

  • 一般的に、交差検証法の目的はオーバーフィッティングを防ぐために機械学習の汎化誤差を測ることにある
  • しかし、金融分野では通常利用される、k-fold交差検証法がうまく機能しない

金融分野の特殊性

問題点の整理

  1. 観測値がIIDな過程から抽出されると仮定できない点
  2. モデルを開発する過程でテストデータが複数回使われる点(11-13章で議論)

IIDに従わない

  • 「訓練データ」と「検証データ」にはリケージ(情報リーク)が発生しないように配慮すべき
  • 観測値にIIDに従わず「系列相関」を持つ場合には、リケージ(情報リーク)に近いことが発生してしまう
  • これは、元の戦略のパフォーマンスをより良いものにしてしまうことを意味する
  • 深刻な問題なのは、無関係な特徴量に対してもリケージが発生する点である
  • これは、パフォーマンスの「再現性」を低下させる方向に働く

リケージを減らす方法

  1. テストデータ直前の学習データを除外して学習する
  2. 学習のオーバーフィッティングをなくすための努力をする(アーリーストッピングなど)

パージされたk-fold交差検証法

概要

  • 「訓練データ」と「検証データ」の間に生じる系列相関に基づく重複を除く(パーシング)
  • 「検証データ」と「訓練データ」の間に生じる系列相関に基づく重複を除く(エンバーゴ)
  • 参考:P137 図7-2

8 変数重要度

はじめに

教訓

  • バックテストを見栄えが良くなるまで行うという間違いを犯している人が多い
  • 同じデータに対して何度もテストするという行為こそが、オーバーフィッティングを引き起こす

変数重要度の必要性

  • 変数重要度に着目するリサーチは、オーバーフィッティングから距離を置くことにつながる
  • 変数重要度は、機械学習モデルをブラッシュアップする入口となる(ブラックボックスを解き明かすカギ)

マルコスのバックテスト第1法則

  • バックテストはリサーチツールではない、特徴量の重要度こそがリサーチツールだ

代替効果

概要

  • 「代替効果」とは、ある特徴量が欠落した時の影響度をいう
  • 現実問題として代替効果は存在するが、その大きさや影響を正確に評価するのは難しい
  • 変数重要度分析では、代替効果が「ある/ない」で区別して考える

問題点

  • 実際に重要な特徴量でも、代替効果で過小評価されて破棄される可能性がある(実際の学習では問題ないが・・・)
  • モデル改良のプロセスでは「単独効果」と「代替効果」は別けて見れるほうが望ましい

直交化による軽減

  • 代替効果のある重要度分析を行う前に、適用するデータセットの特徴量を直交化しておくと代替効果を軽減できる

代替効果のある重要度

モデルベース

  • ランダムフォレストで出力される変数重要度のことをいう(ツリー系モデルのみ)
  • この方法の重要度はインサンプルデータに対して測定される

順列ベース

  • アウトオブサンプルでの予測における重要度を測定する方法
  • ランダムに並び替えた結果に対するパフォーマンスの変化から変数重要度を推定する
  • この方法はツリーモデル以外にもすべてのモデルで適用可能

代替効果なしの重要度

単一特徴量重要度

  • クロスセクションでアウトオブサンプルでの予測に対する重要度を算出する
  • ツリーベース分類器以外にも、あらゆる分類器に適用可能となる

計算対象ユニバース

個別計算

  • 各証券について変数重要度を計算して、その結果を集約することにより最終的な変数重要度を計算する方法

<メリット>

  • 個々の計算サイズが小さく並列処理も可能なので、比較的軽量に計算できる

<デメリット>

  • 代替効果が証券間で交換されるため、代替効果の本質が見えにくくなる

特徴量スタッキング

  • 基準日のパーティションを外して、データセットを1つに結合して扱う方法をいう
  • マルコス氏はこの方法を好んでいるようだ

<メリット>

  • 並列化アプローチよりも大きいユニバースに対して推定を行うことができる(特に小さいユニバースに効果的)
  • 外れ値やオーバーフィッティングによるバイアスが軽減されている
  • 重要度スコアは証券間で平均化されていないため、代替効果によってスコアが弱まることがない

<デメリット>

  • データ量が増えるため、計算が重くなる可能性がある

9 ハイパーパラメータ調整

10 ベットサイズの決定

  • 省略

11 バックテストの危険性

はじめに

問題提起

  • バックテストは、クオンツ技術の中で最も重要で、最も理解されていない技術である
  • 間違いの典型例は、「バックテスト」を「リサーチツール」と勘違いすることである

初心者の陥る罠

  1. サバイバーシップ・バイアス
  2. ルックアヘッド・バイアス
  3. ストーリーテリング(バックテスト結果に合わせてストーリーを作りこむ)
  4. データスヌーピング(検証データで訓練する)
  5. 取引コスト(コストは正確には推定できない)
  6. 外れ値(再現しない極端な結果に基づいて分析)
  7. ショートポジション(ショートの制約を考慮しない)
  8. 相関関係と因果関係を混同(無意味な相関を信じ込む)

上級者の陥る罠

  • 大量のバックテストを行った結果、バックテストのプロになってしまっている
  • プロになると、バックテストをよくするためのファクターやパラメータを経験的に知っている
  • 問題の根本原因は、バックテストのたびに同じユニバースで分析していることにある

オーバーフィッティングの牽制

  • バックテストを行った回数だけペナルティをつけるくらいでよい
  • あるいは、ユニバースや期間にサンプリングをかけるくらいでもよい

バックテストとリサーチ

概要

  • バックテストはリサーチツールではない、変数重要度分析こそが真のリサーチツールである
  • 変数重要度の伴わないパフォーマンスは「再現性」に問題が出る可能性が高い(オーバーフィッティング)

バックテスト

  • 投資戦略の「パフォーマンス」や「ターンオーバー」を確認することができる
  • しかし、投資戦略がなぜパフォーマンスをあげているかを知ることはできない
  • よって、バックテストは悪い投資戦略を切り捨てることに使うべき、バックテストを改善してはならない

変数重要度分析

  • パフォーマンスを生み出すかにかかわらず、機械学習アルゴリズムが新たなパターンを発見するための重要性を示す
  • これは、リターンに影響を及ぼす要素を知ることであり、「再現性」につながる大事な要素である
  • 変数重要度分析はバックテスト前に検証するが、これがバックテストの悪用を牽制することになる

その他の重要なリサーチ

  • データの構造化(2章)
  • ラベリング(3章)
  • 重み付け(4章)
  • アンサンブル(6章)
  • 交差検証(7章)
  • 変数重要度分析(10章)※最重要
  • ベットサイズ(10章)

オーバーフィッティング

概要

  • オーバーフィッティングは、複数のバックテストによる「選択バイアス」と定義することができる
  • 「戦略の選択」はバックテストのプロセスにおいて必ず必要なので、オーバーフィッティングは多かれ少なかれ発生する
  • 運用者が「見栄えの良いバックテスト」を出すというインセンティブが、オーバーフィッティングにつながる

回避方法

  1. バックテストは投資が現実的ユニバースに対して行う(8章)
  2. 「バギング」を実施してパフォーマンスが低下しないかを確認(複数パターンの中立化/銘柄サンプリング)(6章)
  3. リサーチが完了するまでバックテストは行わない(1-10章)
  4. バックテスト試行をすべて記録してオーバーフィッティング確率を適用(14章)
  5. 「シナリオ・シミュレーション」を併せて行う(12章)

12 交差検証によるバックテスト

はじめに

  • バックテストの方法には以下の2種類がある
  1. フォークフォワード法: 投資戦略を過去に先読みせずに実施する(ヒストリカルシミュレーション)
  2. 交差検証法: 発生しなかったシナリオをシミュレートする(ストレステスト)

ウォークフォワード法(WF)

概要

  • いわゆる一般的なバックテスト(ヒストリカルシミュレーション)のことをいう
  • 過去のマーケットを厳密に再現するのは難しく、完璧な条件で行うことは難しい
  • ヒストリカル経路が「単一シナリオ」に基づいているのが最大の欠点である

メリット

  • 現実世界における獲得リターンを示すことができる
  • 明確なヒストリカルな解釈ができる

デメリット

  • 単一のシナリオに基づくため、オーバーフィットが発生しやすい(同一のシナリオが発生する確率は低い)
  • パーシングが不適切であることによるリケージが、オーバーフィットを発生させる
  • 一時点(基準日)のデータのみに基づいて投資判断を行っているため、データを十分に活用できていない

交差検証法(CV)

概要

  • モデルが特定のストレスシナリオ下でどのような振舞いになるかを検証する(ストレステスト)
  • より一般的には、時系列的な整合性は無視して、学習期間と検証期間を様々に設定して頑健性を検証する

検証イメージ

  • ストレス期以外(後のデータも含む)で学習して、ストレス期で検証することで行う

<例>

  • リーマンショックを含む2008/1/1-2008/12/30のモデルの振舞いを調べたい

<検証方法>

  • 学習期間を2009/1/1-2017/1/1に設定してモデルを訓練する
  • 検証期間を2008/1/1-2008/12/30に設定してモデルを検証する

<ポイント>

  • 学習期間が検証期間の前なので、WFバックテストの考えに基づくと整合的でない
  • 当然、2008年のリターンは正確なものではない
  • ただし、2008年を除いて学習していれば、2008年のモデルの振舞いを見るには問題ない

長所

  1. 単一のシナリオ(ヒストリカル経路)に依存しないバックテストが可能(WF法の問題点を解消)
  2. 全ての投資判断を同じサンプルサイズで行うことができる
  3. アウトオブサンプル検証を最大限拡張することができる

短所

  1. 使用しているヒストリカルデータは一つであり、複数の過去を持っているわけではない
  2. 結果のヒストリカルな解釈が明確でない(累積パフォーマンスが示せない)
  3. データのリーケージ(先読み)が発生しうる(パーシングやエンバーゴで対応)

組合せパーシング交差検証法

概要

  • WF法やCV法の欠点である、単一経路(唯一の過去)しか検証できないという回避する手法

13 人工データのバックテスト

はじめに

  • 根本的な問題として、株式市場の過去データ自体が少ないことがモデルの汎化性の向上を妨げている(仮説)
  • 過去に観測されたデータから、人工の過去データを生成してバックテストを行う
In [ ]:
 

14 バックテストの統計値

一般的な特性

パフォーマンス

ラン

概要

  • 「ラン」とは、リターンがIIDに従わずに同じ符号のリターン系列が連続することをいう
  • 「ラン」は、ダウンサイドリスクの原因となる

リターン集中度

In [ ]:
 
In [ ]:
 

執行コスト

概要

  • バックテストにおける執行コストの見積もりの甘さは、しばしば運用開始後のパフォーマンス悪化の原因となる

コストの種類

  1. ブローカレッジコスト:ブローカーに支払うコスト(取引所手数料を含む)
  2. インパクトコスト:自らの注文で執行価格を不利にした分のコスト
  3. スリッページ:意思決定から執行までのタイムラグコスト

効率性

概要

  • 効率性はリスク調整後の指標で表現される

シャープレシオ

  • 出力されたリターンは、平均μと分散σ2のIIDの正規分布に従うと仮定する
  • 真のμやσを知ることができないことから、新のSRも知ることができない
  • リターンは個別銘柄もポートフォリオもトレンドを持つため、日時リターンはIID仮定に従わない

確率的シャープレシオ

  • リターンがIIDに従わないことによる分布の歪度と尖度の影響を調整したシャープレシオ
  • 基本的にトラックレコードが短いケース、リターンの非対称性が強いときに有用
  • 参考:PerformanceAnalytics::ProbSharpeRatio()
  • SR自体の上昇、トラックレコードが長くなるなどがPSRの上昇要因となる
  • ファットテールはPSRの下落要因となる

収縮シャープレシオ

In [ ]:
 

分類スコア

In [ ]:
 

15 戦略リスクを理解する

16 MLアセットアロケーション

17 構造変化

18 エントロピー特徴量

19 マイクロストラクチャー特徴量

inserted by FC2 system