あなたは50のパラメータ組み合わせをテストしました。85%の勝率を持つものを見つけました。徹底的にバックテストしました。自信を持ちました。
2ヶ月後、口座は30%減少しています。何が起こったのでしょうか?
エッジを見つけたのではありません。過剰適合を見つけたのです。それを認識し、避ける方法を説明します。
過剰適合とは何か?
過剰適合とは、システムが市場構造ではなく過去のノイズに調整されていることを意味します。繰り返される本物の行動ではなく、繰り返されない過去のパターンを捉えています。
このように考えてください:十分なパラメータを調整すれば、あらゆる過去の期間を完璧にトレードできるシステムを作成できます。しかし、そのシステムは予測しているのではなく、記憶しているのです。
危険性: 過剰適合されたシステムは優れたバックテスト結果とひどいライブ結果を示します。過去のパフォーマンスと将来のパフォーマンスのギャップは、口座が死ぬ場所です。
過剰適合の兆候
パラメータが多すぎる: すべてのパラメータは自由度です。自由度が多い = 誤ってノイズに適合する方法が多い。システムに10以上の調整可能なパラメータがある場合、ほぼ確実に過剰適合しています。
疑わしいほど良い結果: 本物のエッジは控えめです。55-65%の勝率と1.2-1.5のリスクリワード比が現実的です。バックテストで80%以上の勝率と3:1のR:Rは通常、カーブフィッティングを示しています。
狭い最適範囲: システムがRSIがちょうど23(22や24ではなく)のときにのみ機能する場合、それはノイズへの適合です。堅牢なシステムはパラメータ範囲全体で機能します。
パフォーマンスの崖: 小さなパラメータ変更が大きなパフォーマンス低下を引き起こします。堅牢なシステムはパラメータが変化しても緩やかに劣化します。
期間固有のパフォーマンス: システムは2021-2022年には素晴らしく機能しましたが、2023年には失敗します。変化した特定の市場レジームに適合していた可能性があります。
最適化の罠
トレーダーが過剰適合に陥る方法:
- 合理的なロジックで基本的なシステムを構築する
- バックテスト - 結果は平凡
- 結果を改善するためにパラメータを調整
- 素晴らしく見える組み合わせを見つける
- さらに改善するためにさらにパラメータを調整
- 結果は今や素晴らしく見える
- ライブでトレード - すべてが崩壊する
間違いはステップ3-5で起こります。各最適化イテレーションはカーブフィッティングを追加します。最終的に、過去を完璧に説明するが将来については何も予測しないシステムを作成してしまいます。
堅牢な最適化の原則
1. パラメータを最小化する
すべてのパラメータには正当化が必要です。「バックテストを改善したから追加した」は正当化ではありません。「特定の市場行動を捉えるから追加した」は正当化です。
意味のある2パラメータシステムは、意味のない10パラメータシステムを上回ります - 重要なライブトレードにおいて。
2. ポイントではなくパラメータ範囲を使用する
RSI = 23に最適化しないでください。範囲をテストします:RSI 20-30でシステムは機能しますか?そうでなければ、特定の値はノイズです。
堅牢なシステムは合理的なパラメータ範囲全体で一貫した結果を示します。脆弱なシステムは特定の値でパフォーマンスのスパイクを示します。
3. アウトオブサンプルでテストする
すべてのデータで最適化しないでください。分割します:
- インサンプル(60%):最適化に使用
- アウトオブサンプル(40%):最適化されたパラメータをここでテスト
アウトオブサンプルの結果がインサンプルより劇的に悪い場合、過剰適合しています。ギャップは捉えたノイズの量を示します。
4. ウォークフォワード分析
さらに良い:ローリングアウトオブサンプルテスト。
- 1年目で最適化、2年目でテスト
- 1-2年目で最適化、3年目でテスト
- 1-3年目で最適化、4年目でテスト
これは、過去の最適化を将来の市場に常に適用している実際のトレードをシミュレートします。
シンプルさの原則
同様の結果を持つ2つのシステムがある場合、よりシンプルなものを選択してください。常に。
複雑さは洗練されているように感じます。シンプルさが実際には洗練されています - 本質的な要素を特定し、ノイズを無視したことを意味します。
例:
複雑なシステム:13期間RSIが47を上回り、8日EMAが21日EMAを上回り、出来高が17日平均の1.3倍で、金曜日の午後でないときに買う。
シンプルなシステム:価格が平均以上の出来高で20日高値を上抜けたときに買う。
シンプルなシステムはおそらくバックテストでは悪いパフォーマンスを示します。おそらくライブトレードではより良いパフォーマンスを示します。複雑なシステムは壊れる方法がより多くあります。
最適化が有効な場合
最適化は本質的に悪いものではありません。不注意に適用されたときに悪くなります。有効な最適化:
市場特性に適応する: 異なる市場は異なるボラティリティを持っています。特定の商品に対するATR倍率の調整はカーブフィッティングではありません - キャリブレーションです。
論理的な境界に従う: 50期間移動平均は53期間より「良い」わけではありません - 本質的に同じです。有効な最適化は論理的な範囲内にとどまります。
堅牢性を維持する: 最適化されたシステムはアウトオブサンプル期間、異なるが類似した商品、さまざまな市場状況で機能する必要があります。
ゆっくりと変更する: 毎月の再最適化は過剰適合です。年次(または市場構造が明らかに変化したとき)の再最適化はメンテナンスです。
回復プロトコル
システムが過剰適合していると疑われる場合:
- ライブトレードを停止: 診断中に損失を複利させない
- パラメータを監査: 各パラメータを市場ロジックで正当化できますか?
- 堅牢性をテスト: システムをアウトオブサンプルデータ、異なる商品、異なる期間で実行
- 簡素化: パラメータを1つずつ削除。パフォーマンスは実際に低下しますか、それともバックテスト結果だけですか?
- ペーパートレード: 再び資本をリスクにさらす前に、簡素化されたシステムをフォワードテスト
多くの場合、過剰適合パラメータを削除すると、バックテスト結果は低下してもライブ結果は改善されます。それがポイントです。
結論
システム開発の目標は完璧なバックテストではありません。堅牢なフォワードパフォーマンスです。
追加するすべてのパラメータは過剰適合の潜在的な原因です。すべての最適化パスはノイズを捉えるリスクがあります。過去のデータにのみ表示されるすべての「改善」は将来の結果を悪化させる可能性があります。
シンプルに構築する。アウトオブサンプルでテストする。条件全体での堅牢性を求める。バックテストは悪く見えることを受け入れる - そしてライブ結果はより良く見えます。
本物の市場構造 - サイクルフェーズ、出来高行動、流動性ダイナミクス - に基づいて構築されたシステムは、自然に過剰適合に抵抗します。それらは過去にたまたま動いたときではなく、市場がなぜ動くかに基づいています。その理論的基盤が、堅牢なシステムとカーブフィットの偶然を分けるものです。
OmniDeckのシステムは、最適化されたパラメータではなく、市場構造(サイクルフェーズ、出来高レジーム、流動性ダイナミクス)に基づいて構築されています。シグナルが過去にたまたま動いたときではなく、市場がなぜ動くかに基づいているとき、レジーム変化に耐える堅牢性を構築できます。
構造ベースのシステムを見る →オーディエンスをお持ちですか?最大30%の継続報酬を獲得
アフィリエイトになる →コミュニティのトレーダーとこの記事について議論しましょう
Discordに参加 →