ROC(変化率):一定期間の上げ下げの勢いを測る
- ROC(20)がプラスの間だけ持つと、年率2.93%・最大下落率−31.3%・取引253回・PF1.31。後半の年率は5.47%だった
- ただし「上がっている時」の20営業日後の平均リターンは0.58%で、「下がっている時」の0.98%より低い。有効だったのは大きな下落を避ける働き
- 期間を10〜30日で1日ずつ変えると年率の平均は0.70%。20日(2.93%)は21通り中2番目に良く、たまたまの要素が大きい
ROCは「今日 ÷ N日前」
ROC(Rate of Change、変化率)は、今日の終値がN営業日前の終値から何%動いたかを表す指標です。移動平均のような「ならし」はなく、比べるのは2つの日だけ。プラスならN日前より高い(上昇の勢いがある)、マイナスなら低い、と読みます。
(%で表すときは ×100)
「ROCがプラス」は「終値がN日前より高い」と同じ意味です。株価が自分自身の過去より上にいる間だけ持つ方法は、時系列モメンタムと呼ばれます。ほかの銘柄と比べて強いものを選ぶ方法(横断的モメンタム)とは区別されます。
見方:0を境に「勢いの向き」を読む
ROCは上限・下限のないオシレーターです。0より上なら上昇の勢い、下なら下落の勢い。値が大きいほど勢いが強いと読みます。2007年4月以降の日経平均では、ROC(20)がプラスの日は58.1%、中央値は+0.97%でした。最大は2009年4月7日の+24.65%、最小はリーマン・ショック後の2008年10月27日の−39.77%です。
「ROCがマイナスに変わった=今日下がった」とは限りません。ROCはN日前の値が1日ずつ入れ替わるので、基準になる日が高ければ、今日が横ばいでもマイナスになります。2026年9月28日は終値65,878円で、基準日(8月26日)の66,262円を下回ったためROC(20)は−0.58%に。2日後の9月30日には+0.52%に戻りました。
実際の日経平均で見てみる
直近500営業日でROC(20)がプラスだったのは66.8%の日。符号は53回変わりました。最小は2025年4月7日(終値31,136円)の−15.59%、最大はそこからの反発で迎えた2025年5月12日の+18.70%です。
2026年10月2日のROC(20)は+3.16%(68,309円、20営業日前の9月1日は66,215円)。一方ROC(60)は−2.06%で、3か月前よりはまだ低い位置にあります。短期の勢いは上向き、中期は方向感なし、という状態です。
検証①:ROCがプラスの間だけ保有
ルール:ROC(N)がプラスなら保有、マイナス(0以下)なら現金。期間Nは10日・20日・60日・120日の4通りを比べ、計画どおり20日を主ルールとしました。感度は各期間の±20%(20日なら16日・24日)です。条件は共通の検証ルールのとおりです。
| 戦略 | 最終資産 | 年率 | 最大下落率 | 取引 | 勝率 | PF | 保有率 |
|---|---|---|---|---|---|---|---|
| 買い持ち | 3.93倍 | 7.3% | −61.4% | — | — | — | 100% |
| ROC(10)>0 | 0.74倍 | −1.5% | −50.6% | 345 | 30% | 0.97 | 56% |
| ROC(20)>0 | 1.75倍 | 2.9% | −31.3% | 253 | 34% | 1.31 | 58% |
| ROC(60)>0 | 1.47倍 | 2.0% | −35.4% | 150 | 30% | 1.39 | 59% |
| ROC(120)>0 | 1.48倍 | 2.0% | −41.7% | 102 | 34% | 1.08 | 59% |
10日は赤字、20日以上はどれも年率2〜3%程度のプラスでした。ROC(120)はPFが1.08にとどまりました。どの期間も、最大下落率は買い持ちの−61.4%より小さく収まりました。
急落局面では、ほぼ毎回「降りていた」
ROC(20)のルールの最大下落率−31.3%は、2007年〜2009年3月の下げで記録したものです。同じ期間に買い持ちは−61.4%でした。2008年10月27日(7,163円)には、ROC(20)は−39.77%で、すでに現金でした。
2020年1〜4月(コロナ・ショック)の最大下落は−8.9%(買い持ち−31.3%)、2024年7〜8月は−8.1%(同−25.5%)。2024年は7月24日(39,155円、ROC(20)−0.05%)に売っており、8月5日の急落(31,458円)は現金で迎えました。2025年4月の急落も、3月31日の時点でROC(20)は−4.14%で現金。3〜4月の下落はゼロで、4月28日(35,840円)に買い戻しています。
一方で弱点もはっきりしています。買い持ちが+19.22%だった2024年に、このルールは−6.19%。2023年も+10.84%と、買い持ちの+28.24%に大きく負けました。0付近で売買を繰り返し、取引の多くが5営業日以内に終わる(149回)ためです。コストをゼロにすると年率5.65%・PF1.56まで上がるので、往復0.2%のコストが成績を大きく削っています。
「上がっているもの」は、その後よく上がったのか
本題の問いです。ROC(20)の値で日を分け、その日から20営業日後までのリターンを平均しました。
結果は逆でした。ROC(20)がプラスの日の20営業日後リターンは平均0.58%で、全日平均0.75%を下回ります。5営業日後で見ても0.20%と0.18%で、ほとんど差はありません。日経平均では「上がっているものがさらに上がる」傾向は、平均としては確認できませんでした。
それでもルールの成績がプラスになったのは、ROC(20)が大きくマイナスになる局面に、2008年や2020年3月のような「さらに深い下げ」が含まれているからです。−5%未満の日のあとは平均1.55%と大きく反発していますが、その中には下げ続けた場面も混ざっています。ROCのルールは平均的な反発をあきらめる代わりに、その深い下げを避けた、と考えられます。利益の面でも、上位10取引の合計は+226.92%で、全253回の合計+87.55%を上回りました。いちばん大きかったのは2012年11月16日(9,024円)〜2013年5月30日(13,589円)の+50.38%です。少数の大きな上昇に乗り、残りの多くは小さな負けを積み重ねる構造です。
期間20日は「当たりくじ」かもしれない
期間を10日から30日まで1日ずつ変えて、同じルールを試しました。
| 期間 | 14日 | 16日 | 18日 | 19日 | 20日 | 21日 | 24日 | 27日 |
|---|---|---|---|---|---|---|---|---|
| 年率 | 0.78% | 0.70% | 1.33% | 3.56% | 2.93% | 1.92% | 1.15% | −1.47% |
| PF | 1.11 | 1.10 | 1.17 | 1.34 | 1.31 | 1.24 | 1.19 | 0.99 |
10〜30日の21通りのうち年率がプラスだったのは15通りで、平均は0.70%。20日は2番目に良い結果でした。PFが1.3を超えたのは19日と20日だけです。16〜24日の平均でも1.94%にとどまります。2.93%という数字は、20日という区切りが偶然うまくはまった分を含んでいると見るべきでしょう。
検証②:#001 移動平均線と比べる
ルール:#001の「50日線が200日線より上の間保有」、ROCと近い「終値が20日線より上の間保有」、そして「ROC(20)がプラス、かつ50日線が200日線より上の間だけ保有」の組み合わせを比べました。組み合わせ版の感度はROCの期間を16日・24日に変えています。条件は共通の検証ルールのとおりです。
| 戦略 | 最終資産 | 年率 | 最大下落率 | 取引 | 勝率 | PF | 保有率 |
|---|---|---|---|---|---|---|---|
| 買い持ち | 3.93倍 | 7.3% | −61.4% | — | — | — | 100% |
| ROC(20)>0 | 1.75倍 | 2.9% | −31.3% | 253 | 34% | 1.31 | 58% |
| SMA50×200(#001) | 3.41倍 | 6.5% | −36.7% | 15 | 33% | 2.51 | 61% |
| 終値>20日線 | 0.93倍 | −0.3% | −54.4% | 296 | 26% | 1.03 | 58% |
| ROC(20)>0 かつ SMA50>200 | 1.85倍 | 3.2% | −25.3% | 165 | 36% | 1.48 | 38% |
#001の50日×200日は、19年で取引15回。年率6.5%で、ROC(20)の2.9%を大きく上回ります。最大下落率はROC(20)が−31.3%、#001が−36.7%で、ROCの方がやや浅く済みました。ただ、両者の「保有か現金か」が一致した日は55.9%しかなく、同じ順張りでも中身はかなり違います。
注目したいのは「終値>20日線」です。ROC(20)と保有・現金が一致した日は82.8%もあるのに、成績は年率−0.3%・PF1.03と赤字でした。わずかな違いで結果がひっくり返るのは、ROC(20)の成績が0付近の細かな出入りの運に左右されている裏返しです。
2つを組み合わせると、保有率は38%まで下がり、最大下落率は−25.3%、PF1.48に改善しました。期間を16日・24日にしても年率は2.57%・2.11%と、単独のROC(20)(0.70%・1.15%)よりぶれが小さくなっています。
読み解き
- ROC(20)>0の成績はプラスだったが、理由は「勢いの持続」ではない。プラスの日の20営業日後リターンは0.58%で、マイナスの日の0.98%より低い。有効だったのは、2008年・2020年・2024年8月のような深い下げを現金で迎えた点。
- 期間への依存が大きい。10〜30日の21通りで年率の平均は0.70%、PF1.3超えは19日と20日だけ。感度の16日・24日も年率0.70%・1.15%にとどまる。
- 長い流れと組み合わせると安定する。#001の50日×200日と重ねると、最大下落率−25.3%・PF1.48。リターンを最大にしたいなら#001単独(年率6.5%)が上で、ROCは「降りる判断」を早める補助と考えるのが妥当。
成績のまとめ(ROC(20)がプラスの間保有)
取引253回・PF1.31で、後半(2016年10月〜)の年率5.47%は前半0.33%を大きく上回り、最大下落率−31.3%は買い持ちの半分ほど。ただしPF1.31は余裕のある数字ではなく、期間を16日・24日にすると年率は0.70%・1.15%まで落ちる。20日は10〜30日の21通りで2番目に良い期間であり、成績の一部は期間選びの偶然と考えるべきだ。「上がっているものを買う」効果そのものは平均リターンでは確認できず、急落を避ける守りの道具として見るのが妥当だろう。
自分で試す(TradingView)
//@version=6
indicator("ROC 20 / 60", overlay = false)
r20 = ta.roc(close, 20) // (close − close[20]) / close[20] × 100
r60 = ta.roc(close, 60)
plot(r20, "ROC(20)", color = color.blue)
plot(r60, "ROC(60)", color = color.orange)
hline(0, "0", color = color.gray)
bgcolor(r20 > 0 ? color.new(color.green, 90) : na, title = "ROC(20)がプラス(保有)")

