研究所TOP指標の実測 / ストキャスティクス
指標実測 03 — ストキャスティクス 言い換えだった

「買われ過ぎ」が指していたのは、別のものだった
ストキャスティクスは何を測っていたのか

前の2つとは、負け方が違いました。 MACDは教科書の主張が支持されず、ボリンジャーバンドは主張が支持されたのに届かなかった。 ストキャスティクスは主張の中身が、そもそも別のものだったという結末です。 %K と「直近14本の騰落率」の順位相関は 0.855。ほぼ同じことを言っています。

RANK CORRELATION
0.855
%K と 直近14本騰落率
GROSS EDGE
0.0085 pip
向きの取り分(中央値の絶対値)
GAP
約 235 倍
実測コスト 2.00 pip との差
この記事の結論

1. %K は「買われ過ぎ」を判定していません。 直近14本で価格が上がったかどうかを、0〜100に置き換えて言い直しているだけでした。 順位相関 0.855——1.000 なら「完全に同じこと」を意味する尺度です。

2. %K が 80〜85 だった場面の 97.3% は、単に直前に上がっていた場面でした。 「上がりすぎ」ではなく「上がった」を検出しています。

3. 売買としても、コストに届きませんでした。 80/20水準の逆張りは36,438回、%K×%D クロスは121,813回。どちらも95%信頼区間が0をまたぎます。

01%K は、何を計算しているのか

式そのものを見れば、答えは半分見えています。 %K は「直近14本の高値と安値のあいだで、いまの終値がどのあたりにいるか」を 0〜100 で表した数です。

ここで、この定義には避けられない性質が2つあります。

表1:%K の定義から自動的に出てくる2つの性質。指標の欠陥ではなく、そう作られているということです。
性質中身
窓の中には必ず 100 と 0 がある分母は「直近14本の高値 − 安値」です。窓の中には定義上、必ず高値の点と安値の点が含まれます。つまり %K は、その窓の中での相対位置しか表せません
価格が動かなくても %K は動く窓が1本進めば、いちばん古い1本が捨てられます。それだけで高値や安値が入れ替わり、価格が1銭も動いていないのに %K が 90 から 83.3 へ下がることが起こります

「買われ過ぎ」という言葉は、ふつう絶対的な高さを想像させます。 しかし %K が言えるのは直近14本の中での位置だけです。 基準も、正しい位置も、計算式のどこにも入っていません。

02%K と、直近の騰落率を並べる

定義から予想はつきますが、実測で確かめます。 %K と「直近14本での騰落率」を、10通貨ペア・6年分・497,385本ぶん並べました。

%Kと直近14本の騰落率の関係を示す密度図。順位相関0.855の明瞭なS字カーブ
図1:%K(縦)と直近14本の騰落率(横)の密度。順位相関は 0.855。1.000 なら「完全に同じこと」を意味します。0.855 は、ほぼ同じです。上がれば %K は上がり、下がれば下がる——それ以上のことをしていません。
言い換えの検定

指標が「独自の情報」を持っているかを確かめる最短の方法は、 もっと単純なものを隣に置いて、同じことを言っていないか見ることです。 ここで隣に置いたのは「直近14本で上がったか下がったか」という、指標ですらない生の値動きです。 %K は、その値動きを 0〜100 の目盛りに載せ替えたものに近い、という結果になりました。

03「買われ過ぎ」の正体

相関だけでは実感しにくいので、もう少し直接的に見ます。 %K がある値だったとき、その直前に価格は上がっていたのかを数えました。

%Kの水準別に、直前14本で価格が上がっていた割合を示す棒グラフ。80-85で97.3%
図2:%K の水準ごとに、直前14本で価格が上がっていた割合。%K が 80〜85 だった場面の 97.3% は、単に直前に上がっていた場面でした(中央値で +31 pip)。%K が高いことは「上がりすぎ」ではなく「上がった」を意味しています。

つまり「%K が 80 を超えた、買われ過ぎだ、そろそろ下がる」という判断は、 実質的に「最近上がった、だから下がる」と言っているのと変わりません。 そう言い換えてしまうと、根拠として弱く聞こえるはずです。実測が示しているのは、その弱さです。

04売買として回すと、どうなるか

ここまでは指標の中身の話です。実際に売買として回した結果も出しておきます。

表2:2つの使い方の実測。「勝率」は個々の取引の勝ち負けです(設定の割合ではありません)。
使い方取引数勝率平均(グロス)95%信頼区間
80/20水準の逆張り36,43849.8%+0.180 pip[−0.495, +0.855]
%K × %D クロス121,81350.0%+0.060 pip[−0.310, +0.429]

平均はどちらもプラスです。しかし見るべきは平均ではなく区間の端で、どちらも0をまたぎます。 12万回というのは、このシリーズで扱ったいちばん大きなサンプルです。それだけ回数があっても、0 と区別がつきませんでした。

なお %K × %D のクロスは、第1章で見た定義からすると当然の結果でもあります。 %D は %K の平均なので、このクロスは「%K が自分自身の平均を追い越した」と言っているにすぎません。

80/20水準の逆張り36438回の95%信頼区間を3通りの数え方で比較した図
図3:80/20水準の逆張りについて、独立の仮定を段階的に外した3通りの95%信頼区間。3通りとも0をまたぎます。最も高い上限(+0.899 pip)でも、実測コスト 2.00 pip の半分に届きません。
向きの取り分
(最も寛大に見て)
0.0085
pip
実測コスト
2.00
pip(往復)
埋めるべき差
約235倍
水準を変えても動かない

05自分で確かめる

検証に使ったMT5のソースコードを全文公開しています。登録もメールアドレスも要りません。 InpReportRestatement を有効にすれば、02の「言い換えの検定」がそのまま走ります。

このキットにはもう1つ、InpPeekFuture という入力があります。 意図的に未来を先読みする教材用の機能で、既定では無効です。 有効にすると成績が跳ね上がります。バックテストの好成績が、ロジックの良さではなく手続きの穴で出ることがある—— それを一度自分の目で見ておくと、他人の成績表の読み方が変わります。

書籍版について

『ストキャスティクスは、何を測っていたのか』(Kindle・準備中)

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

  • 言い換えを見抜く手順——対照に何を選ぶか、順位相関で何が言えて何が言えないか。ストキャスティクス以外の指標に当てるための手順
  • %K・%D・スローイングの分解——14-3-3 が何を計算しているか、平滑を1段増やすと何が起きるか
  • 先読みの実演——反則をした時に成績がどう跳ねるかを、数字と図で追った章
  • 条件を足していくと何が起きるか——取引数・成績・振れ幅の動きと、その読み方
  • 私が踏んだ失敗と、IS/OOS の分割結果、図版13点

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

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

検証条件: 対象=10通貨ペア(AUDJPY/AUDUSD/EURJPY/EURUSD/GBPJPY/GBPUSD/NZDJPY/NZDUSD/USDCAD/USDJPY)/ 期間=2020.01.01–2025.12.31/ストキャスティクス 14-3-3・1時間足・手仕舞い一律24本後/ %K と騰落率の比較は 497,385本、騰落率は 終値比 (close/close[-14]−1)×10000 で算出/ コスト=同期間の実測スプレッド+ECN往復手数料1.0 pip の中央値 2.00 pip。 信頼区間はブロック・ブートストラップおよびクラスター・ブートストラップ(seed固定・B=4000)で算出。 掲載した数値はすべて過去データに対する集計であり、フォワードテスト・実口座運用の結果ではありません。

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