コンテンツにスキップ

MACDのクロスは効くのか

トレンド系オシレーターの代表格である MACD(Moving Average Convergence Divergence)を、網羅的に検証しました。シグナルラインクロス、ゼロラインクロス、ヒストグラムの符号、ヒストグラムの傾き、ゼロで条件づけたクロスという5つの代表的ルールを、8つのパラメータセットと3つのモードで総当たりし、さらにクロスペア、週足、機械学習の特徴量まで追撃しました。対象は USD/JPY を中心に9通貨ペア、日足21年ぶんです。

検証の前提とデータ

「606 実験で棄却」という主張自体が、検証可能でなければ意味がありません。用いたデータと条件を明示します。

項目内容
対象通貨ペアUSD/JPY(主)/メジャー: EUR/USDGBP/USDAUD/USD / JPYクロス: EUR/JPYGBP/JPYAUD/JPYNZD/JPYCAD/JPY
時間足日足(週足も併せて検証)
期間2005-01-03 〜 2026-07-10(USD/JPY 日足 5,582 本)
データソースYahoo Finance
IS/OOS 分割時系列で前半50%=インサンプル、後半50%=アウトオブサンプル
コスト控除スプレッド 2 pips + スリッページ 1 pip(片側)。JPYクロスは相応スケール
統計判定Bootstrap 2,000 回で OOS シャープの信頼区間と p 値、Benjamini-Hochberg 法で FDR 補正(α=5%\alpha = 5\%
乱数シード42(再現可能)

探索したパラメータ空間(グリッド)は、(fast, slow, sig) を8種類、モード long_only / switch / short_only です。

(fast, slow, sig)呼称
(5, 13, 5)短期スキャル
(5, 20, 5)短期
(5, 35, 5)Fast-Slow 拡張型
(8, 17, 5)中短期
(10, 30, 5)中期軽量
(12, 26, 9)Appel 標準
(14, 28, 7)中期変種
(19, 39, 9)週足寄り

検証した実験の一覧(累計 606)

「まだ試していない条件があるはず」という反論を潰すため、5つのルール家族を総当たりし、さらに「他ペアなら」「週足なら」「ML 特徴量なら」という3つの逃げ道を追撃しました。

ラウンド家族検証した「神話」実験数FDR生存
グリッドR1 シグナルクロスゴールデン/デッドクロスで売買240
グリッドR2 ゼロクロスMACDの0抜けはトレンド転換240
グリッドR3 ヒストグラム符号反転が早期モメンタム転換を捉える240 ※R1と等価
グリッドR4 ヒストグラム傾き拡大/縮小で勢いの変化を読む240
グリッドR5 ゼロで条件づけたクロス0より上のクロスは強い買い240
追撃クロスペア8種×3家族他のペアなら効く4320
追撃週足USD/JPY×3家族ノイズの少ない上位足なら効く540
追撃ML特徴量(GBM)機械学習の特徴量としてなら3変種ΔR20\Delta R^2 \approx 0
累計6060

各ラウンドで具体的に何を、どのパラメータで、どう試したかは、ページ末尾の「検証詳細(ラウンド別)」に全て記載しています。

検証で得られた事実

グリッド、クロスペア、週足、ML 特徴量で得た、累計 606 実験+ML検証のうち:

  1. FDR 補正後の positive-Sharpe 生存者は 0 件。α=5%\alpha=5\%、8 パラメータ、5 家族、9 通貨ペア、週足のいずれでも、支持する統計的証拠は一切得られなかった。
  2. ベースライン(always long)の OOS シャープは +0.388。上位候補には baseline を超えるものもある(R5 の (19,39,9) long_only で OOS +0.518)が、いずれも FDR 不通過。
  3. 上位候補は IS シャープ ≈ 0 かマイナスで OOS だけ勝つ、という選抜バイアスの典型が再現。
  4. R1(シグナルクロス)と R3(ヒストグラム符号)は数値が完全一致。教科書は別々のシグナルとして解説するが、hist>0    MACD>Signal\text{hist} > 0 \iff \text{MACD} > \text{Signal} より実装上は同じ1つのシグナル。
  5. 短期の売り(short-only)は全滅。円安ドリフト期に円買い方向を取る戦略の構造的敗北で、これは MA と同じ。
  6. クロスペア8種(メジャー3+JPYクロス5)も全滅。MACD の失敗は USD/JPY 固有問題ではない。
  7. 週足も棄却。上位でも baseline を +0.05 上回る誤差レベルで、FDR 不通過。
  8. ML 特徴量としては、MACD-only の OOS R2R^20.111-0.111)が baseline(0.135-0.135)を僅かに上回った(ΔR2=+0.024\Delta R^2 = +0.024)。MA-only(0.353-0.353)が baseline を大きく下回ったのと対照的で、この一点だけ MA と結論が異なる。ただし絶対値は依然マイナスで、signal シャープ(+0.087+0.087)は always-long に遠く及ばない。

