【要約】正直なバックテストの作り方——カーブフィッティングを排除する DSR・walk-forward 実践 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がバックテストで高収益を得ても、実運用で損失を出す問題に直面している。これはバックテストが統計的なバイアスを含んでいることが原因だ。具体的には以下の要因が挙げられる。
- ・カーブフィッティング:過去のノイズに対してパラメータを過剰に最適化すること。
- ・ルックアヘッドバイアス:未来の情報を参照してしまう実装上のミス。
- ・取引コストの無視:スプレッドや手数料を計算に含めないこと。
// Approach
実装者は、統計的な手法と厳格な検証プロセスを導入することで、この乖離を解決する。以下の3つのステップでバックテストの信頼性を高める。
- ・取引コスト控除:EURUSDの0.00012等の実数値を用い、リターンからコストを差し引く。
- ・Walk-Forward検証:IS(学習)とOOS(検証)の期間をスライドさせ、未知のデータで評価を繰り返す。
- ・Deflated Sharpe Ratio (DSR):試行回数による多重検定の影響を補正し、統計的有意性を算出する。
// Result
これらの手法を適用することで、バックテストの結果を実運用に近い現実的な数値へと修正できる。具体的な成果は以下の通りである。
- ・収益率の適正化:USDJPYの例では、コスト無視時のCAGR 34.2%が、コスト控除後は8.1%へと修正された。
- ・戦略の選別:DSRが0.95未満の戦略を排除することで、偶然の成功を排除し、有意な戦略のみを特定できる。
Senior Engineer Insight
> 金融アルゴリズムの開発において、バックテストの精度はシステムの生存に直結する。単なるパラメータ最適化は、ノイズを拾うだけの危険な行為だ。DSRのような多重検定補正は、実戦投入前の必須プロセスと言える。実装コストは増大するが、実運用での破綻を防ぐための必要経費と考えるべきである。統計的有意性を無視した開発は、技術的な怠慢である。