+33.8%の最適解が前進検証で-3.0%に消えた、複雑化3方向の全滅記録

却下手法 · 1 min

機械学習に掘らせる・指標を重ねる・時間足を短くする。手法を複雑にする3方向を5本の検証(研究34/44/45/47/61)で測った統合記録。固定期間で+33.8%に見えた最適解が前進検証で消えるまでの経過と、複雑化が優位性を生まない理由。

検証期間全体で+33.8%、PF1.15。この数字を見た瞬間は「ついに見つけたか」と思いました。ところが前進検証にかけると通算-3.0%、5年中勝てたのは1年だけ。きれいに消えたんです。

この記事は、こういう「複雑にしたら勝てそうで勝てなかった」検証5本(研究34/44/45/47/61)を1つの物語にまとめたものです。試した複雑化は3方向。機械学習に大量の特徴量を掘らせる、指標を重ねる(フラクタル単体、フラクタル×指標、時間足をまたぐ複合)、そして時間足を短くする。結論はすべて不採用でした。ただ、5本が全部同じ負け方をしたことにこそ価値があるので、その構図まで書きます。

はじめに: このブログと前提知識

初めての方向けに。このブログは、私(個人)がFXの自動売買プログラム(EA)を自作し、手法を統計検証して勝敗問わず記録している検証日記です。文中の「研究N」は私の検証ノートの通し番号。検証には主要通貨や金の実データ(1分足から日足まで)を使っています。

用語を3つだけ。PF(プロフィットファクター)は総利益÷総損失で、1を超えると黒字。DD(ドローダウン)は資産の山からの下落率で、登山でいう「どれだけ下りに転じたか」。そして今回の主役が前進検証(ウォークフォワード)です。過去数年分のデータで最適な設定を選び、その設定を次の1年の未知データで試す、を繰り返すテスト方法で、「過去に合わせ込んだだけの偽物」をあぶり出します。

図: ウォークフォワード検証の概念図。学習期間と検証期間をずらしながら繰り返します。

図: 前進検証の仕組み。過去で選んだ設定を未知の期間で答え合わせします。今回の5本はこの関門で全滅しました。

方向1: 機械学習に19個の特徴量を掘らせる(研究34)

まず一番力ずくな方向から。移動平均やADX、モメンタムなど19個の特徴量を機械学習(LightGBM)に食わせ、20通貨ペアで値動きの方向を予測させました。未来のデータを盗み見るリークを防ぐため、学習期間と検証期間の間を空けるエンバーゴ処理付きのウォークフォワードです。

予測対象成績備考
翌日の方向-12.4%/的中率50.9%コイン投げと同水準
5期間先・10期間先(買い売り両方)負けショート側が足を引く
10期間先・買いのみ+6.3%/DD-3.2%/8年中6年勝ち唯一のプラス

唯一勝てた「10期間先・買いのみ」で、モデルが重視した特徴量を調べると、200日移動平均・ADX・モメンタムでした。トレンド指標ばかりです。機械学習は未知の宝を掘り当てたのではなく、私がルールベースで既に使っているトレンドフォローを再発見しただけでした。

翌日の方向予測すら的中率50.9%。最も柔軟な手法に自由に掘らせても、価格データから出てくる実体のある優位性は「トレンドに乗る」以外にない。この結論が、後の全検証の伏線になります。

方向2: 指標を重ねる。まず土台のフラクタルが崩れた(研究44)

次は王道の複雑化、指標の重ね掛けです。土台に選んだのはビル・ウィリアムズのフラクタル(中央のバーが前後n本より高い、または安いときに付く高値安値のサイン)。ルックアヘッド(未来のデータを使ってしまうミス)を防ぐ補正を入れた上で、まず教科書通り、買い売り対称・フィルタなしで動かすと、1時間足で-98%、4時間足で+1%、日足で-13%。1時間足はほぼ全損です。

図: ブレイクアウトのエントリー例(XAUUSD 日足・実データ)。直近の高値を上抜けたところで買います。

図: 高値安値ブレイクの構図。フラクタルの実体はこれと同じものでした。

そこで買いのみに絞り移動平均フィルタを付けると、固定期間の検証では日足+13.8%/PF1.39/DD-5.7%、4時間足+24.6%と急に見栄えが良くなります。ところが前進検証では日足が通算-8.4%で7年中1年しか勝てず、4時間足も-5.4%で7年中3年。あっけなく崩壊しました。

とどめに、運用中のトレンドフォローEAとの日次相関を測ると0.83。フラクタルは新しい情報を見つけているのではなく、スイングの高値安値を検出しているだけ、つまりドンチャンチャネル(高値安値ブレイクの古典手法)の焼き直しだったんです。