MACD が edge を持たない構造的な理由

以下は検証結果からの帰納的な解釈です(仮説であり、証明ではありません)。

  1. MACD は MA の派生であり、MA と同じ理由で edge が消えている。MACD は EMAfastEMAslow\text{EMA}_{\text{fast}} - \text{EMA}_{\text{slow}} という「差」であり、個々の MA が edge を持たないことは移動平均のケースで確認済み。その差分と平滑化(Signal)にも独立した edge は残らない。
  2. シグナルクロスはヒストグラム符号と等価。hist=MACDSignal\text{hist} = \text{MACD} - \text{Signal} の定義から、MACD>Signal    hist>0\text{MACD} > \text{Signal} \iff \text{hist} > 0。教科書は2つのシグナルとして語るが、別ルールと思って併用しても独立情報にはならない。
  3. ヒストグラムの傾き(R4)は最弱。「拡大/縮小」は二階微分に近い量でノイズが乗りやすい。IS シャープが最も低い家族(0.5-0.5 前後)で、「早期モメンタム転換の検出」の実データ的裏付けは弱い。
  4. ゼロで条件づけたクロス(R5)の「僅かな優位性」は偶然の範疇。日足最良候補(OOS +0.518)を出したが、120 実験のうちの1つの p=0.087p = 0.087 は data snooping の帯にある。教科書のニュアンスの方向は正しくても、統計的優位性の水準にはない。
  5. ベースラインの受動的ドリフトを超えられない。USD/JPY 21 年の円安ドリフトを long 側に張った受動的 baseline が捕捉する。MACD の long_only rule は「baseline とほぼ同じかそれ以下」に収束し、シグナルを見て入ることで削られたリターン(露出低下とタイミングコスト)を回収できない。

MA より弱い独立情報が「一点だけ」残った

ML 特徴量の検証で、移動平均のケースと明確に異なる所見が1つ観測されました。翌日 log return を GBM で予測し、特徴量を差し替えて比較した結果です。

  • MA-only:OOS R2=0.353R^2 = -0.353。baseline(0.135-0.135)より悪化した。
  • MACD-only:OOS R2=0.111R^2 = -0.111。baseline より僅かに改善した(ΔR2=+0.024\Delta R^2 = +0.024)。

特徴量重要度でも、MACD-only モデルで短期ヒストグラム hist_5_13_5 が 0.26 と最上位を占めます。MACD ヒストグラム(とくに短期の (5,13,5)(5,20,5))が、lagged returns だけでは捕捉できないモメンタムの二階微分的な情報を、非線形モデルに与える可能性を示唆します。

ただし、この「独立情報」は絶対値としてはゼロに近いものです。OOS R2=0.111R^2 = -0.111 は「予測が平均値予測より悪い」状態のままで、そこから作った売買 signal のシャープ(0.082-0.082)は「相場に居るだけ」の baseline(+0.388+0.388)の遥か下にあります。「MACD が MA より僅かに独立情報を持つ可能性」と「MACD で儲かる」は別問題で、前者は真かもしれませんが、後者は棄却されます。

