IS で兆候 → OOS で消失の典型 — p-hacking との戦い

TL;DR

  • 過去データで p<0.05 出た戦略の多くは、未知データで再現しない
  • 原因: IS / OOS 分離の不徹底、grid search による暗黙の multiple testing、cherry-picking
  • 対策: Bonferroni / Benjamini-Hochberg 補正、walk-forward validation、検定数の事前固定
  • 100 random walk pair を検定すれば 5 個は偶然 p<0.05 が出る — それを「edge」と勘違いする構造

Hook

「あなたが見つけた edge は、本当は 16 個試した中の 1 個かもしれない」

retail quant が backtest を回して「年率 +X%、Sharpe 2.0、p<0.05」と出した瞬間、戦略開発の最も危険な瞬間が来ている。p-value が低いのは「edge がある」のではなく「16 回試したから」かもしれない。

Background

統計学における p-hacking (data dredging) は、検定を繰り返して偶然有意に見える結果を選び出す 行為。Bailey, Borwein, Lopez de Prado, Zhu (2014) “Pseudo-Mathematics and Financial Charlatanism” は、quant strategy 研究での p-hacking が業界全体に蔓延していると批判した。

retail でも同じ罠が出る。grid search でパラメータ範囲を試し、最良値を選ぶ。それは本質的に 複数検定 であり、「最良値」が偶然有意である確率は高い。

教科書的事実

100 個の独立な random walk pair に対して相関検定を α = 0.05 で実行すれば、期待値で 5 個 は偶然有意になる。それらは何の関係もない random walk なので、edge ではない。だが「最も有意な相関」を選んで「これは関係がある」と結論したら、それは p-hacking。

Theory — IS / OOS 分離と最適化原則

過学習を避ける最低限の規律は IS (In-Sample) / OOS (Out-of-Sample) 分離

標準的アプローチ

  1. データを 2 分割 (例: 70% IS、30% OOS、もしくは時系列で前半 IS / 後半 OOS)
  2. IS でパラメータ最適化
  3. OOS は一度だけ評価
  4. OOS で性能が IS と同等なら採用、乖離大なら過学習

ここで重要なのは「OOS は一度だけ」。OOS 結果を見て IS を修正する循環に入った瞬間、OOS は IS の延長になり、過学習を再生産する。

Walk-Forward Validation

時系列での自然な拡張。

[----train1----][test1]
        [----train2----][test2]
                [----train3----][test3]

直近 N 期間で訓練、次の M 期間で評価、ずらして繰り返す。各 test 区間の OOS 性能を連結して評価する。regime change への robustness が測れる。

Multiple Testing 補正

複数戦略・複数パラメータを同時に検定する場合:

  • Bonferroni 補正: p < α/k を要求。k=10 で p < 0.005 が必要。conservative
  • Benjamini-Hochberg (FDR): 順位 i で p_(i) ≤ (i/k)·α を満たす最大の i まで有意。large k で実用的

詳細は Lopez de Prado (2018) AFML Ch. 7-8 を参照。

Concrete example

教科書的な思考実験。100 個のランダムなパラメータ組み合わせを backtest し、Sharpe を計算する。α = 0.05 でテストすると:

  • 期待値で 5 個は偶然 p<0.05
  • そのうち最大 Sharpe を選ぶと、確実に有意に見える
  • だがこの「最大 Sharpe」は本質的にノイズ

これを Bonferroni 補正すれば、p < 0.05/100 = 0.0005 を要求。極端に有意な結果以外は棄却される。本物の edge ならこのバーを越える、偽物なら越えない。

Limitation / Counter-argument

1. Bonferroni は過剰に conservative

検定数が多いと、Bonferroni では本物の edge も棄却されかねない。Benjamini-Hochberg が代替だが、こちらは「有意項目内の偽陽性割合」を制御する別の概念。状況に応じた使い分けが要る。

2. retail で完全 OOS 分離は難しい

retail researcher は時間 budget 制約で「同じデータを何度も触る」。OOS を見ない規律を保つのは精神的に困難。Pre-registration (公開仮説) や封筒方式 (結果を物理的に封印) のような工夫が要る。

3. データそのものが汚染されている

OOS 分離をしても、利用するデータセット自体に survivorship bias、look-ahead bias、selection bias がある。OOS を綺麗にしても、データが汚染されていれば結果は信用できない。

4. Walk-forward の re-optimization 頻度

walk-forward を回す時、再最適化の頻度を上げすぎると過学習に近づき、下げすぎると regime に追従できない。経験則は「N 期間で安定的に再最適化」が一般的だが、最適頻度は商品依存。

Practical takeaway

retail が p-hacking を避けるための具体策:

  1. grid search 後の最良値を信用しない: 最良の代わりに「上位 N の中央値」を選ぶ。Lopez de Prado 推奨
  2. 検定数を事前固定: 「10 戦略中ベストを選ぶ」と最初に宣言。後から増やさない
  3. OOS を見る回数を制限: できれば 1 回。物理的に封印するなどの工夫
  4. Walk-forward を回す: 単一の OOS より、複数 test 区間の OOS 平均を見る
  5. 再現実験を組む: backtest 結果を別期間・別商品で再現できるか確認。再現しなければ偽物

ただしこの 5 つを実行しても OOS で残る戦略がライブで効く保証はない。これは bare minimum であって、合格条件ではない。

まとめ

backtest で p<0.05 が出ても、それが「16 個試した 1 個」でないかを疑う規律が retail quant を救う。検定数を意識し、Bonferroni / BH で補正し、walk-forward で時系列 robust を測り、OOS は 1 回しか触らない。これが基本姿勢。

「過去データで有意」を信じて live に入れた瞬間、その edge が偶然だったかどうかが残酷に検証される。それを backtest 段階で代替する作業が、本記事のテーマ。

参考文献

  • Bailey, D.H., Borwein, J., Lopez de Prado, M., Zhu, Q.J. (2014). Pseudo-Mathematics and Financial Charlatanism. Notices of the AMS, 61(5), 458-471.
  • Lopez de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. Ch. 7, 8.
  • Benjamini, Y., Hochberg, Y. (1995). Controlling the False Discovery Rate. Journal of the Royal Statistical Society B, 57(1), 289-300.
  • Harvey, C.R., Liu, Y. (2014). Backtesting. Journal of Portfolio Management, 42(1), 13-28.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies. Wiley.

コメントする