それでも重ねる、フラクタル×RSI×ADXの8通り(研究45)

土台が弱くても、指標を重ねれば安定するのでは?と思いますよね。私も思いました。そこでRSI(過熱感の指標)やADX(トレンドの強さの指標)を単独・複合で足した8通りを前進検証にかけました。

結果は全滅です。合格基準は「通算プラスかつ7年中5年以上勝つこと」でしたが、8通りのどれも届かず、最良の組み合わせでも4時間足で勝ち年4/7、通算はほぼゼロ。固定期間では利益が50%以上増えて見えた「フラクタル+RSI70以下」のような組み合わせも例外ではありませんでした。

注目してほしいのは劣化の仕方です。フィルタを足すほど取引回数が減り、最初は良く見えた数字が、検証を広げるとどんどん平均に沈んでいく。過剰最適化(特定の過去データへの合わせ込み)が解けたら、優位性ごと消えました。もともと優位性のない部品は、いくつ束ねてもゼロのままなんです。

複合の頂点、時間足をまたぐRSI+移動平均(研究47)

重ね掛けの最終形として、マルチタイムフレーム(MTF。異なる時間軸のチャートを組み合わせること)も試しました。上位足の移動平均で大きな流れを見て、下位足の移動平均でトレンドを確認し、RSIで押し目を拾う3段構え。4つの時間軸ペアに各36通りの設定を試しました。

検証方法成績
固定期間の最適解(H1+H4)+33.8%/PF1.15
固定期間の最適解(H4+D1)+15.5%/PF1.11
前進検証(3年学習→1年テスト)通算-3.0%/5年中1年勝ち
最適設定を他通貨へ横展開通算-11.0%/6通貨中2通貨のみプラス

冒頭の数字はここです。固定期間の+33.8%が、前進検証で-3.0%に化けました。しかも各期間で選ばれる設定は移動平均100と200、RSIの買い基準30と50の間を行ったり来たり。毎回言うことが変わる予報士と同じで、安定した法則を掴んでいない証拠です。

救いは1つだけありました。前進検証中のDDは各年-0〜-7%と小さく、「勝てないが低リスク」ではあった。ポートフォリオの分散部品としての芽は残るものの、収益源にはなりません。

方向3: 時間足を短くする(研究61)

最後は複雑化というより高頻度化です。勝てている手法の時間足を下げれば、取引機会が増えて利益も増えるのでは?という誘惑。運用中のブレイクアウト手法を設定そのままに、1時間足(H1)から5分足(M5)まで下げました(2019-2025年、スプレッド込み)。

時間足収益率PF勝ち年最大DD
H1(基準)+31%1.365/5-8.6%
M30+37%1.195/5-16.2%
M15+13%1.024/5
M5-77%0.760/5-85%

取引回数はH1の1,428回からM5の18,755回へ爆発的に増えますが、増えたのは取引コストの支払い回数だけ。PFとDDは単調に劣化し、両建て版に至ってはM5で-100%、全損です。

追加スリッページ(注文価格と約定価格のズレ)への耐性も測りました。M5は何をしても赤字(PF0.76→0.48)。M15はスリッページ0.5pipでPFが1.02→0.96と赤字転落、つまり理想環境でしか成立しない見かけの黒字でした。M30だけは1pipまで耐えますが、それでもH1と比べてPFは1.36→1.19に落ち、DDはほぼ倍。短くして良くなる要素は1つもありませんでした。

5本に共通する負け方

並べてみると、3方向は同じ構図で負けています。

  1. 固定期間の検証では必ず良い数字が出る(+13.8%、+50%超、+33.8%)
  2. 前進検証にかけると消える(-8.4%、通算ほぼゼロ、-3.0%)
  3. 正体を調べると、既知のトレンドの再発見か、過去への合わせ込みのどちらか

機械学習が掘り当てたのはトレンド指標。フラクタルはトレンド核と相関0.83のドンチャン焼き直し。MTF複合の最適解は期間ごとに設定が踊る過剰最適化。短期足化はコストに食われるだけ。複雑さは新しい優位性を生まず、固定期間の検証をすり抜ける見かけの好成績だけを生んでいました。

じゃあ何が残ったの?と思いますよね。この5本の後も検証を重ねた現在地で言うと、価格データから実体のある優位性が出るのは、長めの時間足でトレンドに乗るシンプルな構造だけでした。複雑化の探索がすべて否定で終わったからこそ、この結論を「まだ試していない何かがあるのでは」という未練なしに信じられます。否定結果は、地図の「ここには何もない」を確定させる測量なんです。

この記事は研究34/44/45/47/61を統合したものです。