では、MACD とは何なのか

検証結果を矛盾なく説明する、最も倹約的な定義はこうです。

  • MACD は「予測器」ではない。値、方向、変化率、シグナルクロスのいずれも、将来リターンに関する有意な事前情報を含まない(少なくとも検証範囲では)。
  • MACD は「2つの EMA の差」という統計量である。短期と長期の EMA の差がトレンドの一階微分近似、その平滑化がシグナルライン、両者の差であるヒストグラムが二階微分近似。いずれも過去データの平滑化された記述。
  • MACD は「教科書上の2種類のシグナルが実は同じ」例である。R1 と R3 の数値一致は、視覚的に区別されるシグナルが数学的には1つであることを示す。「複数のシグナルが同時に出た」と数えるのは幻想。

MACD の“正しい”使い方と、危険な使い方

MACD の役割を、edge の源として使うのか、edge の記述や執行の補助として使うのかを、必ず先に区別してください。両者の期待値は根本的に異なります。

否定されていない用途(補助)は、edge を主張せずに使う場合です。

  • 記述: モメンタムがどう動いているかの視覚化。チャートの整理、教育、事後の振り返り
  • レジーム記述: 「MACD > 0 かつ Signal > 0」といった状態ラベルを、別戦略の切り替え条件にする
  • 執行の補助: 「MACD がゼロラインを下抜けたら手仕舞う」など、既にある edge の実装の一貫性を保つ参照点
  • 戦略選択の条件変数: 「日足 MACD 上向きなら順張り、下向きなら逆張り」のような環境認識の入力
  • 非常に弱い ML 特徴量: ヒストグラムを他 feature の補助として GBM 等に与える。単独では信号にならない

edge の源として使うべきでない用途(棄却済み)は次のものです。

  • シグナルラインクロス単体(ゴールデン/デッドクロス)
  • ゼロラインクロス単体
  • ヒストグラム符号単体(R1 と等価)
  • ヒストグラムの傾き単体(最弱)
  • ゼロで条件づけたクロス(raw 上位も FDR 不通過)
  • Appel 標準 (12,26,9) の特別視(標準値に統計的優位性なし)

「MACD で勝てている人」がいるように見える理由

もし「MACD で勝てている個人トレーダー」が観測されるなら、それは次のいずれかです。移動平均のケースと同じ理由が MACD にも当てはまります。

  1. サンプル不足で運と実力を区別できない(数十トレードでは分散が大きすぎる)
  2. MACD 以外の要素(時間帯、水平帯、レジーム認識、リスク管理)が実質的な edge の源で、本人が MACD だと思っている
  3. 観測期間がベースライン有利なドリフトと重なった(「相場に居ただけ」で勝った)
  4. 選抜バイアス。勝った人だけが「MACDで勝った」と発信し、負けた人は沈黙する
  5. 報告バイアス。実際は勝っていないが、勝ちを強調する

これらを排除した上で MACD が edge を生む証拠は、本検証では観測されませんでした。

メタ結論

  • 「MACD は売買シグナルを生む」は棄却。 シグナルクロス、ゼロクロス、ヒストグラム符号、ヒストグラム傾き、ゼロで条件づけたクロスのいずれも、FDR 補正後の生存はゼロ。
  • 「Appel 標準 (12,26,9) は特別に効く」も棄却。 上位候補に含まれるが、他のパラメータセットと有意な差はない。
  • 「他ペア/週足なら効く」も棄却。 クロスペア8種と週足で FDR 生存はゼロ。
  • 「ML特徴量としてのMACD」は弱く残存。 MA より僅かに独立情報を持つ兆候(ΔR2=+0.024\Delta R^2 = +0.024)はあるが、絶対値は無意味なレベルで signal シャープは baseline に敗北。
  • 「MACD は完全に無価値」も棄却。 記述、レジーム分類、執行、戦略選択の補助としての機能は否定できない。
  • 正しい位置: MACD は「2つの EMA の差の平滑化された記述」であり、それ以上でもそれ以下でもない。

