この記事の要点(TL;DR)
- バックテストの最大の敵は相場ではなく、自分の願望。それを抑える7つの規律を共有します。
- 核心は「綺麗に勝つほど過剰最適化を疑う」「陽性結果ほど批判監査する」。
- 専門ツールがなくても応用可能。SNSや商材の華やかな成績を見るときのチェックリストとして使えます。
この研究で一番時間をかけたのは、勝てる戦略を探すことではありませんでした。「勝ったように見える結果」が本物かを、ひたすら疑う作業です。AIエージェントに検証を任せられる時代だからこそ、人間の仕事は判断の規律に移りました。以下は、そのまま誰でも使える7つのルールです。
① 一度に動かす変数は、1つだけ
損切り幅、利確、エントリー条件、フィルター——複数を同時に変えて「一番良かった組み合わせ」を選ぶと、それは検証ではなく事後最適化です。変数を1つずつ動かせば、何がリターンを生んでいるのかを正しく切り分けられます。良くなった理由が分からない改善は、改善ではありません。
② 事後ベスト選択を、最初から禁じる
「複数の設定を試して、結果が一番良いものを採用」——これは過剰最適化の温床です。本研究の検定(PBO=0.44)が示したのは、単一設定を最適化しても将来の順位はコイン投げと変わらない、という事実でした。だから最初から複数設定の平均(アンサンブル)を既定にします。
③ ルックアヘッドを、物理的に排除する
その時点で知り得ない未来の情報が、こっそり計算に紛れ込むのがルックアヘッド・バイアス。対策はシンプルで、シグナルは確定済みのバーで判定し、約定は次のバーに置く。テストとして意図的に未来をリークさせると、Sharpeが異常な高値(例:4.28)に跳ねます。跳ねたら、どこかで未来を見ています。
④ 勝率ではなく、期待値で測る
勝率90%でも、負けトレード1回で利益が吹き飛べば期待値はマイナス。評価軸は1トレードあたりの平均損益・損益分布・最大ドローダウン・取引回数に置きます。勝率は心地よい数字ですが、口座を増やすのは期待値です。
⑤ gross と net を、必ず分けて見る
コスト前(gross)で勝てても、取引コストを引いた後(net)で負ける戦略は山ほどあります。本研究では、短期戦略の多くがgross均衡 → net 負けでした。コストの寄与を分離して初めて、「コストの問題」か「ロジックの問題」かが分かります。
⑥ 単一レジームを疑い、複数期間・複数市場で割り引く
これが最も重要な規律です。本研究の“勝ち”は、すべて2022–24の円安という単一レジームに乗っていただけでした。良い結果が出たら、必ず——複数の期間(インサンプル/アウトオブサンプル)、複数の市場(ブレッドス)、特定要因(例:JPY)を除外した場合、で割り引く。一つでも崩れたら、それは蜃気楼です。
「陽性結果ほど疑う」を仕組みにする。 本研究では、良い数値が出るたびに別のAIエージェントに「この結果を論破せよ」と批判監査させました。人間は自分の発見を可愛がってしまうので、否定する役を外部化したのです。多くの“発見”は、ここで正体(単一局面依存)を暴かれて消えました。
⑦ 約定可能な前提か、最後に問う
バックテストが綺麗でも、その建玉が現実に約定できなければ意味がありません。例えば「シグナルは月次更新なのにレバレッジは日次で連続調整」のような前提は、実行不可能ゆえに結果を歪めます(実際、これを各スキームの更新頻度に揃えるとアーティファクトが消えました)。その注文は本当に出せるのか——最後に必ず問います。
持ち帰り:これはチェックリストになる
あなたが自分でバックテストを書かなくても、この7つは武器になります。SNSや投資商材で華やかな成績を見たとき、こう問うてください——「何パターン試した中の一番?」「その期間、たまたま追い風だったのでは?」「コストは引いてある?」「その注文、本当に出せた?」。多くの“必勝法”は、この4問のどれかで崩れます。自分を騙さないことが、長期で生き残る最大のエッジです。
よくある質問(FAQ)
バックテストで最も陥りやすい間違いは?
多くのパラメータを試して「一番良かったもの」を選ぶ事後最適化です。試すほど運で良い数値が出るため、選んだ瞬間に成績は実際より良く見えます。変数は一度に1つ、最初からアンサンブルを既定に。
ルックアヘッド・バイアスとは?
その時点で知り得ない未来の情報を使う誤りです。対策はシグナルを確定済みバーで判定し約定を次バーに置くこと。意図的にリークさせるとSharpeが異常値に跳ねるので検出できます。
良い結果が出たら、まず何を疑う?
「その勝ちは単一の相場局面に乗っているだけでは」をまず疑います。本研究の勝ちはすべて円安という一つのレジーム依存でした。複数期間・複数市場・特定要因の除外で割り引きます。