検証コードのバグ2件で結論が完全に逆転した話 ── EA自作で見落としがちなチェックポイント
「タイトなストップほど良い成績が出る」──ぼくが自作EAの検証で長らく信じていた傾向です。数千構成のバックテストで、ストップを狭くすると勝率も期待値も上がって見えていました。それが、たった1行の検証コードのバグを直した瞬間、傾向が真逆になりました。
結論から言うと、「タイトなストップほど良い」は偽でした。バグ修正後は「広めのストップの方が期待値が上がる」に完全逆転。しかも、このバグは1件ではなく2件同時に走っていて、両方直すまで正しい傾向は見えなかった。EA自作で数百時間の検証時間を無駄にする前に、この2つのバグを知っておくと絶対に得します。
申し遅れました、lulu.fxと申します。GOLD(XAUUSD)中心の現役裁量トレーダーで、いまはプロップファームの(A社)に挑戦中です。
この半年でAIと一緒に累計47,000構成以上のEAを検証してきましたが、途中で見つけたこの検証バグ2件は、全プロジェクトの結論を再確認する必要があるレベルの重大なものでした。
この記事では、①どんなバグだったか、②なぜそれが「タイトなストップほど良い」という偽の傾向を作ったか、③自作EAで同じ罠を避ける3つのチェックポイントを、実際のt値・数字とセットで書きます。EA自作している方、これから始める方、両方に役立つ内容です。
?目次
▼無料公開
▼続きを読むで公開
その検証バグが見つかるまで
きっかけは、ある新しいEAを検証していた時でした。バックテストでt値+112という、常識ではあり得ない値が出たんです。
t値は統計的な有意性を表す指標で、+3を超えれば十分有意、+10を超えたら疑うレベル。+112は「絶対どこかバグってる」水準です。
「異常に良い数字」は喜ぶより疑う
普通のEA検証者なら、この数字を見たら「勝てるEA見つけた!」と喜ぶかもしれません。
でも、統計的な感覚が育っていると、逆に警戒モードに入ります。「数字が良すぎる」=「検証コードのどこかにバグがある」が、この世界の経験則だからです。
実際に検証コードを1行ずつ辿ってみると、2つのバグが同時に走っていることが判明しました。しかも、両方のバグが「同じ方向に成績を盛る」という、悪い意味で連動する組み合わせでした。
数千時間の検証結果が、瞬時に疑わしくなる怖さ
バグが見つかった瞬間、頭に浮かんだのは「これまでの数千時間の検証結果、全部やり直しか?」という恐怖でした。
過去の全プロジェクト(EURUSD総力戦・GOLD検証・分散ブック等)で使っていた同じ検証ハーネスに、このバグが乗っていたからです。
結果的には全プロジェクトを再確認して、幸いにも大半の否定的結論はそのまま有効(バグは成績を「上げる」方向に働くので、否定的結論が肯定に転じることはない)と判明しましたが、この瞬間の冷や汗は忘れられません。
バグ発見で「タイトなストップほど良い」が偽と判明した瞬間
バグを直した後、同じEAで再検証すると、成績の傾向が完全に逆転していました。特に衝撃だったのが、ストップ幅の系統的影響です。
修正前の傾向 (偽)
- ストップ1.0×ATR: 期待値+0.09、勝率68%
- ストップ1.5×ATR: 期待値+0.06、勝率61%
- ストップ2.0×ATR: 期待値+0.03、勝率55%
- ストップ3.0×ATR: 期待値-0.01、勝率48%
- ストップ4.0×ATR: 期待値-0.04、勝率44%
この結果を見て「タイトなストップほど良い」と結論していました。実際は完全に間違いでした。
修正後の傾向 (真)
- ストップ1.0×ATR: 期待値-0.058、勝率46%
- ストップ1.5×ATR: 期待値-0.041、勝率48%
- ストップ2.0×ATR: 期待値-0.028、勝率50%
- ストップ3.0×ATR: 期待値-0.019、勝率52%
- ストップ4.0×ATR: 期待値-0.015、勝率54%
完全に逆。「広めのストップの方が期待値が上がる」でした。修正前の判断で本番運用に入っていたら、実弾で確実に負けていました。
「タイトなストップ」信仰は業界共通の罠
これは、市販のEA商材にも通じる話です。「タイトなストップで勝率を上げる」型のEAは、大半がこの種のバグを抱えている可能性が高い。
バックテストではストップを狭くすればするほど、バグの影響で成績が良く見えるからです。実運用で崩壊するEAの典型パターンの1つが、ここに直結しています。
ここから先は、2つのバグの具体的な内容(コード例つき)、影響を受けた全プロジェクトの再確認結果、そして自作EAで同じ罠を避ける3つのチェックポイントまで書きます。
EA自作している方、これから始める方、両方に役立つ内容です。
ここから先(続きを読む)で公開:
- バグ①: 同一バー内で入口と出口を両方約定させていた(t値+112の偽陽性の正体)
- バグ②: エントリー足自身のストップを判定していなかった(タイトストップ信仰の元凶)
- 影響を受けた全プロジェクトの再確認リストと結論の変化
- 自作EAで同じ罠を避ける3つのチェックポイント
- 「異常に良い数字」を見た瞬間にやる3つの検算手順