
バックテスト+7.72%が-2.65%に崩壊|自動売買の検証で学んだ3つの罠
※本記事にはアフィリエイト広告(プロモーション)が含まれています。
自動売買ボットの改善で一番怖いのは、「バックテストでは勝てるのに本番では勝てない」ことです。私はこれを痛烈に体験しました。
+7.72%の構成が、-2.65%になった日
私のBTCボットのある構成は、73日間のウォークフォワード・バックテスト(手数料込み)で +7.72% という成績を出していました。プロフィットファクター1.16、勝率68%。悪くない数字です。
ところが後日、検証用のデータ期間をわずか1.5日スライドさせて同じテストを回したところ、結果は -2.65%。プラスとマイナスが入れ替わりました。
戦略を変えたわけではありません。同じ戦略、同じパラメータで、データの切り取り方が少し違うだけでこうなったのです。
罠1: バックテストの「絶対値」を信じる
この経験から得た最大の教訓はこれです。
バックテストの絶対PnL(+7.72%など)は信用できない。使っていいのは「同一データ・同一条件での相対比較」だけ。
つまり「この構成は+7%稼げる」ではなく「同じデータで比べたとき、構成Aは構成Bより5pt良い」という使い方だけが信頼できます。改善を判定するときは、必ず同じ期間・同じ分割・同じ手数料設定で新旧を並べて比較します。
ちなみに、複数期間で安定してプラスの構成でも、現実的な期待値は月+2%程度と見積もっています。「月利20%」のような数字がいかに非現実的か、自分で検証すると骨身に沁みます。
罠2: 手数料を入れ忘れる
取引回数の多いボットでは、手数料が成績を大きく削ります。1日4回取引するボットなら、往復手数料0.1%として月に12%ものコストです。手数料抜きのバックテストで「勝てる」と判断するのは、ほぼ確実に本番で裏切られます。
罠3: 未来のデータで過去を最適化する(ルックアヘッド)
全期間のデータでパラメータを最適化し、同じ期間でテストすると、成績は当然よく見えます。これは「答えを見てからテストを解く」のと同じです。
対策はウォークフォワード方式: データを時系列に分割し、「過去のデータで学習 → その直後の未見データで評価」を繰り返します。手間はかかりますが、これをやらない検証は検証と呼べない、というのが私の結論です。
実運用者としての検証チェックリスト
- 手数料・スリッページを含めているか
- ウォークフォワード(未見データでの評価)になっているか
- 改善判定は「同一データでの相対比較」でやっているか
- データ期間をずらしても結論が変わらないか(頑健性)
- 本番と同じコード経路でテストしているか(休眠バグの失敗談参照)
まとめ
バックテストは「未来の利益の予告」ではなく、「戦略同士を公平に比べるための道具」です。この違いを理解してから、私のボット改善はようやく前に進むようになりました。
これから自動売買を始める方は、ボット入門の記事もあわせてどうぞ。