時計を尊重する交差検証
交差検証はデータを再利用します。データを分割(フォールド)に切り、1つでテストし、残りで学習します。独立な行ならこれで済みますが、金融のラベルは時間的に重なります。行 のラベルが から までのリターンなら、その窓は です。行 から をカバーするテスト分割のラベルは をカバーします。窓がこの範囲に触れる学習行、つまり の行は、テストラベルとリターンを共有します。そうした行を残すと、モデルは答えの一部を見てしまいます。
パージは重なる学習行を除きます。エンバーゴはテスト分割の後ろからさらに 行を除きます。リターンには自己相関があり、ボラティリティは集中するので、テストブロックの直後の行にもそのブロックの情報が残っているためです。ウォークフォワードでは学習は常にテストの前だけなので、同じ考えは間隔になります。行 までで学習すれば、間隔は (に を加えたもの)です。scikit-learnのTimeSeriesSplitにはこのための gap 引数があります。月次株式パネルで のとき、ウォークフォワードの情報係数はエンバーゴなしで 、 か月のエンバーゴで です。ラベルの重なりが短いので変化はわずかですが、やってみなければ分かりません。
- パージしてからエンバーゴ:ラベルがテストのラベルに触れる学習行を除き、さらにテスト後の数行を除く。
- ウォークフォワードの間隔:テストの少なくとも 行前までの行だけで学習する。
- 変化が小さくても行う:きれいな評価は数行を失うだけだが、リークは戦略を失わせうる。
ラボ:採点される内容
- 分割の前でパージされる行10点
- 分割の後でパージされる行15点
- 残る学習データの大きさ15点
- 間隔付きウォークフォワードの分割10点
- どの行がパージされるか10点
- パージ付き分割10点
- 用語を結び付ける15点
- なぜエンバーゴも必要か15点