Blog/FX予測

5つの通貨ペアでランダムウォークに挑んだ結果——スコアボードを公開する

5つの通貨ペア、5年分のライブデータでFX予測テストを実行した。勝ったのはランダムウォークだった。より興味深い結果は、2つの妥当な分析上の選択だけで、いかに簡単に「勝った」ように見せられたかという点である。

MMexchangerate.dev·Jul 6, 2026·8分で読了

チュートリアルのテストを、5つの通貨ペア・5年分の日次データでライブに実行した。ランダムウォークはすべてのペアで持ちこたえた。しかし正直な話は「モデルが負けた」ということではない。ごく普通で妥当な2つの分析上の選択だけで、1つのペアが本当に統計的に有意な優位性を持っているように見せられたということであり、これこそFX予測の主張には懐疑的な目が必要な理由である。

Key points
事前に固定した設定(70/30分割、通常の標準誤差)では、どのペアも統計的有意性を持ってランダムウォークに勝てなかった。
300の特徴量を追加すると、すべてのペアでサンプル外精度が悪化し、R²は-20%から-25%に落ち込んだ。複雑さはここでは幻影であり、まさに2025年のFED論文が見出した通りである。
HAC標準誤差に切り替える、あるいは訓練・テスト分割を動かすだけで、2つのペアが5%有意水準を超える。データではなく、分析者の選択が変わっただけである。
多重検定を補正すると(5ペアに対するBonferroni補正、t > 2.33)、何も生き残らない。それが本当の結果である。
すべての数字は、関連チュートリアルのコードを使って無料プランで再現できる。

設定

チュートリアルと同じレシピを、すべてのペアに同一に適用した:

  • データ: /v1/rangeエンドポイント経由の2021年1月から2026年1月までの日次レート。前方補完された週末・祝日の行は除外。
  • 分割: 最初の70%を訓練用、最後の378取引日(5ペアすべて同じ日数)をテスト用として保持。モデルはテスト期間を一切見ない。
  • シンプルなモデル: 8つの安価な特徴量(リターンのラグ、1週間・1か月モメンタム、10日実現ボラティリティ)によるリッジ回帰。
  • 複雑なモデル: 同じ特徴量を300のランダムフーリエ特徴量に拡張したもの。訓練・テストで同一の乱数基底を共有。
  • ベンチマーク: ドリフトなしのランダムウォーク。明日のリターン予測は常にゼロ。
  • 採点: ランダムウォークに対するサンプル外R²と片側Clark-West検定。t統計量が1.645を超えれば5%水準をクリアする。

70/30分割と通常の標準誤差は、結果を見る*前に*選んだ。これは以下の内容にとって重要である。

スコアボード

Out-of-sample results, 70/30 split (dir. acc = simple model)copy
pair       OOS R2    CW t   p-value    complex R2   dir. acc
EUR/USD    -0.34%    0.84   0.200      -20.5%       49.5%
GBP/USD    -1.23%    0.17   0.432      -23.8%       51.9%
USD/JPY    -2.29%   -0.33   0.631      -24.9%       53.2%
AUD/USD    -0.52%    1.10   0.136      -24.2%       48.7%
USD/CAD    +0.61%    1.50   0.067      -20.5%       52.1%

事前にコミットした設定では、誰もランダムウォークに勝てなかった。5ペア中4ペアがマイナスのサンプル外R²を記録し、訓練したモデルは変化なしと仮定するより成績が悪かったことを意味する。表の中で最良のClark-West t統計量は1.50(USD/CAD)であり、5%の優位性に必要な1.645には届かなかった。USD/CADの+0.61%というR²が唯一のプラスのセルだが、そのp値0.067は基準に届かなかった。表を印刷されたとおりに読めば、結論は「優位性なし」である。

複雑さはすべてのペアで悪化させた。300特徴量のモデルは隠れた構造を発見しなかった。特徴量あたり訓練行数がわずか約3行しかない状態で、訓練ノイズを丸暗記し、サンプル外では総崩れとなり、全ペアでR²は-20%から-25%に落ち込んだ。USD/JPYではClark-West t統計量が-2.05——ランダムウォークより悪いだけでなく、有意に悪かった。サンプル内では同じモデルが見事にフィットしていた。見たことのないデータに出会うまでは輝かしく見えていた、複雑さの教訓を1つのペアに凝縮したような結果である。

