【要約】CFD自動売買のトレンドバイアス問題:IS分割PFテストで見抜く過学習 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
CFD自動売買の開発者が、バックテストの成績と実運用の乖離という課題に直面している。特に、テスト期間中に特定のトレンドが継続した場合、以下の問題が発生する。
- ・「トレンドライダー」と呼ばれる、単に相場に乗っただけの戦略が優秀に見える。
- ・ロング比率が極端に高い戦略が、過学習として検知されにくい。
- ・XAUUSDのIS期間が+42.6%上昇した際、単純なロング戦略が誤って高評価を受ける。
// Approach
開発者は、独自フレームワーク
auto_bt_runner_cfd.py に2つの検知手法を実装した。相場環境の特性を考慮し、以下のロジックを導入している。- ・E2 (trend_bias_suspect): ロング比率が80%超かつトレンド強度が20%超の場合に警告を出す。
- ・E1 (is_first_half_pf): IS期間を前半と後半に分割し、前半のPFが1.0以上であることを要求する。
- ・E2は人間によるレビュー用、E1は自動排除用の基準として使い分けている。
// Result
この実装により、開発者は相場環境に依存した過学習戦略を多角的に排除できるようになった。具体的な成果は以下の通りである。
- ・E2のフラグにより、人間が注意深くレビューすべき戦略を特定できる。
- ・E1の合格基準により、横ばい相場でも機能しない戦略を自動で不合格にできる。
- ・「成績の背景にある相場環境」を定量的に分解して評価可能になった。
Senior Engineer Insight
> 実戦における「偽の優良戦略」への対策として、非常に理にかなった設計である。特に、警告(E2)と自動排除(E1)を分離した点が、運用の柔軟性を担保している。一方で、
SYMBOL_IS_TREND のようなトレンド強度の定数管理は、手動介入が必要である。銘柄数が増えた場合、この管理コストがスケーラビリティのボトルネックになる。自動化には、トレンド強度自体を動的に算出する仕組みが望ましい。