トレードのアイデアを実装前にどう評価するか — 86本の仮説を検証した手順

14 8月 2026, 01:23
Yuki Mizuno
0
3

私たちはUSDJPYの研究の過程で、約20年分のティックデータに対して86本のトレード仮説を検証してきました。約95%は棄却され、最終的に本番システムへ到達したのは4本です。

この棄却率は、ときに「告白」のように読まれます。私たちは逆に読んでいます。棄却率こそが、このパイプラインの存在理由です。入ってきたものの大半を承認してしまう評価プロセスは、実のところ何も評価していません。

本記事では、アイデアが「実弾の注文を任せられるコード」になる前に何が起きるのかを説明します。特別なインフラは何も要りません。大半は規律です — 後から交渉できないくらい早い段階で、書き下ろしておく規律です。

アイデアは「ルール」ではなく「言葉」でやって来る

トレード本やコミュニティの投稿は、計算しようとするまでは精密に感じられる言葉で手法を記述しています。「トレンドが明確に確立したらエントリーする」。どの時間足で確立したら? 何で測って? いつから?

仮想的ですが典型的な例を考えます。「保ち合いの期間の後に」エントリーせよ、というブレイクアウト手法です。この文を検証するには、保ち合いに機械判定可能な定義が要ります — レンジ幅、継続時間、参照ウィンドウ。その値を選んだ瞬間、あなたは気づきます。この手法はひとつのアイデアだったことなど一度もなく、何百ものバリエーションの一族だったのだと。そして著者は、その中からトレードごとに目で選んでいたのだと。

機械的な翻訳は、これを白日の下に引きずり出します。すべての条件は、その時点で存在していたデータから、人間の介在なしに計算可能でなければなりません。すると2つのことが起こりがちです。一部のアイデアは翻訳不能だと判明します。機能していたものが何かあったとしても、それは著者の裁量の中に住んでいて、裁量を取り除くと死んでしまうのです。別のアイデアはきれいに翻訳でき、20年分のティックの上を走り、何も示しません。

どちらの結果も有用です。書籍、コミュニティの言い伝え、私たち自身の観察から集めた86本の仮説を機械化したとき、有名な公刊手法のいくつかを含む大半は、この方法で検証すると測定可能なエッジを示せませんでした。この経験は、トレード文献の読み方を変えました。問いは決して「もっともらしく聞こえるか」ではありません。「ルールとして書くと正確には何になるのか、そしてそのルールは見たことのないデータを生き延びるのか」です。

パイプラインの残りの部分は、この問いを正直に保つために存在します。概観は次の通りです。

最初の実行の前に「棄却とは何か」を決める

バックテストで最も危険な瞬間は、最初のテスト実行ではありません。2回目 — 最初の結果を見た後に設計するテストです。

結果が画面に出てしまうと、人間は交渉を始めます。負けた年は「例外」として説明されます。評価指標は期待値から勝率へ滑っていきます。今回はたまたま勝率のほうが見栄えが良いからです。日付範囲が6か月ずれます。どの調整も、その瞬間にはインチキだとは感じられません。しかし合わさると、あらゆるアイデアがいずれ「合格」することが保証されます。

私たちの答えは事前登録です。最初の実行の前に、仮説、データと期間、評価指標、そして棄却を意味する正確な閾値を書き下ろします。文書には日付が入ります。結果が届いたら、それはこのファイルに照らして判定されます — エクイティカーブが私たちにどんな気分を抱かせるかではなく。

事前登録は、ほとんどのバックテスターが飛ばしている問いにも正直な答えを強制します。「何通り試したのか?」です。200通りのパラメータ組み合わせを探索すれば、純粋な偶然だけで魅力的に見えるものがいくつか出てきます。単発のテスト用に設定された生存基準は、200セルの探索にはあまりに低すぎます。合格基準は、探索した空間の大きさを反映していなければなりません。

受け入れるのに時間がかかった帰結がひとつあります。「この探索空間にエッジは見つからなかった」は正当な最終結果だ、ということです。空間は定義され、固定条件の下で調べられ、閉じられました。正しく記録されれば、この一文には長期的な価値があります。将来の研究に、掘らなくてよい場所を教えてくれるからです。