移動平均との対照でまとめると、両者とも売買 rule としての edge は棄却されます。相違は2点で、MACD では有意な“負”の edge(移動平均の G9 タッチ反発に相当するもの)が今回の範囲では未検出であること、そして ML 特徴量としては MACD のほうが僅かに独立情報を持つ兆候があることです。

この結論の適用範囲と限界

検証は万能ではありません。この結論の射程を明示します。

  • 時間軸: 日足+週足のみ。分足は未検証。
  • 通貨ペア: メジャー4+JPYクロス5の9ペアで確認。CHF系や EUR/GBP 等のマイナーは未検証。
  • 期間: 2005–2026 の21年。他の相場制度や金融政策局面で挙動が異なる可能性。
  • ダイバージェンス: 価格と MACD の乖離検出は本グリッドで扱っていない。「弱気ダイバージェンスで売り」は別の仮説。
  • 複合条件: ADX、ATR、時間帯、経済指標発表日除外との AND 条件は未検証。
  • ML: 単純 GBM + 1 シード。より高度なモデルや時系列 CV、複数シードは未検証。

検証詳細(ラウンド別)

各ラウンドで「どの神話を、どう試し、どうなったか」の詳細です。すべて日足終値ベース、IS/OOS は時系列 50:50、統計判定は Bootstrap 2,000 + Benjamini-Hochberg FDR(α=5%\alpha=5\%)です。

グリッド R1–R5(5家族×8パラメータ×3モード、120実験)

USD/JPY 日足で、5つのルール家族をそれぞれ8パラメータ×3モードで総当たりしました。

  • R1 シグナルラインクロス(24実験): 古典的なゴールデン/デッドクロス。MACD > Signal で long、MACD < Signal で short。上位はすべて long_only で (19,39,9) が中心、最良 OOS +0.180(raw p=0.569p=0.569)。上位候補すべて IS シャープが 0.20.3-0.2 \sim -0.3 と負で、選抜バイアスの典型。short_only は全てマイナス。→ 棄却。
  • R2 ゼロラインクロス(24実験): 「MACD の0抜けはトレンド転換」。MACD > 0 で long、MACD < 0 で short。R1 より OOS シャープが一貫して高く、最良は (19,39,9) long_only の OOS +0.413(p=0.163p=0.163)で IS も僅かにプラス(+0.068)。ただし baseline(+0.388)と同水準止まりで edge とは呼べない。→ 棄却。
  • R3 ヒストグラム符号(24実験): 「反転が早期モメンタム転換を捉える」。R1 と数値が完全一致。hist>0    MACD>Signal\text{hist} > 0 \iff \text{MACD} > \text{Signal} より、教科書が別扱いするのは同じシグナルを2つの視点から説明しているだけであることが検証で確認された。→ 棄却(R1 と等価)。
  • R4 ヒストグラムの傾き(24実験): 「拡大/縮小で勢いの変化を読む」。Hist > Hist[-1] で long。最も弱い家族で、上位でも OOS シャープが 0.06 前後、IS は 0.40.5-0.4 \sim -0.5 と最悪。ヒストグラム「拡大」の視覚的印象と統計的優位性はまるで別物。→ 棄却。
  • R5 ゼロで条件づけたクロス(24実験): 「0より上のゴールデンクロスは強い買い」。MACD > Signal AND MACD > 0 で long。本ノート全体で最良の OOS シャープ(+0.518)かつ最低の pp 値(0.087)を出し、IS も僅かにプラス(+0.071)。しかし120実験中の1つの p=0.087p=0.087 は data snooping の範囲で、FDR 補正後は棄却。

グリッド全体: 最良 OOS +0.518/最悪 0.473-0.473、uncorrected p<0.05p<0.05 は 0 件、FDR 生存 0 件。上位は全て long_only または switch で short_only は上位に来ず、「long 側のフィルタが円安ドリフトの受動的捕捉を再現している」という移動平均のグリッドと同じ構造でした。

