バックテスト+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: 未来のデータで過去を最適化する(ルックアヘッド)

全期間のデータでパラメータを最適化し、同じ期間でテストすると、成績は当然よく見えます。これは「答えを見てからテストを解く」のと同じです。

対策はウォークフォワード方式: データを時系列に分割し、「過去のデータで学習 → その直後の未見データで評価」を繰り返します。手間はかかりますが、これをやらない検証は検証と呼べない、というのが私の結論です。

実運用者としての検証チェックリスト

  • 手数料・スリッページを含めているか
  • ウォークフォワード(未見データでの評価)になっているか
  • 改善判定は「同一データでの相対比較」でやっているか
  • データ期間をずらしても結論が変わらないか(頑健性)
  • 本番と同じコード経路でテストしているか(休眠バグの失敗談参照)

まとめ

バックテストは「未来の利益の予告」ではなく、「戦略同士を公平に比べるための道具」です。この違いを理解してから、私のボット改善はようやく前に進むようになりました。

これから自動売買を始める方は、ボット入門の記事もあわせてどうぞ。