ルックアヘッドバイアスを捕まえる順序ルール

たったひとつの制約が、静かなエラーの一族を丸ごと消し去ります。特徴量はそれを使うシグナルより前に完全に観測可能でなければならず、シグナルは約定より前でなければならない、という制約です。

特徴量の時刻 ≤ シグナルの時刻 ≤ 約定の時刻。

言葉にすると、わざわざ書き留めるまでもない自明なルールに聞こえます。しかしコードの中では、この制約は絶えず破られています。それもほとんどの場合、故意にではなく。古典的なパターン — ここでは一般例ですが、ストラテジーテスターの設定を監査したことがある人にはお馴染みのもの — には、まだ形成中のバーの終値をルールの中で読んでしまう、終わっていないセッションから日次レベルを導出してしまう、自分の履歴を再計算して過去を「当時よりきれいに」見せるインジケータ、などがあります。

ルックアヘッドバイアスが危険なのは、間違っているだけでなく魅力的な結果を生むからです。うっかり5分先が見えてしまっている戦略のエクイティカーブは美しく、出力のどこにも警告は出ません。

対策は英雄的なものではなく、手続き的なものです。順序制約を、自分の記憶力を信じる事柄ではなく、テストプロセスの明示的なチェックにすること。私たちが検証するすべての仮説は、結果がカウントされる前にこの制約を満たさなければなりません。

安上がりな診断法もあります。結果が不自然なほどきれいに見えたら、すべてのシグナルを1バー遅らせて再実行してください。本物のエッジは多少劣化します。エントリーが少し遅れるからです。情報漏洩の上に建っていたエッジは、たいてい完全に崩壊します — その戦略は何かを予測していたのではなく、見てはいけない答案を読んでいただけだからです。この遅延テストのコストは数分です。良すぎる結果に本格的な時間を注ぐ前に、走らせる価値があります。

時間で分割し、ひとつの期間を封印する

ランダムな学習・検証分割は機械学習チュートリアルの定番ですが、トレード研究には不向きです。市場にはレジームがあります。ボラティリティは群れます。バーをランダムなバケツへシャッフルすれば、各時代の性格が他のすべての時代へ漏れ出し、アウトオブサンプルの結果は意味を失います。

私たちは年代順に、そして年代順にのみ分割します。古いデータは発見に、後の区間は検証に、そして直近の区間は最後の昇格判断まで封印された最終ホールドアウトです。ホールドアウトを開くのは一度きりです。

この規律には高くつく例外ケースがあります。探索中に一度でも見てしまった期間は — 何気なくでも、チャートウィンドウでちらりとでも — もはやホールドアウトの資格がありません。正直な対応は未見の期間を割り当て直すことで、これはデータを消費しますし、率直に言って面倒です。それでも私たちがこのコストを受け入れたのは、代替案のほうが悪いからです。研究者がすでに頭に入れてしまった期間に貼られた「アウトオブサンプル」のラベルは、フォルダ名が何であれ、自己欺瞞です。

行ではなく、イベントを数える

3週間続くトレンドは、M5のバーを1,000本埋められます。それでもイベントとしてはひとつです。

同じ市場エピソードから派生した行は独立な証拠ではなく、独立であるかのように数えれば、信頼区間はすべてが確実に見えるまで縮んでいきます。これはバックテストがつく嘘の中でも静かな部類です。取引数は2,000と言っている。しかしその背後にある本当に独立な状況の数は、数百かもしれません。

だから私たちはサンプルサイズをイベントで数え、信頼区間を推定するときも行ではなくイベント単位でリサンプリングします。直接の効果はがっかりするものです — 正直なデータセットは見かけより小さく、結論のエラーバーは広がります。しかし長期的な効果こそが本題です。市場がテンポを変えても蒸発しない証拠の上に、判断が載るようになります。

棄却された仮説こそ、最も再利用される成果物

86本の仮説のうち、80本以上が棄却されました。これを消してしまっていたら、大きな間違いだったでしょう。