追撃 クロスペア(8ペア×3家族、432実験)

「他のペアなら効く」に対し、8ペアで R1(シグナルクロス)、R2(ゼロクロス)、R5(ゼロで条件づけたクロス)を6パラメータ×3モードずつ再実行しました。

PairR1 最良 OOSR2 最良 OOSR5 最良 OOS
EUR/USD0.236-0.236+0.0130.127-0.127
GBP/USD0.024-0.024+0.228+0.160
AUD/USD+0.095+0.0340.055-0.055
EUR/JPY+0.365+0.311+0.215
GBP/JPY+0.309+0.195+0.255
AUD/JPY+0.159+0.188+0.110
NZD/JPY+0.1400.152-0.1520.045-0.045
CAD/JPY+0.173+0.153+0.213

どのペアでも FDR 生存 0。全ペア×全家族の raw pp 値がすべて 0.15 以上で、「有意に近い」候補すら存在しません。最良は EUR/JPY の R1 (5,13,5) long_only の OOS +0.365 ですが、これでも p=0.222p=0.222。USD ペアより JPY クロスの最良 OOS が高い傾向は、JPY クロスが全て円売り側で円安ドリフトを捕捉した効果です。→ 棄却。

追撃 週足(USD/JPY×3家族、54実験)

「ノイズの少ない上位足なら、MACD の遅行性がむしろ有利」に対し、週足にリサンプルして3家族を再実行しました。always-long weekly baseline の OOS シャープは +0.401 です。

家族(fast,slow,sig)modeISOOSpp
R1 シグナルクロス(19,39,9)long_only+0.072+0.4530.136
R2 ゼロクロス(5,13,5)long_only0.014-0.014+0.4360.164
R5 条件づけクロス(12,26,9)long_only+0.138+0.2370.445

週足最良(R1 (19,39,9) long_only の OOS +0.453)は baseline(+0.401)を僅かに上回りますが、差は +0.05 で誤差の範囲、p=0.136p=0.136 は54実験中の1つでは有意でなく、FDR 生存 0。日足で最強だった R5 は週足では最弱になり、「0ライン+クロスの複合条件」は週足で機能しにくいことが示されました。→ 棄却。

追撃 ML特徴量(GBM、3変種)

「単純ルールが棄却されても、機械学習の特徴量としてなら情報を持つ」に対し、翌日 log return を GBM(200 trees, depth 3, lr 0.05)で予測し、3変種を比較しました。移動平均の同検証と対称の設計です。

変種特徴量数OOS R2R^2signal Ann Sharpe
baseline(returnsのみ)140.135-0.1350.427-0.427
baseline + MACD440.125-0.125+0.087
macd_only300.111-0.1110.082-0.082

MACD-only の OOS R2R^20.111-0.111)が baseline(0.135-0.135)を僅かに上回りました(ΔR2=+0.024\Delta R^2 = +0.024)。MA-only が baseline を大きく下回った(0.353-0.353)のと符号が反転しており、この一点だけ移動平均と結論が異なります。特徴量重要度では短期ヒストグラム hist_5_13_5 が macd_only モデルで 0.26 と最上位を占めます。

ただし絶対値は依然マイナスで、macd_only の signal シャープ(0.082-0.082)も baseline + MACD のシャープ(+0.087)も、always-long baseline(+0.388)に遠く及びません。予測改善の中身は baseline の短期反転過学習を弱める regularization 効果が主で、わずかな独立情報がそこに混ざる程度です。→ edge の源にはならない。

累計(全ラウンド): 606実験、正シャープの FDR 生存 0件

参考

  • 検証の方法:本ケースで用いた検証手続き
  • 仮説カタログ:H-01〜H-20 の仮説一覧
  • MACD:教科書としての MACD(本結論を反映して読み直す価値があります)
  • 移動平均線は本当に効くのか:MA の検証(比較対象)
  • Appel, G. (2005); Aspray, T. (1986); Murphy, J. J., Technical Analysis of the Financial Markets, ch. 10