ウィリアムズ%R:直近の高値・安値の中の位置で売られすぎを見る
- %Rはストキャスティクスのファスト%Kを上下反転したもの。−80/−20の売買は、ファスト%Kの20/80と保有日が100%一致した
- %Rが−80以下になる日は全体の17.4%。RSIが30以下になる日(2.9%)の約6倍で、サインの「質」は薄まる
- %R(14)の−80以下で買い→−20以上で売りは、取引135回・年率1.76%。RSI(#002)の1.69%とほぼ同じで、PFは1.25、期間17日ではわずかにマイナス
%Rは「高値からどれだけ下か」
ウィリアムズ%R(Williams %R)は、直近N日(標準は14日)の最高値と最安値の幅の中で、今日の終値が最高値からどれだけ下にあるかを表します。終値が14日の最高値ちょうどなら0、最安値ちょうどなら−100です。一般に−20以上を「買われすぎ」、−80以下を「売られすぎ」と呼びます。
どこかで見た形です。#005のストキャスティクスのファスト%Kは「最安値から何%上にあるか」でした。%Rは同じ値幅を、上から測っているだけです。
RSIとの違いは「何を測るか」
RSIは「上げ幅と下げ幅の比率」を、%Rは「値幅の中の位置」を測ります。2つの相関は0.828と高く、似た動きをします。ただ、%Rは終値と高値・安値の位置関係だけで決まるので、2〜3日の値動きで端から端まで振れます。19年間で、%R(14)が−80以下だった日は17.4%、−20以上だった日は34.1%。一方、RSI(14)が30以下だった日は2.9%、70以上は7.6%しかありません。
| 2007年4月〜2026年10月 | 売られすぎの日 | 買われすぎの日 | 売られすぎに入った回数 |
|---|---|---|---|
| %R(14) −80以下/−20以上 | 17.4% | 34.1% | 309回(年15.9回) |
| RSI(14) 30以下/70以上 | 2.9% | 7.6% | 46回(年2.4回) |
%Rが−80以下の日、RSIの中央値は38.2でした。そのうちRSIも30以下だったのは15.2%だけです。同じ「売られすぎ」という言葉でも、%Rの−80はRSIの30よりずっと浅い水準を指しています。
「%Rが−20以上なら上がりすぎだから売り」とは限りません。上昇相場では終値が毎日14日高値の近くにあり、%Rは−20以上に張り付きます。19年間で34.1%の日が「買われすぎ」です。−20以上は「天井」ではなく「高値圏で引けた」という事実を示すだけです。
実際の日経平均で見てみる
直近500営業日で、%Rが−80以下だった日は10.8%、−20以上は32.0%でした。2026年10月1日は終値68,956円が14日高値68,995円のほぼ真上で、%Rは−0.6。翌10月2日は−10.9です。このときRSIは65.9、62.0で、まだ70に届いていません。
2025年4月の急落では、%Rは3月31日(35,617円)に−97.2まで下がり、ここで買いのサインが出ました。RSIは29.1でした。4月7日(31,136円)には%Rが−95.4、RSIが14.0です。%Rは「どれだけ深く下げたか」を区別できず、−90台に張り付きます。
検証:#002と同じ「水準で買い、水準で売る」
ルール:%R(14)が−80以下になったら終値で買い、−20以上になったら終値で売る。#002のRSI「30以下で買い→70以上で売り」と同じ構造です。比較として、#005のスロー・ストキャスティクス(%Dが20未満で%Kが%Dを上抜けたら買い、80超で下抜けたら売り)、ファスト%Kの20以下→80以上も並べました。条件は共通の検証ルールのとおりです。
| 戦略 | 最終資産 | 年率 | 最大下落率 | 取引 | 勝率 | PF | 平均保有 |
|---|---|---|---|---|---|---|---|
| 買い持ち | 3.93倍 | 7.3% | −61.4% | — | — | — | — |
| %R14 −80以下→−20以上 | 1.40倍 | 1.8% | −54.1% | 135 | 69% | 1.25 | 14日 |
| RSI14 30以下→70以上(#002) | 1.38倍 | 1.7% | −61.4% | 17 | 82% | 2.04 | 136日 |
| スロー 20/80 交差(#005) | 1.30倍 | 1.4% | −58.5% | 74 | 69% | 1.30 | 23日 |
| ファスト%K 20以下→80以上 | 1.40倍 | 1.8% | −54.1% | 135 | 69% | 1.25 | 14日 |
| %R14 −80以下→−50以上 | 1.61倍 | 2.5% | −45.3% | 184 | 72% | 1.28 | 8日 |
%Rとファスト%Kの行は、数字が1つ残らず同じです。保有していた日も100.0%一致しました。%Rで売買することは、ファスト・ストキャスティクスで売買することと同じです。
RSIと比べると、取引は17回から135回に増え、最大下落率は−61.4%から−54.1%に改善しました。ところが年率は1.76%と1.69%で、ほとんど変わりません。PFは2.04から1.25に落ちました。2つのルールで保有/現金が一致した日は58.0%、両方が保有していた日は23.5%です。
道のりは違います。RSIは2007年4月から持ち続け、2008年は買い持ちと同じ−42.12%。%Rは途中で売り買いを挟んで−34.24%にとどめました。逆に2024年7月26日(37,667円)に買ったRSIは、2024年8月5日と2025年4月の急落を抱えたまま2025年6月27日(40,151円)まで持ち続けました。%Rはこの間も短い売買を繰り返し、2025年3〜4月の最大下落は−13.0%(買い持ち−18.1%)でした。
サインが増えた分、1回の「重み」が軽くなった
RSIの30割れは年に2.4回しか来ない分、来たときの戻りは大きい。%Rの−80入りは年15.9回来ますが、その後の20日間は普段の平均とほぼ同じです。回数と引き換えに、入口の優位性はほとんど消えていました。
主ルールの中身を見ると、勝ちの平均は+2.80%、負けの平均は−4.96%。−20に届いたら売るので、最大の勝ちでも+5.73%にとどまります。一方、最大の負けは2008年8月14日(12,957円、%R −89.0)に買い、11月4日(9,115円)まで54日持った−29.85%です。−10%より悪い取引は6回で合計−91.44%。135回すべての合計+51.75%を上回る損を、6回で出しています。コストを除くと年率3.19%(PF1.39)なので、135回分の往復コストも重荷です。
期間を変えると、結果が大きく揺れる
期間を11日にすると年率2.68%・PF1.31、17日にすると年率−0.002%(最終資産0.9997倍)でした。5日から30日まで1日ずつ変えた26通りでは、年率がプラスなのは24通りでしたが、PF1.3以上は8通り、取引100回以上は14通りにとどまります。最大下落率は26通りすべてで買い持ちより小さく、「大きな下げを少し和らげる」効果だけは安定していました。
参考として、結果を見たあとに水準を変えた版も試しました。−90以下で買い→−10以上で売りは取引106回・年率3.36%・PF1.50、RSIと同じ目盛の−70以下→−30以上は取引165回・PF1.33です。ただしどちらも後から選んだ設定なので、参考扱いです。
読み解き
- %RはRSIの上位互換ではない。取引回数(17→135回)と最大下落率(−61.4%→−54.1%)は改善したが、年率は1.69%→1.76%とほぼ同じで、PFは2.04→1.25に下がった。弱点が別の場所に移っただけ。
- −80はRSIの30よりずっと浅い。−80以下の日は17.4%で、RSI30以下(2.9%)の約6倍。20日後の平均は+0.82%と全日+0.75%に近く、入口の優位性が薄まっている。
- 中身はファスト・ストキャスティクスそのもの。保有日は100%一致した。#005のスロー20/80(PF1.30、取引74回)と比べても、平均を取らない分だけ回数が増え、PFは下がった。
成績のまとめ(%R14 −80以下→−20以上)
PFは1.25で、期間を17日にすると年率−0.002%とわずかにマイナスになった。前半(〜2016年9月)は年率−3.3%で、後半6.7%は上昇相場に助けられた面が大きい。年率1.8%は買い持ち7.3%の4分の1程度で、最大下落率−54.1%も買い持ちとの差は小さい。「RSIより優れているか」への答えは、「回数は増えるが、成績は変わらない」である。
自分で試す(TradingView)
//@version=6
indicator("Williams %R −80/−20", overlay = false)
len = input.int(14, "期間")
lo = input.int(-80, "売られすぎ")
hi = input.int(-20, "買われすぎ")
hh = ta.highest(high, len)
ll = ta.lowest(low, len)
wr = (hh - close) / (hh - ll) * -100 // ta.wpr(len) と同じ
var bool holding = false
if not holding and wr <= lo
holding := true
else if holding and wr >= hi
holding := false
plot(wr, "%R", color = color.blue)
plot(ta.rsi(close, len) - 100, "RSI−100(比較用)", color = color.orange)
hline(hi, "−20", color = color.red)
hline(lo, "−80", color = color.green)
bgcolor(holding ? color.new(color.green, 90) : na, title = "保有中")