各棄却は、採用と同じ丁寧さで記録されます。何を検証したか、どんな条件で、結果はどうだったか、なぜ棄却したか、そして — 元が取れるのはこの部分です — このアイデアがもう一度検討に値するには何が変わる必要があるか。この再訪条件はレジストリに保存され、新しい情報が届いたときに照合されます。

この記録作業には2つの実務的な理由があります。棄却されたアイデアは戻ってきます。1年後、同じメカニズムが別の語彙をまとって再登場し、記録がなければ同じ授業料を二度払うことになります。そして「エッジがどこに無いか」の地図は、将来のすべての探索を狭めてくれます。あるアプローチの一族がまるごと、20年のデータで何も示さなかったと知っていること。それは悲しい物語ではなく、カバレッジです。

MetaTrader 5で実行できる最小構成

ここまでの内容に、独自ツールは何ひとつ要りません。標準のMetaTrader 5の構成要素だけで動く、このパイプラインの実用版は次のようになります。

  • 長期のリアルティックデータセットをカスタムシンボルとして構築し、その取得元・期間・品質を記録する。コスト想定を固定し、書き留める。(私たちの公表USDJPY結果の場合: リアルティックモデリング・履歴品質98%・総取引コスト約0.7pipsの想定)
  • 新しいアイデアで最初のストラテジーテスター実行をする前に、仮説・指標・棄却閾値を記した日付入りのテキストファイルを作る。テストが始まったら、そのファイルは読み取り専用として扱う。
  • 比較するすべてのバリエーションでテスト条件を同一に保つ。スプレッドや日付範囲が異なる比較は、比較ではない。
  • 履歴を年代順に分割し、最後まで開かないと自分に約束する最終期間を選ぶ。
  • すべてのテスターレポートを保存する — 棄却されたものこそ最優先で。

最初の実行前にファイルを書く習慣は、私たちが最も強く擁護したいものです。これはバックテストを「自分自身との議論」から「測定」に変えてくれます。

何が生き残ったか

この研究プログラム全体で、シミュレーション回数は20万回を超えました。パイプライン全体を生き残った4本の仮説には共通の性質があり、それ自体がやがて採用要件になりました。エッジが、バックテストのカーブではなく、市場構造 — 市場で、誰が、いつ、何をしているのか — で説明できることです。説明できない結果は、持っていない結果として扱いました。

Origin-U Projectは、日本を拠点とする独立系のクオンツFXリサーチプロジェクトです。本記事で解説した考え方は、Origin-U Projectが開発した商用USDJPYポートフォリオEA「BUSHIDO」に実装されています。

この記事からひとつだけ習慣を持ち帰るなら、これにしてください。次のバックテストの前に、「棄却とは何か」を書き下ろすこと — そして、そのファイルに日付を入れることです。

Origin-U リサーチノート — 全10回 第8回

← 前の記事: バックテストとフォワードテストの違い — 同じEAで数字が変わる4つの理由  |  次の記事: 低ドローダウンのトレーディングシステム設計 — ドローダウンは「結果」ではなく「入力」である

English version: How We Evaluate Trading Ideas Before Implementation

シリーズ全10回

  1. USDJPY向けマルチストラテジー・ポートフォリオEAの作り方 — 86本の仮説検証が教えてくれたこと
  2. アルゴリズムトレードで分散が重要になる本当の理由
  3. 利益よりも先にリスク管理 — トレーディングシステムは「負ける側」から設計する
  4. 私たちがマーチンゲールとグリッドを使わないと決めた理由 — 検証の記録
  5. モンテカルロ・シミュレーションでトレーディングシステムを評価する
  6. 堅牢なFX戦略の条件 — チャートではなく、プロセスを見る
  7. バックテストとフォワードテストの違い — 同じEAで数字が変わる4つの理由
  8. トレードのアイデアを実装前にどう評価するか — 86本の仮説を検証した手順
  9. 低ドローダウンのトレーディングシステム設計 — ドローダウンは「結果」ではなく「入力」である
  10. 長期USDJPYリサーチから学んだこと — 20年分のティックデータが教えてくれたもの