指標実測 01 — MACD コストに届かず

MACDは、何を測っていたのか
1,256設定・478万回の実測

MACDの使い方として入門書が必ず挙げる3つ——ゴールデンクロス/デッドクロス、ゼロラインクロス、 ヒストグラム——を、1,256通りの設定で総当たりしました。 発生した売買は 478万6528回。1本ずつ実測スプレッドと手数料を引きながら最後まで回しています。 結論を先に置きます。コストを引く前の時点で、すでにコストに届いていませんでした。

GROSS EDGE
0.0365 pip
向きの取り分(中央値の絶対値)
MEASURED COST
2.00 pip
往復・実測スプレッド+手数料
GAP
約 55 倍
工夫で埋まる差ではない
この記事の結論

1. 3つの使い方はいずれも、コスト控除前でコイン投げと区別がつきませんでした。 95%信頼区間は、独立の仮定を外した数え方でも0をまたぎます。

2. ヒストグラムが「よく動く時」を当てていたのは事実です。 ただしATRを揃えると、その説明力は 0.984(1.00=差なし)まで落ちました。 当てていたのはヒストグラムではなく、ATRが既に持っていた情報です。

3. 「確認できなかった」であって「存在しない」ではありません。 検証したのは2020〜2025年・10通貨ペア・機械的に判定できるルールだけです。 裁量の使い方や、ここで試していない組み合わせについては何も言えません。

01何を、どう測ったか

まず条件を全部開示します。読んだ人が同じことをやり直せなければ、検証記録の意味がありません。

表1:検証条件。パラメータの範囲は探索を始める前に決め、途中で広げていません。
期間2020.01.01 〜 2025.12.31(6年)
通貨ペアAUDJPY / AUDUSD / EURJPY / EURUSD / GBPJPY / GBPUSD / NZDJPY / NZDUSD / USDCAD / USDJPY(10ペア)
時間足M15 / M30 / H1 / H4
設定数単独条件 1,256 通り(取引が1回も発生しなかった試行は除外)
発生した売買4,786,528 回
手仕舞い一律24本後(判断の裁量を入れないため)
コスト2.00 pip(往復・実測スプレッド+ECN手数料1.0 pip の中央値)

コストの 2.00 pip は仮定値ではありません。同じ期間の実測スプレッドに、ECN口座の往復手数料 1.0 pip を足した中央値です。 時間帯によって実際のコストは動きますので、これは代表値として置いた1つの数字です。

用語:向きの取り分

本シリーズで使う言い方です。各設定の「1取引あたりのグロス損益」を並べたときの、中央値の絶対値を指します。 情報理論の「情報量」とは無関係で、混同を避けるために別の語を当てています。 コストを引く前の値であることが重要です。ここで勝てていなければ、コストを引いた後で勝てる道はありません。

021,256設定は、どこに集まったか

設定を1つずつ点として、1取引あたりのグロス損益を並べます。

MACD単独条件1256設定の1取引あたりグロス損益の分布と、実測コスト2.00 pipの位置
図1:MACD単独条件 1,256 設定の成績分布。山は0のすぐ左に集まり、中央値は −0.0365 pip。実測コスト 2.00 pip との距離は約55倍あります。横軸の外側に散っている少数の設定は、取引数が少なく振れているものです。

中央値がマイナスである点に注意してください。 コストが仮に0だったとしても、この集計では収支が残りません。 もっとも寛大に読んで「この 0.0365 pip の大きさをすべてプラス側に使えたとしたら」と仮定しても、 許容できる往復コストの上限が 0.0365 pip になるだけです。

向きの取り分
(最も寛大に見て)
0.0365
pip
実測コスト
2.00
pip(往復)
埋めるべき差
約55倍
パラメータでは動かない

少なくとも一般的な個人向けFXの取引環境では、往復 0.0365 pip は現実的な水準ではありません。 そしてこの比較に、MACDの良し悪しは一切関係していません。 比べたのは「向きの取り分」と「コスト」の大きさだけです。

03使い方を変えても、順番は変わらない

表2:教科書的な3つの使い方の内訳。「プラスだった設定の割合」は個々の取引の勝率ではありません。100個のEAのうち50個の期待値がプラスでも、それを勝率50%とは呼ばないのと同じことです。
使い方設定数グロスがプラスだった割合1取引あたりグロス
① ゴールデンクロス/デッドクロス25543.5%−0.054 pip
② ゼロラインクロス38845.9%−0.023 pip
③ ヒストグラム絡み61348.5%−0.043 pip
合計1,25646.7%−0.0365 pip

①と②は別物に見えますが、実は同じ1つの流れを、早い順に2つの地点で切り取ったものです。 ②が起きるときには①はすでに起きています。早く切れば速いが外れやすく、遅く切れば確からしいが動き終わっている。 どちらを選んでも、その裏返しを引き受けることになります。

04信頼区間を、独立を仮定せずに引き直す

①のゴールデンクロス/デッドクロスだけを取り出すと、38,706回の取引で平均は +0.2122 pip です。プラスです。 ならば当たっていたのでしょうか——ここで見るべきは平均ではなく、区間の端です。

