研究所TOP指標の実測 / 移動平均
指標実測 05 — 移動平均 数え方で消えた

設定画面のつまみは3つ。
実質的に動いたのは、1つだけでした

移動平均には設定項目が3つあります——何を平均するか・どう平均するか・何本を平均するか。 入門書はこの3つを、だいたい同じ分量で説明します。 1つずつ分けて測ったところ、1つ目はコストの5分の1しか動かず2つ目に並んでいる4つのうち2つは同じ式でした。 そして 25/75 のゴールデンクロスだけが信頼区間0をまたぎませんでしたが、 それは8通り試したうちの1つです。

何を平均するか
0.36 pip
5通り動かしたときの開き
SMMA と EMA の差
0.000000000000
6年ぶんの終値で、丸め誤差すら出ない
8回ぶんに補正すると
8 / 8 が消滅
全部が0をまたぐ。当たりは試した回数のせいだった
この記事の結論

1. 3つのつまみは、同じ重さではありませんでした。 適用価格を5通り変えたときの開きは 0.36 pip、計算方法を4通りで 3.91 pip、期間を8通りで 4.38 pip。 1回のコストは 2.00 pip です。

2. MT5のメニューに、同じものが2回並んでいます。 SMMA(n) = EMA(2n−1)。10通貨ペア・6年ぶんの終値で計算して、差は 0.000000000000 でした。 「どちらを使うべきか」という記事が書かれている2つが、同じ式です。

3. 唯一の「当たり」は、試した回数で説明がつきました。 25/75 の区間は [+0.063, +3.118] で0をまたぎません。しかし8通り試しています。 8回のうち少なくとも1回そうなる確率は 33.7%、期待件数は 0.4件。実測は1件。 試した回数で基準を厳しくすると、8通りすべてが0をまたぎました

01つまみは3つ。ただし、同じ重さではない

移動平均の式は1行です。直近n本の価格を足して、nで割る。 しかしその1行にも、選択が3つ隠れています。

そこで、一度に1つだけ動かしました。 基準は 25/75 の単純移動平均・終値・24本保有。10通貨ペア・1時間足・2020年〜2025年です。

移動平均の3つの設定項目を動かしたときの成績の開きを比較した横棒グラフ
図1:つまみを1つずつ動かしたときの、成績の最大−最小。「何を平均するか」はコストの5分の1しか動きません。「どう平均するか」の 3.91 pip も、後述のとおり遅れを揃えると 1.83 pip まで縮みます。

1つ目が動かない理由は、測れば分かります。適用価格が終値とどれだけ違うかを、 1本ごと25本の平均にした後で比べました。

表1:終値との差(pip・絶対値の中央値)。平均を取った時点で、差が4分の1前後まで縮みます。
適用価格1本ごとの差25本平均にした後
始値5.80 pip1.44 pip
中値3.40 pip0.80 pip
代表値2.27 pip0.53 pip
加重終値1.70 pip0.40 pip

当たり前のことです。平均は、差を消すための道具だからです。 その道具に何を入れるかで結果が大きく変わるなら、平均が効いていないことになります。

「終値より代表値のほうが良い」という助言は、仮に正しかったとしても、 あなたの損益をほとんど変えません。5通りの区間は、すべて重なっています。

02メニューに、同じものが2回並んでいる

2つ目のつまみ——計算方法——は、大きく動きました。同じ 25/75 のクロスが、 SMA で +1.5939 pip、SMMA で −2.3137 pip。符号まで変わります。

ここで、表を作りながら気づいたことがあります。

4巻ぶん、別のものとして扱っていました

Wilder の平滑(SMMA)は、前の値に (n−1)/n を掛けて、新しい値を 1/n だけ足します。 EMA は、前の値に 1−α を掛けて、新しい値を α だけ足します。 α = 1/n と置けば、同じ漸化式です。

EMA の期間表記との関係は α = 2/(span+1) なので、span = 2n − 1。つまり——

SMMA(n) = EMA(2n−1)。 10通貨ペア・6年ぶんの終値で両方を計算して差を取ると、最大の差が 0.000000000000。 丸め誤差すら出ません。MT5のメニューには、別々の名前で並んでいます。

同じ式なら、なぜ表の中で成績が違ったのか。期間の目盛りが違うからです。 SMMA(25) は EMA(49) と同じものであって、EMA(25) ではありません。

4つの移動平均について、期間25のときの遅れを比較した横棒グラフ。SMMAだけ24本
図2:傾き一定の直線を入れて測った遅れ。同じ「期間25」でも、遅れは 8本から24本まで3倍ちがいます。実測は理論値(重みの重心)と小数第2位まで一致しました。SMMA だけ2倍なのは、それが EMA(49) だからです。

だとすれば、4通りの差は「計算方法の差」ではなく「実質的な長さの差」かもしれません。 遅れが SMA 25/75 と同じになるように期間を選び直して、回し直しました。

4通りの開きは 3.9076 pip から 1.8274 pip へ縮みました。 半分以上が、遅れの差で説明できたことになります。 そして SMMA 13/38 の行は、EMA 25/75 の行と取引数まで一致しました。同じものだからです。

第4巻に残した宿題

第4巻(RSI)で「RSIが生の引き算に負けるのは平滑の遅れのせいだろう」と書き、 「ただしこれは説明であって、検証ではありません」と断りました。 ここでその検証をしたことになります。遅れは実際に効いていました。 ただし半分は残りました。残った差は、交差の回数——LWMA 7,191回 対 SMMA 2,766回——に対応します。 敏感な平滑は線が細かく震え、震えれば交差が増え、交差が増えればコストを払う回数が増えます。

