観察と仮説の違い
AさんとBさんは、同じ1つの観察から出発しました。 「ドル円は東京時間の高値を、ロンドン勢が来ると抜けて伸びやすい」。 チャートを見ていれば、多くの人が一度は感じることです。しかし、この文章のままでは検証できません。
「東京時間」は何時から何時か。「抜けた」はヒゲで判定するのか、終値で判定するのか。「ロンドン勢が来る」は何時か。「伸びやすい」は何pipsをいつまでに動くことか。 どれも決まっていないので、見る人は都合のよいチャートを選び、都合のよい定義を後から当てはめられます。 伸びた日を見れば「ほら抜けた」、伸びなかった日を見れば「あれは本当のブレイクではない」と言えてしまうのです。
仮説とは、外れたと判定できる形まで書き下した観察です。 誰が同じデータで計算しても同じ場面が拾われ、いつまでに何が起きなければ失敗かが、結果を見る前に決まっている。これが観察と仮説の違いです。
ここから2人の道が分かれます。Aさんは全期間のチャートを眺めて、よく伸びた日を集めてからルールを作りました(第5回で見た後付けです)。 Bさんはチャートを開く前に、まず「なぜ伸びるのか」を書きました。次の章はその理由の書き方です。
理由を書く:誰が、なぜ、その時間に売買するのか
仕様の7項目より前に書くものがあります。その差を生む仕組み、つまり「誰が、なぜ、その時間にその方向へ売買するのか」です。 Bさんが書いた理由は次のとおりです。
東京時間のレンジの外側には、損切り注文や新規注文が溜まりやすい。ロンドン勢が参加して流動性とボラティリティが増える時間帯にその価格を抜けると、注文の連鎖で同じ方向へ動きやすい。
この文章は、まだ当たっているかどうか分かりません。大事なのは、理由を書くと「こうなるはず」という予測が自動的に決まることです。 注文の連鎖が原因なら、抜けた方向へ動くはずです。方向だけを無作為に選んだ売買より良くなるはずです。ブレイクのない日にロンドン序盤で入るだけの売買より良くなるはずです。上抜けだけでなく下抜けでも同じことが起きるはずです。 逆に、これらが起きなければ理由は弱まります。予測が決まるから、反証条件(これが起きたら仮説は外れたとみなす条件)も書けるのです。
個々のプレイヤーではなく、ゲームを見る
クオンツの教育者 Roman Paolucci は、動画「No. You don't need to backtest a trading strategy.」(Quant Guild, 2026)でカジノのたとえを使っています。 カジノが儲かるのは、ある客が昨夜いくら負けたかという個々の記録のおかげではなく、ゲームのルールそのものに胴元の取り分が組み込まれているからです。 だから胴元は、過去の勝ち負けを並べて当たりを探す必要がありません。
相場に置き換えると、過去チャートの中から「よく勝った場面」を探すのは、個々の客の記録を眺めるのに近い作業です。 代わりに「この時間、この価格帯で、誰がどんな理由で注文を出すのか」というゲームの構造から考えると、見るべき場所と、起きるはずのことが先に決まります。 題名は挑発的ですが、主張は「過去の当たり探しではなく、仕組みから考える」ことです。動画の数値例は短い期間のもので講座の宣伝も含むため、ここでは考え方の例としてだけ使います。
研究者のプロトコルでも、第1項は「理由を先に」
Arnott, Harvey, Markowitz の論文「A Backtesting Protocol in the Era of Machine Learning」(Journal of Financial Data Science, 2019)は、機械学習の時代にバックテストで自分をだまさないための確認項目を並べています。 その第1項は研究の動機で、データを見る前に経済的な理由を立てること、そして結果を見た後に作った理由を警戒することが書かれています。 結果を見てから付けた理由は、ほとんどどんな結果にも付けられるからです。「5月は投資家が休みを取る」「金曜は週末前の手じまいが出る」。どれももっともらしく聞こえますが、先に成績を見ていれば、それは説明ではなく言い訳です。
理由は正しい必要はありません。Bさんの理由も、検証の結果として弱いと分かるかもしれません。必要なのは、理由が結果より先に書かれていて、日付が残っていることです。 それがあれば、結果がどう出ても「予測が当たったか外れたか」として読めます。
7項目で仕様化する
理由が書けたら、次の7項目で仕様にします。どれか1つでも空欄があると、その空欄が後から結果に合わせて埋められる余地になります。
- 対象:シンボル、時間足、検証期間を固定する。
- データと時刻:データ提供元、タイムゾーン、日足の境界、夏時間の扱い、欠損の処理を固定する。
- トリガー:候補が発生する瞬間を、数値と条件で定義する。結果を知らない時点で判定できることが条件です。
- 予測する結果:1トレードあたりの損益(pips)、到達値幅、勝敗など、測る量を1つ決める。
- 期限:何本後、何時まで、何日以内かを決める。「いつか上がる」は外れを確定できません。
- 成功と失敗:採用・保留・棄却の基準を、結果を見る前に書く。
- 比較対象:条件なしの売買、方向だけ無作為な売買など、「ルールのおかげか」を測る物差しを決める(第10回で詳しく扱います)。
FXは24時間動き、業者ごとにサーバー時刻や日足の境界が違います。「東京時間」「日足」と書くだけでは再現できません。 このコースのデータは日本時間(JST)で記録され、日足の境界は 06:00 JST です。記録するときは、JSTとサーバー時刻の両方と、夏時間の扱いを書きます。
Bさんの事前登録書
事前登録とは、検証を実行する前に仕様と判定基準を書き、日付を付けて保存することです。 あとで条件を動かしたくなっても、何を最初に決めていたかが残っているので、動かしたこと自体が記録になります。 次の表は、Bさんが2005〜2016年の探索期間を計算する前に書いた登録書の全文です。
| 項目 | 定義 |
|---|---|
| 仮説の理由 | 東京時間のレンジの外側には損切り注文や新規注文が溜まりやすい。ロンドン勢が参加して流動性とボラティリティが増える時間帯にその価格を抜けると、注文の連鎖で同じ方向へ動きやすい |
| 対象 | USDJPY 15分足(1分足から作り直す。時刻はJST、日足の境界は 06:00 JST) |
| 東京レンジ | JST 09:00〜15:00(15:00の足は含まない)の高値H・安値L |
| トリガー | ロンドン現地時刻 08:00〜10:00 に確定した15分足の終値が H を上回れば買い、L を下回れば売り。1日1回(最初のシグナルだけ)。両方向を対称に扱う |
| 時刻の変換 | ロンドン時刻は Europe/London のタイムゾーンで夏時間を処理し、JSTへ変換する(ロンドン 08:00 = JST 16:00(夏)/17:00(冬)) |
| 約定 | シグナル足の次の足の始値 |
| 損切り | 東京レンジの中点 (H+L)/2 |
| 決済 | ロンドン現地時刻 16:00 の足の始値(損切りが先ならそちら) |
| 利確・フィルタ | なし |
| 見送り | 東京レンジの時間帯にデータ欠損がある日、祝日で東京時間が成立しない日 |
| コスト(往復) | 通常 0.4 pips / 悪化 1.0 pips / ストレス 2.0 pips(スプレッドと滑りを含む) |
| 比較対象 | C1:同じ日・同じ約定時刻・同じ保有時間で、方向だけ無作為(買いと売りの比率はBさんと同じ)を1000回 C2:ブレイクの有無に関係なく、ロンドン 08:15 に同じ保有時間で入る C3:同じ保有時間帯の単純な買い持ち・売り持ち(相場の流れ) |
| 合否基準(最終テスト前に確定) | ①コスト「悪化」でも期待値の95%信頼区間の下限が0超 ②C1との差が有意 ③DSR≥0.95 ④置換検定2で p<0.05 ⑤年別で過半数の年が同符号。すべて満たせば採用候補、一部なら保留、期待値がゼロ以下なら棄却 |
| 近傍の扱い | 東京レンジの終了 ±1時間、シグナル窓 ±1時間、損切り(中点/反対端)、決済 ±2時間を記述統計として確認するだけ。近傍の結果を見てルールを変えたら、その時点で N+1 として記録する |
| 試行回数 | N_B = 1(事前登録した1通り) |
いくつかの行には、書いた理由があります。
- 両方向:理由は「注文の連鎖」なので、上抜けだけに効く理由はありません。片方だけを検証すると、その期間の相場の流れ(円安なら買いが有利)をルールの力と取り違えます。
- 次の足の始値で約定:シグナル足の終値は、その足が閉じた瞬間にしか分かりません。同じ価格で約定できると仮定するのは楽観です(第9回)。
- 損切りはレンジの中点、決済はロンドン16時:利確の幅を探すと候補が増えるので、理由から自然に決まる位置だけを使いました。中点を割れたら「抜けて伸びる」という前提が崩れた、と読めます。
- コストを3段階:1つの値だけだと、そのコストのときだけ合格する戦略を見分けられません。
- 近傍は確認だけ:近傍を見るのは「たまたま良い1点」でないかを知るためで、より良い点を探すためではありません(第11回)。
時刻をロンドン現地時刻で定義する理由
以前の版のこの記事では、例として「JST 16:00〜18:00 の確定足」と固定時刻で書いていました。これはロンドン勢の参加を理由にした仮説としては不正確です。 英国には夏時間があるため、ロンドンの朝8時は夏は JST 16:00、冬は JST 17:00 になります。JSTで固定すると、冬の半年はロンドンの 07:00〜09:00 を見ていることになり、理由と測る時間がずれます。
もう1つの問題は、固定時刻が後付けの余地になることです。「16〜18時が微妙なら17〜20時ではどうか」と、成績を見ながら時刻をずらせます。 実際にAさんのグリッドは、シグナル窓をJSTの固定時刻で4通り(15-17、16-18、16-19、17-20時)試しています。 相場参加者の現地時刻で定義すれば、時刻は理由から1つに決まり、ずらす理由がなくなります。
登録書を後から変えたときの書き方
登録書は、変えてはいけないものではありません。変えるなら、いつ、なぜ、結果を見る前か後かを書き足します。 Bさんの検証では、データを確認した段階で「保有している時間帯や決済の足に欠損がある日も見送る」を追加しました。これは結果を見る前の決定で、その旨を記録に残しています。 結果を見た後に変えたなら、それは同じ仮説の修正ではなく新しい試行で、Nが1つ増えます(第8回)。
Aさんの「仕様」に書かれていないもの
Aさんも、最後には仕様書のようなものを書きました。報告に載ったのは次の1行です。
東京レンジ JST 10–13時、シグナル 17–20時、バッファ0、買いのみ、損切り ATR14×1.0、利確 RR1.0、決済 翌01:45、フィルタ 金曜・5月除外・RSI14>55。
一見すると、Bさんの登録書と同じくらい具体的です。違いはこの1行が結果を見た後に書かれたことと、書かれていない選択肢が大量にあることです。 報告に載っていない分かれ道を並べると、次のようになります。
| 書かれていない選択 | 試した候補 | 報告に残ったもの |
|---|---|---|
| 東京レンジの開始(JST) | 8, 9, 10時の3通り | 10時 |
| 東京レンジの終了(JST) | 13, 14, 15, 16時の4通り | 13時 |
| シグナル窓(JST固定) | 15-17, 16-18, 16-19, 17-20時の4通り | 17-20時 |
| ブレイクのバッファ | 0, 3, 5, 10 pips の4通り | 0 |
| 損切り | 中点、反対端、ATR14×1, 1.5, 2 の5通り | ATR14×1.0 |
| 利確 | なし、RR 1, 1.5, 2, 3 の5通り | RR1.0 |
| 決済時刻(JST) | 20, 22, 24, 翌2時の4通り | 翌2時の前の足(翌01:45) |
| 方向 | 両方向、買いのみ、売りのみの3通り | 買いのみ(売りが負けたため) |
| 負けた日を見て足したフィルタ | 総pipsを基準に25通り → どれも不採用。基準をPFに替えてもう25通り | 金曜除外・5月除外・RSI>55 |
| 選択の基準 | 総pips最大 → PF最大へ途中で変更 | 記載なし |
| 検証期間の使い方 | 探索期間の上位12案を2017〜2022年で順に見て乗り換え | 「検証期間でも勝った」とだけ記載 |
| 時刻の定義 | JST固定(夏時間を処理しない) | 記載なし |
| 約定とコスト | シグナル足の終値で約定、スプレッド0 | 記載なし |
| 理由・反証条件・比較対象 | 書いていない | 記載なし |
グリッドだけで 3×4×4×4×5×5×4×3 = 57,600通り、フィルタで25+25通り、検証期間の使い回しで12回。台帳に数えられた試行は N_A = 57,662 です。 さらに、最初に全期間のチャートを眺めて「よく伸びた日」を見たことは、数えようのない試行として残ります。 それでもAさん本人の感覚では「最終案を1つ検証しただけ」です。
この差は成績の読み方を変えます。Aさんの探索期間の報告値は、1トレード平均 +8.65 pips、PF 1.83、年率Sharpe 1.18(351件、シグナル足の終値約定・コスト0)でした。 数字だけ見れば立派ですが、57,662通りから選んだことを反映した DSR(試行回数を差し引いた Sharpe の信頼度。第14回で扱います)は 0.42 で、採用の目安 0.95 に届きません。 Bさんの登録書が1行ずつ長いのは、この「書かれていない分かれ道」を最初から閉じておくためです。
探索と確認を分ける
ここまで読むと「では、データを見て仮説を思いつくのは禁止なのか」と思うかもしれません。そうではありません。 仮説の入口は、チャート観察、取引日誌、市場の制度、経済的な仕組み、探索的な集計のどれでもかまいません。曜日、時間帯、ボラティリティ、方向、イベント前後などで分けると差が見えることもあります。 ただし、探索で見えた差は「候補を作った証拠」であって、「採用してよい証拠」ではありません。候補を作ったデータで、同じ候補を証明することはできないからです。
- 観察:何が違って見えるかを記録する。
- 仕組み:なぜ差が生まれ得るか、参加者・制度・執行の理由を考える。
- 仕様化:7項目と反証条件を書き、日付を付けて保存する。
- 比較:同じ時刻・保有時間・方向比率を持つ比較対象との差を測る。
- 確認:探索に使っていない期間やデータで、1回だけ評価する(データの分け方は第7回)。
2人がやったこと・結果(+高頻度スキャルEAの例)
同じドル円のデータで、仮説の書き方が違う2人(および第9回で扱う高頻度スキャルEAの実験例)を並べます。
| Aさん | Bさん | (参考)スキャルEA | |
|---|---|---|---|
| 理由 | 書いていない(伸びた日を集めてから作った) | 注文の連鎖を検証前に記入 | 「行き過ぎは戻る」のみ。コストを上回る理由はない |
| 仕様を固定した時点 | 結果を見た後(最終案の1行) | 探索期間を計算する前 | 探索の手順は事前に登録。ただしグリッド3,456通りから毎回選ぶ |
| 比較対象・反証条件 | なし | C1〜C3と合否基準5項目 | なし |
| 試行回数 | N_A = 57,662 | N_B = 1 | 3,456 × 39窓 = 134,784 |
| 結果 | 最終テストでも平均はプラスだが、95%信頼区間はゼロを含み、DSR 0.002 | 最終テストで +4.42 pips。合否基準5項目のうち3項目だけ合格で「保留」 | テスター上は39窓中36窓でプラス。次足始値・通常コストでは31窓がマイナス |
Bさんの結果は「採用」ではありません。登録書を書いても勝てるとは限らないし、書いたから合格ラインを緩めてよいわけでもありません。 登録書がしてくれるのは、結果を「予測が当たったか外れたか」として読めるようにすることです。どの項目で落ちたかが分かるので、次に何を確かめればよいかも分かります(第17回)。
ゴールドの例
「ゴールドはドル安で上がる」も、そのままでは仮説ではありません。 XAU/USD のデータ提供元、ドル指数の時刻、同じ時点の変化を見るのか翌日の変化を見るのか、実質金利やイベント日をどう扱うかを決めて、初めて測れます。 理由も書きます。たとえば「ゴールドはドル建てで取引されるので、ドルの価値が下がると同じ量のゴールドに必要なドルが増える」。この理由なら、予測は「ドル指数の下落と同じ時点でゴールドが上がる」になり、翌日まで待つ理由はありません。
CFDでは取引時間・スプレッド・ロールオーバーの条件も業者ごとに違うため、結果だけでなく契約の仕様も記録に残します。 FXの例と同じく、時刻は参加者が動く市場の現地時刻で考え、夏時間の扱いを書きます。
よくある間違い
結果を見てから「本物の形」を決める
伸びた場面だけを「本物のブレイク」と呼ぶと、失敗例が定義から消えます。トリガーは、結果を知らない時点で判定できる必要があります。 「ヒゲで抜けたのはだましなので除外」と後から決めた場合も同じで、除外のルールも結果を見る前に書きます。
理由を結果の後に付ける
Aさんの「5月除外」には、後から「5月は大口が休みを取るから」と理由を付けることもできます。しかし、その理由を思いついたのは5月の成績が悪いのを見た後です。 結果を見た後の理由は、ほとんどどんな結果にも付けられるので、予測の役に立ちません。理由の日付が結果の日付より前かどうかを確認してください。
期限と比較対象を決めない
「いつか上がる」は外れを確定できません。「16時までに」と期限を置きます。 また、勝率が高くても、同じ時間に無条件で買うだけで同じくらい勝てる相場なら、ルールは何も足していません。Bさんの登録書に比較対象が3つあるのはそのためです。
実戦課題
まだバックテストは実行せず、仕様だけを書いて保存する課題です。
- 曖昧な言葉を1つ選ぶ:「勢いがある」「きれいな押し目」など、自分がよく使う言葉を1つ選びます。
- 理由を3行で書く:誰が、なぜ、その時間・その価格で売買するのか。書けなければ、その形はまだ仮説になっていません。
- 7項目を埋める:時刻は相場参加者の現地時刻で書き、夏時間の扱いも書きます。期限と、比較対象を最低1つ入れます。
- 反証条件と判定区分を書く:「何が起きたら棄却か」「どこまでなら保留か」を数字で書きます。
- 日付と仮説IDを付けて保存する:この後で条件を動かしたら、元の登録書は残したまま、新しいIDで書き直します。
裁量語を実体の倍率やATR比率に変える具体例は、ICT手法をバックテストするも参考になります。
やるべきこと/やるべきでないこと
| やるべきこと | やるべきでないこと |
|---|---|
| 理由と反証条件を、結果を見る前に書いて日付を残す | 伸びたチャートを集めてからルールを作り、理由を後から付ける |
| 時刻は相場参加者の現地時刻で定義し、夏時間を処理する | JSTの固定時刻を、成績を見ながらずらす |
| 理由が対称なら、両方向を対称に検証する | 負けた方向を外して片方向にする |
| 比較対象と合否基準を、検証の前に登録書へ書く | 結果が出てから、勝てる比較対象を探す |
| 近傍は記述統計として確認するだけにする | 近傍で一番良い点へ乗り換え、試行として数えない |
| 登録書を変えたら、日付・理由・結果の前か後かを追記する | 元の登録書を上書きして、最初からそうだったことにする |
チェックリスト
- 観察と仮説の違いを「外れたと判定できるか」で説明できる
- 理由から予測が決まり、予測から反証条件が決まる流れを説明できる
- 7項目(対象・データと時刻・トリガー・予測する結果・期限・成功と失敗・比較対象)を言える
- ロンドンの時間帯をJST固定で書くと、何がずれて、何が後付けの余地になるか説明できる
- Aさんの1行の仕様に書かれていない選択肢を3つ以上挙げられる
- 探索で見つけた差を、同じデータで証明してはいけない理由を説明できる
- 登録書を後から変えたときの書き方(日付・理由・結果の前か後か)を知っている
ミニテスト
最後に4問だけ確認です。不正解なら別の選択肢を選び直せます。正解すると解説が表示されます。
Q1. 観察と仮説の違いとして正しいのは?
「抜けると伸びやすい」は、何時の何を、いつまでに何pips動けば成功かが決まっていないので、どんな結果にも合わせられます。外れを判定できる形まで書いて、初めて仮説になります。
Q2. 仮説に「なぜその差が生まれるのか」という理由を書く一番の目的は?
Bさんの理由(注文の連鎖)からは「方向だけ無作為な売買より良い」「上下どちらでも起きる」という予測が決まります。成績を見た後に付けた理由は予測の役に立たず、言い訳になります。
Q3. ロンドン勢の参加を理由にした仮説で、シグナル時刻を「JST 16:00〜18:00 固定」と書くと何が問題か?
ロンドン 08:00 は夏は JST 16:00、冬は JST 17:00 です。現地時刻で定義すれば時刻は理由から1つに決まり、Aさんのように固定時刻を4通り試す余地もなくなります。
Q4. Bさんは登録書で「近傍は記述統計として確認するだけ」と決めました。近傍の結果を見てルールを変えた場合は?
結果を見て選んだ変更は、すべて試行です。元の登録書は残したまま、変更の日付・理由・結果の前か後かを書き足します。数え方は第8回で扱います。