方向はコイン投げだった。上昇・下落の的中率は48.7%から53.2%の間に収まった。378のテスト日数では、おおよそ45〜55%の範囲に収まるものはすべて統計的ノイズであり、どのペアもそこに収まっている。コインを投げれば50%が出る。

それでも「勝った」ように見せる方法

ここからが、FX予測の結果——私たち自身のものも含めて——を疑うべき理由である。「誰もランダムウォークに勝てなかった」というのは、事前に固定した正確な選択について成り立つ話だった。それを1つか2つ変えれば、それぞれ単独では十分に妥当な変更でも、様相は変わる。

標準誤差を入れ替える。Clark-West検定では通常の標準誤差を使った。日次予測誤差には軽い自己相関があるため、査読者が代わりにNewey-West(HAC)誤差を求めるのは妥当な要求だろう。この一箇所だけ置き換えると、2つのペアが5%ラインを超える:

ペアClark-West t(通常)Clark-West t(HAC)
AUD/USD1.101.66 — 有意
USD/CAD1.501.83 — 有意

データは何も動いていない。誤差バーの計算式だけが変わり、それだけでさっきまでゼロだった「有意」な結果が2つ生まれた。

分割点を動かす。最後の30%を保持していた。同じく恣意的な線である最後の40%を試すと、USD/CADのClark-West t統計量は2.26まで上昇する。試したどの分割点でもプラスのままだった:

USD/CAD across train/test splitscopy
split          60/40    65/35    70/30    75/25    80/20
OOS R2        +1.25%   +0.33%   +0.61%   +0.87%   +0.71%
Clark-West t    2.26     1.58     1.50     1.43     1.31

2つのつまみ(どの標準誤差か、どの分割か)と選べる5つのペアがあれば、意欲的な分析者は「機械学習がUSD/CADでランダムウォークに勝った、統計的に有意」という見出しを作り出せる。各ステップは単独では正当化できる。積み重なると、それが誤った結果が論文に紛れ込む仕組みである。

それを封じる規律
数字を見る前に選択を固定し、サンプル外で採点し、何個検定したかを補正する。5つのペアを5%水準で検定すると、偶然だけで少なくとも1つの偽陽性が出る確率はおよそ23%になるため、正直な閾値はもっと高くなる: 5ペアに対するBonferroni補正はそれをおよそt > 2.33まで押し上げる。USD/CADの最良の結果である60/40分割での2.26でも、これには届かない。試したすべてのペア、分割、標準誤差の選択の中で、正直な基準を超えるものは一つもなかった。それが本当の結果である。

なぜこれが繰り返し起きるのか

短期の主要通貨ペアのFXは、市場が到達しうる効率性にかなり近い。毎日数兆ドルが取引され、価格履歴だけからリッジモデルが見つけられるほど単純なパターンは、ノートブックに届くはるか前に裁定によって消し去られる。次のリターンの条件付き平均が実質的にゼロ変化であるため、今日の価格は明日に対して入手可能な最良の点予測である。モデルが壊れているのではない。その効率性こそが発見である。

ただし*点*という言葉に注意してほしい。条件付き平均が予測不能だからといって、分布全体が予測不能とは限らない。ボラティリティはクラスター化し、レンジは広がったり狭まったりする——その構造は現実であり、予測可能でもある。正当な価値が宿るのもそこである。

ここから得た教訓

私たちはレートAPIを構築しているので、静かな本音をはっきり言おう。「予測レート」エンドポイントを出荷するつもりはない。主要な日次通貨ペアでは「今日のレートをそのまま返す」に正直に勝てないからである。できるのは、今日のレートを正確に、速く、そして(source、前方補完フラグ、ボラティリティといった)メタデータとともに提供することであり、それによって不確実性を見せかけで済まさず定量化できるようにすることだ。

それでも試してみたいなら、上記のすべては関連チュートリアルのコードを使い、無料プランで再現できる。私たちが本当に感心する基準はこうだ: 分割と標準誤差を事前に選び、5つの主要通貨ペアすべてでサンプル外のBonferroni補正済みClark-West統計量をクリアすること。それを成し遂げれば、文献が本当に稀だと言っていることを実際にやり遂げたことになる。

MM
exchangerate.dev
インディケーティブ・レートを扱う開発者向けのFXデータガイド。

Keep reading

TutorialFX予測でランダムウォークに勝つ: コード編Read Guide為替レートは予測できるか?40年の壁Read Guide1回の呼び出しで過去の為替レートと時系列データを取得するRead