自由度とは:ルールを過去に合わせられる余地
この回で使う自由度とは、ルールを過去のデータに合わせて曲げられる余地の大きさのことです。 統計の教科書では別の意味で使われることもありますが、ここでは「選べるつまみが何個あり、それぞれ何段階に回せるか」と考えてください。 つまみが多く、目盛りが細かいほど、過去のチャートのどんな形にもルールを寄せられます。
Aさんの例で見てみます。Aさんの出発点は「ドル円は東京時間の高値を、ロンドン勢が来ると抜けて伸びやすい」という考えでした。 これを確かめるために、Aさんは次の8つのつまみを用意し、2005〜2016年の15分足ですべての組み合わせを試しました(第1回・第2回で登場した「グリッド探索」です)。
- 東京レンジの開始:JST 8・9・10時の3通り
- 東京レンジの終了:13・14・15・16時の4通り
- シグナル窓:JST 15–17・16–18・16–19・17–20時の4通り
- ブレイクのバッファ:0・3・5・10 pipsの4通り
- 損切り:レンジの中点、反対端、ATR14の1倍・1.5倍・2倍の5通り
- 利確:なし、リスクリワード1・1.5・2・3倍の5通り
- 決済時刻:JST 20・22・24時・翌2時の4通り
- 方向:両方向・買いのみ・売りのみの3通り
1つ1つのつまみは3〜5段階しかありません。しかし組み合わせは掛け算で増えるので、3×4×4×4×5×5×4×3=57,600通りになります。 「つまみが8個」と聞くと控えめに感じますが、過去に合わせられる形は57,600通りあったわけです。
ここで大事なのは、自由度そのものは悪ではないということです。つまみが何個あっても、データを見る前にすべての目盛りを決めてしまえば、過去に合わせたことにはなりません。 問題になるのは、結果を見てから目盛りを選ぶときだけです。57,600通りを試して一番良かった1つを選ぶと、その成績には「57,600回のくじ引きで一番当たった1枚」という偶然が上乗せされます。 第2回で、規則のない相場でも最良ルールが立派な成績になったのは、この上乗せのせいでした。
そして、見落とされやすいのが図の下段です。どの期間で試すか、どの通貨ペアを選ぶか、何分足にするか、成績を何で測るか、どの日を外すか、いつ検証をやめるか。 これらは最適化ツールの設定画面には出てきませんが、結果を見て選んだ時点で、つまみと同じ働きをします。 この回の残りは、この「見えないつまみ」を数える話です。
分かれ道の庭:1本道に見える研究の裏側
見えない試行の問題は、相場の世界より先に、心理学や医学などの研究の世界で大きな議論になりました。2つの論文を紹介します。
1つ目は、統計学者のゲルマンとローケンによる「分かれ道の庭」(Gelman & Loken, 2014, "The Statistical Crisis in Science")です。 名前はボルヘスの短編小説の題から取られています。彼らが指摘したのは、次のようなことです。 研究者は、わざと何十通りも分析して良い結果だけを選んでいるわけではありません。たいていは「1つの分析」しかしていません。 しかし、その1つの分析の中身(どのデータを外すか、どの比較をするか)は、データを見ながら決まっています。 データが違っていたら、別の分析を選んでいたはずです。だとすれば、実際に通らなかった分かれ道も、すべて試したのと同じ効果を持ちます。 本人に「ずるをした」自覚がなくても、偶然の結果が本物に見える確率は上がります。
2つ目は、シモンズ、ネルソン、シモンソンの「研究者の自由度」(Simmons, Nelson & Simonsohn, 2011, "False-Positive Psychology")です。 この論文は、研究者が当たり前に持っている小さな裁量を並べました。測る指標を2つのうちどちらにするか、データをいつまで集めるか、どの変数で調整するか、どの条件を報告するか。 1つ1つは正当な判断に見えます。ところが、これらをデータを見ながら組み合わせて使えると、本当は効果がないのに「効果あり」と判定される確率が、建前の5%から約61%まで上がることをシミュレーションで示しました。 さらに実験で、ビートルズの「When I'm Sixty-Four」を聞いた人は実際の年齢が若くなった、というあり得ない結論まで「統計的に有意」にしてみせています。
この2つの考え方は、そのまま相場の検証に置き換えられます。
| 研究の世界の分かれ道 | 相場の検証での分かれ道 | Aさんがしたこと |
|---|---|---|
| どの指標で効果を測るか | 総pips、PF、勝率、Sharpe のどれで最良を決めるか | 最初は総pips、フィルタが採用されないと PF に替えた |
| データをいつまで集めるか | 検証期間の始点と終点、いつ検証をやめるか | 2005〜2016年のチャートを先に眺めてから始めた |
| どの変数で調整するか | 曜日・月・RSI・移動平均などのフィルタを足すか | 負けた日を見て、フィルタを1段ずつ足した |
| どの条件を報告するか | 方向・通貨ペア・時間帯のどれを残すか | 買いのみの案を選び、最良の1通りだけを報告した |
Aさんの開発を、分かれ道として1枚に描くと次のようになります。金茶の線がAさんの通った道、左のグレーの線が「結果を見て通らなかった道」です。
図の中で一番見落とされやすいのが、④の「物差しを PF に替える」です。 PF(プロフィットファクター)は、総利益を総損失で割った数字で、1を超えればプラスです。 Aさんは最初、グリッド探索と同じく「総pipsが増えるか」を物差しにして、曜日・月・EMA・RSIのフィルタを試しました。結果は、25通りのどれも採用になりませんでした。 フィルタは取引を減らすので、多少負けを除いても、総pipsは増えにくいからです。
ここでAさんは「総pipsではフィルタの良さが測れない。PFで測り直そう」と考えました。一見もっともらしい理由です。 しかし、この判断は「フィルタが1つも採用されなかった」という結果を見た後に行われています。 もし総pips基準で良いフィルタが見つかっていたら、Aさんは物差しを替えなかったはずです。これが、ゲルマンとローケンの言う分かれ道そのものです。 PFは、負けた取引を外すと上がりやすい物差しです。物差しを替えた結果、同じ25通りの中から金曜除外・5月除外・RSI14>55の3つが採用されました。 もし物差しを替えていなければ、最終案にフィルタは1つも付いていません。最終案の形を決めたのは、相場の性質ではなく、物差しを替えたという1回の判断でした。
評価の基準を変えること、検証期間を少し延ばすこと、気になる年を1つ外すこと。どれも、パラメータの数字を1つ変えるのと同じく、1回の試行です。 結果を見てから行ったなら、台帳に書いてNに加えます。「理由があって替えた」ことは、試行を数えなくてよい理由にはなりません。理由はいつでも後から付けられるからです。
Aさんの隠れた試行を数える
では、図の分かれ道を1つずつ台帳に書き出してみます。「選択肢の数」はその段で試した候補の数、「累積N」はそこまでに結果を見て選んだ候補の合計です。 この実験では、Aさんの手順を事前に書いた計画どおりに再現し、各段の試行を実行のたびに台帳へ記録しました(記録の付け方は第8回で扱います)。
| 段 | 決めたこと | 選択肢の数 | 累積N | Aさん本人の感覚 |
|---|---|---|---|---|
| ① | 対象(USDJPY・15分足)と期間(2005〜2016年) | 数えていない | ― | 「最初から決まっていた」 |
| ② | グリッド探索(8つのつまみ) | 57,600 | 57,600 | 「最適化ツールに任せただけ」 |
| ③ | フィルタの後付け(物差し:総pips)。曜日6+月13+EMA2+RSI4 | 25 | 57,625 | 「採用しなかったから関係ない」 |
| ④⑤ | 物差しを PF に替えて、同じフィルタをもう一度 | 25 | 57,650 | 「測り方を直しただけ」 |
| ⑥ | 検証データ(2017〜2022年)でIS上位12案を見比べ、3位案へ乗り換え | 12 | 57,662 | 「検証で確認した」 |
| 報告 | 最良の1通りの勝率・PF・Sharpe と損益曲線 | ― | 57,662 | 「私のルールは1つ」=N=1 |
Aさん本人の感覚は「N=1」です。報告書にも1通りのルールしか載っていません。台帳の上ではN=57,662です。 内訳は、グリッド57,600、総pips基準のフィルタ25、PF基準に替えたフィルタ25、検証データの使い回し12です。 グリッドが大部分を占めるように見えますが、③〜⑥の62回は、どれも「負けた日を見た」「採用なしを見た」「検証成績を見た」後の判断なので、偶然を拾う力はむしろ強い部分です。
この差は、成績の読み方を大きく変えます。DSR(Deflated Sharpe Ratio。試した数を考慮したうえで、その Sharpe が偶然を上回っている確からしさを0〜1で表す数字)で比べます。 本コースでは0.95以上を合格ラインにします(計算は第14回、導出は上級コース)。
- Aさんが報告した探索期間(2005〜2016年)の成績:351件、1取引平均 +8.65 pips、勝率59.5%、PF 1.83、年率Sharpe 1.18(終値約定・コスト0)。N=57,662 で計算した DSR は 0.42。
- 12回見て選んだ後の検証期間(2017〜2022年):190件、+3.55 pips(次の足の始値で約定・往復0.4 pipsのコスト込み)、95%信頼区間 [−1.20, +8.30]。DSR は 0.002。
報告書の数字だけを見れば、PF 1.83・勝率59.5%は立派です。しかし、57,662回のくじ引きで一番当たった1枚だと分かれば、DSR 0.42 は合格ラインの半分にも届きません。 検証期間を12回見比べて一番良い案に乗り換えた後は、検証期間の成績も「選ばれた成績」になり、DSR は 0.002 まで下がります。 同じ数字でも、何通りから選んだかで意味が変わる、というのはこういうことです。
2人の N を並べる
このコースの2人を、同じ台帳の見方で並べます。
| やったこと | 本人の認識 | 台帳の N | 結果 | |
|---|---|---|---|---|
| Aさん | グリッド→フィルタ2回→検証データで乗り換え | 1 | 57,662 | 探索期間の DSR 0.42、検証期間の DSR 0.002 |
| Bさん | データを見る前に1通りのルールを書き、固定した | 1 | 1 | 数え漏れがないので、成績をそのまま読める(探索期間は1,893件で平均 −0.14 pips。ゼロ付近という答えも、そのまま受け取れる) |
なお、第9回で扱う高頻度スキャルEAの実験例では、直近1年で3,456通りを最適化し、次の6か月に使うという手順を取りました。本人の感覚では「選ばれた1つのEA(N=1)」でも、台帳のNは1回の選択で3,456です。 取り上げた回の学習期間 DSR は 0.053 でしたが、N=1 と偽ると 0.976 に見えてしまいます。N を正直に書くかどうかだけで、同じ成績が「ほぼ合格」から「ほぼ偶然」に変わることをよく示しています。
最後に、台帳の N=57,662 も下限だという点を押さえておきます。①の「どの通貨ペア・時間足・期間で試すか」は、Aさんがチャートを眺めて決めたもので、何通り比べたかは記録にありません。 数えられなかった分かれ道がある限り、本当の N はこれより大きいと考えます。
条件を足すほど、1マスあたりの取引が減る
見えない試行には、もう1つ別の害があります。条件で取引を細かく分けるほど、1つの判断を支える取引の数が減っていくことです。 Aさんが③〜⑤で試した曜日や月のフィルタは、取引を「何月の何曜日か」で分けて、成績の悪いところを外す作業でした。そこで、グリッド最良案の探索期間の取引を、月12×曜日5=60マスに分けて数えてみます。
1マスに入る取引は11〜27件で、中央値は19件です。マスごとの1取引平均は、12月の月曜の −16.4 pips から、2月の水曜の +29.6 pips まで大きくばらつきます。 この表を見ると、「2月の水曜は強い」「12月の月曜は避けるべき」と言いたくなります。しかし、20件前後の取引の平均は、たまたま大きく勝った1回や大きく負けた1回で簡単に動きます。 60マスもあれば、中身がまったく同じでも、端のほうに極端なマスがいくつか出るのは当たり前です。これは第2回で見た「最良の1つは必ず目立つ」と同じ現象で、今度は試行の代わりにマスの数が効いています。
ちなみに、先ほどのシモンズらの論文は、研究者への要求の1つとして「1つの条件につき、少なくとも20件の観測を集めること」を挙げています。最低限の目安として示された数ですが、Aさんの60マスの中央値19件は、その最低限にも届いていません。
「5月除外」はどう決まったか
Aさんの最終案には「5月を除外する」という条件が入っています。図の5月の行を見ると、5つのマスの平均は −5.4〜+6.1 pips です。12月の月曜(−16.4)のように目立って悪いマスはなく、ほかの月と比べて特別な形はしていません。 5月除外は、物差しを PF に替えた後、金曜を外した状態で「月を1つ外す(または外さない)」13通りを比べて、PFが一番上がったものとして選ばれました。 12か月のうちどれかは必ず一番悪くなります。その1か月を外せば、過去の成績は必ず少し良く見えます。
ここで Aさんに「なぜ5月なのか」と聞けば、ゴールデンウィークの薄商いや、年度初めの資金の動きといった理由がきっと出てくるでしょう。 しかし、その理由は5月が選ばれた後に付けたものです。もし選ばれたのが8月だったら、夏休みの薄商いという理由が付いたはずです。 結果を見てから付けた理由は、分かれ道を1本に見せる化粧にはなっても、その条件が本物である証拠にはなりません。
単純さは好みの問題ではなく、測定を成り立たせる条件
「ルールは単純なほうがよい」とよく言われます。これを、見た目の好みや、覚えやすさの話だと受け取る人が多いのですが、ここまでの内容から、もっと実務的な理由が分かります。 単純なルールには、次の2つの性質があります。
- 数えられる:決める箇所が少なければ、どこで結果を見て選んだかを全部書き出せます。N が正しく数えられて初めて、DSR のような補正が使えます。
- 1つの判断を多くの取引で支えられる:条件で取引を分けなければ、1つの結論の裏に多くの取引が残ります。取引の数が多いほど、平均の信頼区間(本当の平均がこの幅に入ると考えられる範囲)は狭くなります。一般に、件数が4分の1になると幅はおよそ2倍に広がります。
Aさんの開発では、この2つが同時に崩れていきました。グリッド最良案は探索期間に1,115件、+5,143 pips、PF 1.36 でした。PF を物差しにしてフィルタを3つ足すと、297件、+2,827 pips、PF 2.02 になりました。 PF は見た目に大きく改善しましたが、総pipsは減り、取引の数は大きく減っています。そして、その3つのフィルタを選んだ根拠は、20件前後しか入っていないマスの比較でした。
一方の Bさんは、データを見る前に1通りのルールを書き、フィルタも利確も付けませんでした。探索期間の取引は1,893件です。 結果は、往復0.4 pipsのコスト込みで1取引平均 −0.14 pips、95%信頼区間は [−1.71, +1.42] でした。1,893件あっても、信頼区間の幅は3 pips以上あります。 つまり、20件前後のマスどうしの差から何かを言うのは、ほとんど不可能だということです。
ここで誤解してほしくないのは、単純なルールなら勝てる、という話ではないことです。Bさんの単純なルールは、探索期間ではゼロ付近でした。 単純さが保証するのは、勝ち負けではなく「出た答えを、そのまま信じてよい」ことです。Bさんの「ゼロ付近」という答えは、N=1 で数え漏れがないので、そのまま受け取れます。 Aさんの PF 2.02 は、どこまでが相場の性質で、どこからが57,662回の選択の上乗せなのか、この数字だけでは区別できません。 単純さは、測定器の目盛りを信頼できる状態に保つための条件です。
条件をまったく足してはいけない、ということでもありません。足すなら、データを見る前に理由を書いてから足す、足した候補の数を N に入れる、足した後も1条件あたりの件数を確認する、の3つを守ります。 理由の書き方は第6回、台帳の付け方は第8回、周りの値との比べ方は第11回で扱います。
よくある間違い
「パラメータは2つだけだから安全」
パラメータが2つでも、それぞれ20段階なら400通りです。さらに、期間・通貨ペア・時間足・物差しを結果を見て選んでいれば、それも掛け算で効きます。 安全かどうかを決めるのは、つまみの数ではなく、結果を見て選んだ回数の合計です。数えるべきは「パラメータの数」ではなく「比べて捨てた候補の数」です。
「見ただけで採用しなかった案は数えなくてよい」
Aさんの③では、25通りのフィルタがどれも採用されませんでした。しかし、その「採用なし」という結果を見たことで、物差しを PF に替えるという次の分かれ道が生まれました。 採用しなかった案も、比べた時点で選択に参加しています。台帳には、採用した案だけでなく、比べて捨てた案をすべて書きます。
「他人が見つけたルールを使うなら、N はゼロ」
本やSNS、販売されているEAのルールは、公開されるまでに誰かが何通りも試し、うまくいったものだけが表に出ています。見えないだけで、その試行は消えていません。 他人のルールを使うときは、公開後の期間(作った人が見ていない期間)で確かめるまでは、N が分からない=大きいかもしれない、として扱います。公開された成績の偏りは第4回の型7で扱います。
実戦課題:自分の分かれ道を描く
最近検証した(またはこれから検証する)ルールを1つ選び、Aさんの図と同じものを自分で描きます。紙1枚で構いません。
- 決定を時系列で書き出す:通貨ペア、時間足、期間、エントリー条件、決済条件、フィルタ、成績の物差し、除外した日や年。思い出せる限り、決めた順に並べます。
- 各決定に印を付ける:データを見る前に決めたものは「前」、結果を見てから決めた(または変えた)ものは「後」。迷ったら「後」にします。
- 「後」の決定ごとに選択肢の数を書く:何通りを比べたか。覚えていなければ、少なくとも2(替えた前と後)とします。
- 累積 N を出す:Aさんの表と同じ形で、段ごとの選択肢の数を足していきます(1つのグリッドの中は掛け算、段と段の間は足し算です)。
- 条件ごとの件数を数える:フィルタや除外で分けた条件1つあたりに、何件の取引が入っているかを数えます。20件前後のマスどうしの比較で決めた条件には、印を付けておきます。
- 結果を研究ログに残す:「本人の感覚の N」と「書き出した N」を並べて記録します(研究ログの形式はトレード日誌の始め方を参照)。
やるべきこと/やるべきでないこと
| やるべきこと | やるべきでないこと |
|---|---|
| 期間・通貨ペア・方向・時間足の選択も N に数える | パラメータの組み合わせだけを数える |
| 成績の物差し(総pips、PF など)を、結果を見る前に1つ決める | 候補が採用されなかったのを見て、物差しを替える |
| 比べて捨てた案も、台帳にすべて書く | 採用した案だけを記録する |
| 条件を足したら、1条件あたりの取引数を確認する | 20件前後のマスを比べて、悪いマスを外す |
| 条件を足すなら、理由をデータを見る前に書く | 選ばれた条件に、後から理由を付ける |
| 他人のルールは、公開後の期間で確かめてから使う | 他人のルールを N=0 として扱う |
チェックリスト
次の記事に進む前に、以下が自分の言葉で説明できるか確認してください。
- 自由度を「ルールを過去に合わせられる余地」として説明できる
- 自由度が問題になるのは「結果を見て選ぶ」ときだけであること
- 「分かれ道の庭」と「研究者の自由度」を、相場の例で説明できる
- Aさんの N=57,662 の内訳(57,600+25+25+12)と、本人の認識が N=1 だった理由
- 物差しを総pipsから PF に替えたこと自体が分かれ道だった理由
- 60マスに分けると1マス中央値19件になり、「5月除外」の根拠が弱い理由
- 単純さが、勝ちの保証ではなく測定の条件である理由
ミニテスト
最後に4問だけ確認です。不正解なら別の選択肢を選び直せます。正解すると解説が表示されます。
Q1. 過剰最適化の大きさを主に決めるのはどれですか?
Aさんのつまみは8個でしたが、結果を見て選んだ回数は57,662回でした。パラメータの数が少なくても、期間や物差しを結果を見て選べば、その分だけ偶然を拾う力が強くなります。
Q2. Aさんが、フィルタが1つも採用されなかったのを見て、物差しを総pipsから PF に替えました。正しい見方はどれですか?
総pips基準で良いフィルタが見つかっていれば、物差しは替えなかったはずです。結果しだいで道を選んだので分かれ道です。台帳では 57,625 から 57,650 に増えます。物差しを替えなければ、最終案にフィルタは1つも付いていませんでした。
Q3. 月×曜日の60マスに分けると1マスの取引は中央値19件でした。「5月を除外する」判断について正しいのはどれですか?
12か月のどれかは必ず一番悪くなり、それを外せば過去の成績は必ず良く見えます。理由は選ばれた後にいくらでも付けられるので、証拠にはなりません。
Q4. SNSで公開されている「勝てるルール」をそのまま使う場合、試行回数 N はどう考えますか?
表に出るのは、誰かが何通りも試してうまくいったものだけです。見えない試行は消えていません。作った人が見ていない期間で確かめることが、その N を小さくする唯一の方法です。