03唯一の「当たり」を、疑う

3つ目のつまみ——期間——が、いちばん大きく動きました。 短期と長期の比を 1:3 に固定し、短期を 3・5・9・14・25・50・100・200 と変えて回しました。

0をまたがなかったのは、25/75 の1行だけです。 このシリーズで、教科書どおりの使い方が2つ目の関門を通ったのは初めてでした。

ここで手を止めます。8回検定して1回だけ「当たり」が出るのは、珍しいことでしょうか。

8通りの期間設定について、通常の95%信頼区間と多重検定補正後の区間を並べた図
図3:太い帯が通常の95%信頼区間、細い帯が試した回数(8回)で基準を厳しくした区間。補正前は 25/75 だけが0の右側にありますが、補正すると8通りすべてが0をまたぎます

1回あたり5%で誤って「当たり」が出るとすると、8回のうち少なくとも1回そうなる確率は 33.7%3回に1回は起きます。期待される件数は 0.4件で、実測は1件でした。

第2章で「このシリーズで初めて2つ目の関門を通った」と書きました。取り消します。 正確には、通ったかどうかを、この検証は判定できませんでした

これは、第3巻の兄弟です

第3巻結果による選別を扱いました。 ルール自体はリアルタイムで実行できるのに、結果として良かった取引だけを後から抜き出して数えると、別の本のように見える、という話です。

ここで起きているのは、その兄弟——設定による選別です。 やっていることは同じで、たくさん並べて、良かったものを持ち帰る。 違うのは、後者が悪いことだと思われていないことです。むしろパラメータ最適化と呼ばれ、丁寧な仕事だとされています。 最適化とは、当たりくじを引くまで引き直すことです。引いた回数を言わなければ、その1枚は特別に見えます。

念のため、時期でも割りました。IS(最初の80%)が +1.5911 pip、OOS(未使用の20%)が +1.6053 pipほとんど同じです。第4巻のように「最後の20%が引っ張り上げていた」形にはなっていません。

正直に書けば、ここは第4巻よりずっと素直な結果でした。 時期で割っても壊れませんでした。壊したのは、試した回数のほうです。

04そもそも、何を足していたのか

最後に、第1巻から使っている増分検定をかけました。 移動平均から取り出せる量(終値とMAの乖離/MAの傾き)を、 直近25本の騰落率——指標ですらない、ただの引き算——と比べます。

表2:順位相関と増分検定。増分は 0.000 なら「増える情報がない」を意味します。1回のコストは 2.00 pip です。
組み合わせ順位相関何を揃えて、何を見るか増分
乖離 と 騰落率0.840騰落率を揃えて、乖離を見る+0.0244
傾き と 騰落率0.940騰落率を揃えて、傾きを見る−0.0254
乖離 と 傾き0.729傾きを揃えて、騰落率を見る+0.0028

MAの傾きと、直近25本の騰落率の順位相関が 0.940。 考えてみれば当たり前です。25本平均が上を向いているというのは、 新しく入った値が、抜けていった値より大きいということで、 それは「最近上がった」とほぼ同じことを言っています。

増分はどの向きでも 0.03 pip 未満。コストは 2.00 pip なので、桁が2つ違います第3巻の %K第4巻の RSI と、同じ場所に着きました。

MAの傾きと
直近25本騰落率
0.940
順位相関
増分(最大)
0.0254
pip
実測コスト
2.00
pip(往復)

05自分で確かめる

検証に使ったMT5のソースコードを全文公開しています。登録もメールアドレスも要りません。

InpShowLag を有効にすると、傾き一定の直線を入れて図2の遅れをその場で測りますInpPeriodMap で8通りの期間を一度に回し、InpCountTrials何通り試したかを数えて、その回数で基準を厳しくして測り直します

この2つは、必ずセットで回してください。 地図だけ見て「1つ当たった」で終わるのが、この巻の落とし穴そのものだからです (そのため InpCountTrials は既定で有効にしてあります)。

書籍版について

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

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

  • 「速い」の2つの意味——「直近に敏感」と「遅れが小さい」は別の性質であること。SMA(25) と EMA(25) の遅れが同じ 12.00 本である理由
  • 遅れの揃え方——4通りの期間をどう選び直したか、その全表
  • 「効く」を判定する8つの関門——第5巻で足した8つ目と、それを2つ目の直後に置く理由
  • よく言われる設定の全結果——5/20・5/25・50/200・12/26 を含む比較
  • 私が踏んだ2つの間違いの全過程。図版12点

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

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

検証条件: 対象=10通貨ペア(AUDJPY/AUDUSD/EURJPY/EURUSD/GBPJPY/GBPUSD/NZDJPY/NZDUSD/USDCAD/USDJPY)/ 期間=2020.01.01–2025.12.31/1時間足・373,562本/手仕舞い一律24本後/ 売買は「短期MAが長期MAを上抜けたら買い、下抜けたら売り」/ コスト=同期間の実測スプレッド+ECN往復手数料1.0 pip の中央値 2.00 pip。 信頼区間はブロック・ブートストラップ(通貨ペア×年月・seed固定・B=4000)で算出。 多重検定の補正はボンフェローニ法(α=0.05/8)によります。 遅れは傾き一定の直線に対する応答で測定し、理論値(重みの重心)と一致することを確認しています。 掲載した数値はすべて過去データに対する集計であり、フォワードテスト・実口座運用の結果ではありません。

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