ただし、素直に計算した区間には落とし穴があります。 取引が互いに独立であると仮定しているからです。実際には独立ではありません。 荒れている時期の取引はまとめて荒れ、24本持つので近接した取引は同じ値動きを分け合います。 独立でないものを独立として数えると、区間は本来より狭く出ます。

ゴールデンクロス/デッドクロス38706回の95%信頼区間を3通りの数え方で比較した図
図2:数え方を変えた3通りの95%信頼区間。3通りとも0をまたぎます。最も高い上限(+0.871 pip)でも、実測コスト 2.00 pip の半分に届きません。この検証では独立を外すと区間が狭くなりましたが、これは常に起きることではありません(同シリーズのボリンジャーバンドでは逆に広がりました)。

区間が0をまたぐというのは、「勝っている」とも「負けている」とも言えないという意味です。 38,706回も取引しておきながら、です。理由は単純で、1取引の振れ幅が 66 pip もあるところで 0.21 pip の差を確かめようとしても、ノイズに埋もれてしまうからです。

05ヒストグラムは、何を当てていたのか

ここからが、この検証でいちばん面白かった部分です。

MACDヒストグラムの絶対値が大きいとき、その後24本の値幅は確かに大きくなります。 これは事実で、実測でもはっきり出ます。「勢いを測れている」と言いたくなる結果です。

しかし、ここでもっと単純なものを隣に置いてみます。ATR——ただ値幅を測って平均しただけの指標です。 ATRを10段に分け、その各段の中でヒストグラムの大小を比べます。 ATRが同じくらいの場面だけを集めて、そこでヒストグラムが差を生むかを見るわけです。

ATRを揃えたときのMACDヒストグラムの説明力を10段階で示した図。中央値0.984
図3:ATRで10段に分け、各段の中で「ヒストグラムが大きい側」と「小さい側」の、その後24本の値幅を比べた比。10段の中央値は 0.984。1.00 は「差なし」を意味します。ATRを揃えた時点で、ヒストグラムの大小はほとんど何も足していません。
読み替え

MACDヒストグラムが「よく動く時」を当てていたのは本当です。 ただし当てていたのはヒストグラムではなく、ATRが既に持っていた情報でした。 ヒストグラムは終値→EMA→差→平均→差と4段の加工を重ねた量ですが、 その4段を通して残ったものは、1段だけのATRとほぼ同じでした。

しかもこれは値幅(どれくらい動くか)の話であって、向き(どちらに動くか)の話ではありません。 値幅が読めても、向きが読めなければ売買にはなりません。02で見たとおり、向きの取り分はコストの55分の1でした。

06自分で確かめる

ここまでの数字を、私を信じずに確かめてほしいと思っています。 検証に使ったMT5のソースコードを全文公開しています。登録もメールアドレスも要りません。

InpReportIncrement を有効にすれば、05の増分検定もそのまま走ります。 ただし本記事と同じ数字は出ません。ここに載せたのは10通貨ペアをまとめ、ペアごとに順位化した値で、 キットは1ペアぶんを回すからです。確かめてほしいのは数字の一致ではなく、手続きのほうです。

書籍版について

『MACDは、何を測っていたのか』(Kindle・準備中)

この記事には結果を載せました。書籍には手続きを書いています。 重複しないよう、記事に入れなかったものを正直に挙げておきます。

  • 増分検定のやり方そのもの——対照の選び方、十分位で割る理由、順位化がなぜ必要か。MACD以外の指標に当てるための手順
  • MACDの中身の分解——12-26-9 が何を計算しているか、なぜ平均を取ると必ず遅れるのか
  • 私が踏んだ失敗——取引が0回の試行を数に入れていた集計ミス。派手な数字が出て、原稿に書いて、検算して、消しました。その経緯を残しています
  • IS/OOS の分割結果——探索に使わなかった期間で、成績がどう変わったか
  • 図版19点と、キットの操作手順

記事だけで完結して構いません。コードは本を買わなくても使えます。

07同じ手続きで測った、他の指標

検証条件: 対象=10通貨ペア(AUDJPY/AUDUSD/EURJPY/EURUSD/GBPJPY/GBPUSD/NZDJPY/NZDUSD/USDCAD/USDJPY)/ 期間=2020.01.01–2025.12.31/時間足=M15・M30・H1・H4/単独条件1,256設定(取引0件の試行は除外)/ 手仕舞い=一律24本後/コスト=同期間の実測スプレッド+ECN往復手数料1.0 pip の中央値 2.00 pip。 信頼区間はブロック・ブートストラップおよびクラスター・ブートストラップ(seed固定・B=4000)で算出。 増分検定の被説明変数は次24本の実現レンジ(各通貨ペアの中央値=1.00に正規化)、ATRはWilder平滑14期間。 掲載した数値はすべて過去データに対する集計であり、フォワードテスト・実口座運用の結果ではありません。

免責: 本ページは検証プロセスと棄却記録の開示を目的とした研究ノートです。投資助言ではありません。 特定の金融商品・取引業者の利用を推奨するものではありません。 バックテスト結果は過去データに基づくものであり、将来の利益を保証するものではありません。FX取引には元本割れのリスクがあります。 本記事の結論は検証した範囲に限られ、MACDに予測能力が存在しないことを示すものではありません。 図表はすべて実測データからPythonで再描画したものであり、生成AIによる作画は含みません。