MACDのクロスは効くのか
トレンド系オシレーターの代表格である MACD(Moving Average Convergence Divergence)を、網羅的に検証しました。シグナルラインクロス、ゼロラインクロス、ヒストグラムの符号、ヒストグラムの傾き、ゼロで条件づけたクロスという5つの代表的ルールを、8つのパラメータセットと3つのモードで総当たりし、さらにクロスペア、週足、機械学習の特徴量まで追撃しました。対象は USD/JPY を中心に9通貨ペア、日足21年ぶんです。
検証の前提とデータ
「606 実験で棄却」という主張自体が、検証可能でなければ意味がありません。用いたデータと条件を明示します。
| 項目 | 内容 |
|---|---|
| 対象通貨ペア | USD/JPY(主)/メジャー: EUR/USD、GBP/USD、AUD/USD / JPYクロス: EUR/JPY、GBP/JPY、AUD/JPY、NZD/JPY、CAD/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 補正() |
| 乱数シード | 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 シグナルクロス | ゴールデン/デッドクロスで売買 | 24 | 0 |
| グリッド | R2 ゼロクロス | MACDの0抜けはトレンド転換 | 24 | 0 |
| グリッド | R3 ヒストグラム符号 | 反転が早期モメンタム転換を捉える | 24 | 0 ※R1と等価 |
| グリッド | R4 ヒストグラム傾き | 拡大/縮小で勢いの変化を読む | 24 | 0 |
| グリッド | R5 ゼロで条件づけたクロス | 0より上のクロスは強い買い | 24 | 0 |
| 追撃 | クロスペア8種×3家族 | 他のペアなら効く | 432 | 0 |
| 追撃 | 週足USD/JPY×3家族 | ノイズの少ない上位足なら効く | 54 | 0 |
| 追撃 | ML特徴量(GBM) | 機械学習の特徴量としてなら | 3変種 | |
| 累計 | 606 | 0 |
各ラウンドで具体的に何を、どのパラメータで、どう試したかは、ページ末尾の「検証詳細(ラウンド別)」に全て記載しています。
検証で得られた事実
グリッド、クロスペア、週足、ML 特徴量で得た、累計 606 実験+ML検証のうち:
- FDR 補正後の positive-Sharpe 生存者は 0 件。、8 パラメータ、5 家族、9 通貨ペア、週足のいずれでも、支持する統計的証拠は一切得られなかった。
- ベースライン(always long)の OOS シャープは +0.388。上位候補には baseline を超えるものもある(R5 の
(19,39,9) long_onlyで OOS +0.518)が、いずれも FDR 不通過。 - 上位候補は IS シャープ ≈ 0 かマイナスで OOS だけ勝つ、という選抜バイアスの典型が再現。
- R1(シグナルクロス)と R3(ヒストグラム符号)は数値が完全一致。教科書は別々のシグナルとして解説するが、 より実装上は同じ1つのシグナル。
- 短期の売り(short-only)は全滅。円安ドリフト期に円買い方向を取る戦略の構造的敗北で、これは MA と同じ。
- クロスペア8種(メジャー3+JPYクロス5)も全滅。MACD の失敗は USD/JPY 固有問題ではない。
- 週足も棄却。上位でも baseline を +0.05 上回る誤差レベルで、FDR 不通過。
- ML 特徴量としては、MACD-only の OOS ()が baseline()を僅かに上回った()。MA-only()が baseline を大きく下回ったのと対照的で、この一点だけ MA と結論が異なる。ただし絶対値は依然マイナスで、signal シャープ()は always-long に遠く及ばない。
MACD が edge を持たない構造的な理由
以下は検証結果からの帰納的な解釈です(仮説であり、証明ではありません)。
- MACD は MA の派生であり、MA と同じ理由で edge が消えている。MACD は という「差」であり、個々の MA が edge を持たないことは移動平均のケースで確認済み。その差分と平滑化(Signal)にも独立した edge は残らない。
- シグナルクロスはヒストグラム符号と等価。 の定義から、。教科書は2つのシグナルとして語るが、別ルールと思って併用しても独立情報にはならない。
- ヒストグラムの傾き(R4)は最弱。「拡大/縮小」は二階微分に近い量でノイズが乗りやすい。IS シャープが最も低い家族( 前後)で、「早期モメンタム転換の検出」の実データ的裏付けは弱い。
- ゼロで条件づけたクロス(R5)の「僅かな優位性」は偶然の範疇。日足最良候補(OOS +0.518)を出したが、120 実験のうちの1つの は data snooping の帯にある。教科書のニュアンスの方向は正しくても、統計的優位性の水準にはない。
- ベースラインの受動的ドリフトを超えられない。USD/JPY 21 年の円安ドリフトを long 側に張った受動的 baseline が捕捉する。MACD の long_only rule は「baseline とほぼ同じかそれ以下」に収束し、シグナルを見て入ることで削られたリターン(露出低下とタイミングコスト)を回収できない。
MA より弱い独立情報が「一点だけ」残った
ML 特徴量の検証で、移動平均のケースと明確に異なる所見が1つ観測されました。翌日 log return を GBM で予測し、特徴量を差し替えて比較した結果です。
- MA-only:OOS 。baseline()より悪化した。
- MACD-only:OOS 。baseline より僅かに改善した()。
特徴量重要度でも、MACD-only モデルで短期ヒストグラム hist_5_13_5 が 0.26 と最上位を占めます。MACD ヒストグラム(とくに短期の (5,13,5) と (5,20,5))が、lagged returns だけでは捕捉できないモメンタムの二階微分的な情報を、非線形モデルに与える可能性を示唆します。
ただし、この「独立情報」は絶対値としてはゼロに近いものです。OOS は「予測が平均値予測より悪い」状態のままで、そこから作った売買 signal のシャープ()は「相場に居るだけ」の baseline()の遥か下にあります。「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 にも当てはまります。
- サンプル不足で運と実力を区別できない(数十トレードでは分散が大きすぎる)
- MACD 以外の要素(時間帯、水平帯、レジーム認識、リスク管理)が実質的な edge の源で、本人が MACD だと思っている
- 観測期間がベースライン有利なドリフトと重なった(「相場に居ただけ」で勝った)
- 選抜バイアス。勝った人だけが「MACDで勝った」と発信し、負けた人は沈黙する
- 報告バイアス。実際は勝っていないが、勝ちを強調する
これらを排除した上で MACD が edge を生む証拠は、本検証では観測されませんでした。
メタ結論
- 「MACD は売買シグナルを生む」は棄却。 シグナルクロス、ゼロクロス、ヒストグラム符号、ヒストグラム傾き、ゼロで条件づけたクロスのいずれも、FDR 補正後の生存はゼロ。
- 「Appel 標準
(12,26,9)は特別に効く」も棄却。 上位候補に含まれるが、他のパラメータセットと有意な差はない。 - 「他ペア/週足なら効く」も棄却。 クロスペア8種と週足で FDR 生存はゼロ。
- 「ML特徴量としてのMACD」は弱く残存。 MA より僅かに独立情報を持つ兆候()はあるが、絶対値は無意味なレベルで 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()です。
グリッド 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 )。上位候補すべて IS シャープが と負で、選抜バイアスの典型。short_only は全てマイナス。→ 棄却。 - R2 ゼロラインクロス(24実験): 「MACD の0抜けはトレンド転換」。
MACD > 0で long、MACD < 0で short。R1 より OOS シャープが一貫して高く、最良は(19,39,9) long_onlyの OOS +0.413()で IS も僅かにプラス(+0.068)。ただし baseline(+0.388)と同水準止まりで edge とは呼べない。→ 棄却。 - R3 ヒストグラム符号(24実験): 「反転が早期モメンタム転換を捉える」。R1 と数値が完全一致。 より、教科書が別扱いするのは同じシグナルを2つの視点から説明しているだけであることが検証で確認された。→ 棄却(R1 と等価)。
- R4 ヒストグラムの傾き(24実験): 「拡大/縮小で勢いの変化を読む」。
Hist > Hist[-1]で long。最も弱い家族で、上位でも OOS シャープが 0.06 前後、IS は と最悪。ヒストグラム「拡大」の視覚的印象と統計的優位性はまるで別物。→ 棄却。 - R5 ゼロで条件づけたクロス(24実験): 「0より上のゴールデンクロスは強い買い」。
MACD > Signal AND MACD > 0で long。本ノート全体で最良の OOS シャープ(+0.518)かつ最低の 値(0.087)を出し、IS も僅かにプラス(+0.071)。しかし120実験中の1つの は data snooping の範囲で、FDR 補正後は棄却。
グリッド全体: 最良 OOS +0.518/最悪 、uncorrected は 0 件、FDR 生存 0 件。上位は全て long_only または switch で short_only は上位に来ず、「long 側のフィルタが円安ドリフトの受動的捕捉を再現している」という移動平均のグリッドと同じ構造でした。
追撃 クロスペア(8ペア×3家族、432実験)
「他のペアなら効く」に対し、8ペアで R1(シグナルクロス)、R2(ゼロクロス)、R5(ゼロで条件づけたクロス)を6パラメータ×3モードずつ再実行しました。
| Pair | R1 最良 OOS | R2 最良 OOS | R5 最良 OOS |
|---|---|---|---|
| EUR/USD | +0.013 | ||
| GBP/USD | +0.228 | +0.160 | |
| AUD/USD | +0.095 | +0.034 | |
| 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.140 | ||
| CAD/JPY | +0.173 | +0.153 | +0.213 |
どのペアでも FDR 生存 0。全ペア×全家族の raw 値がすべて 0.15 以上で、「有意に近い」候補すら存在しません。最良は EUR/JPY の R1 (5,13,5) long_only の OOS +0.365 ですが、これでも 。USD ペアより JPY クロスの最良 OOS が高い傾向は、JPY クロスが全て円売り側で円安ドリフトを捕捉した効果です。→ 棄却。
追撃 週足(USD/JPY×3家族、54実験)
「ノイズの少ない上位足なら、MACD の遅行性がむしろ有利」に対し、週足にリサンプルして3家族を再実行しました。always-long weekly baseline の OOS シャープは +0.401 です。
| 家族 | (fast,slow,sig) | mode | IS | OOS | |
|---|---|---|---|---|---|
| R1 シグナルクロス | (19,39,9) | long_only | +0.072 | +0.453 | 0.136 |
| R2 ゼロクロス | (5,13,5) | long_only | +0.436 | 0.164 | |
| R5 条件づけクロス | (12,26,9) | long_only | +0.138 | +0.237 | 0.445 |
週足最良(R1 (19,39,9) long_only の OOS +0.453)は baseline(+0.401)を僅かに上回りますが、差は +0.05 で誤差の範囲、 は54実験中の1つでは有意でなく、FDR 生存 0。日足で最強だった R5 は週足では最弱になり、「0ライン+クロスの複合条件」は週足で機能しにくいことが示されました。→ 棄却。
追撃 ML特徴量(GBM、3変種)
「単純ルールが棄却されても、機械学習の特徴量としてなら情報を持つ」に対し、翌日 log return を GBM(200 trees, depth 3, lr 0.05)で予測し、3変種を比較しました。移動平均の同検証と対称の設計です。
| 変種 | 特徴量数 | OOS | signal Ann Sharpe |
|---|---|---|---|
| baseline(returnsのみ) | 14 | ||
| baseline + MACD | 44 | +0.087 | |
| macd_only | 30 |
MACD-only の OOS ()が baseline()を僅かに上回りました()。MA-only が baseline を大きく下回った()のと符号が反転しており、この一点だけ移動平均と結論が異なります。特徴量重要度では短期ヒストグラム hist_5_13_5 が macd_only モデルで 0.26 と最上位を占めます。
ただし絶対値は依然マイナスで、macd_only の signal シャープ()も 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