CCI:平均からの離れ具合で行き過ぎと勢いを測る
- 「±100に7〜8割が収まる」は日経平均では成り立たない。CCI(20)が±100の内側にあった日は58.7%だけだった
- 順張り(+100超えで買い→0割れで売り)は年率3.3%・最大下落率−25.1%で、前半・後半とも安定していた
- 逆張り(−100上抜けで買い→+100下抜けで売り)は取引93回・PF1.26。2008年は−42.6%と買い持ち並みに沈んだ
CCIは「平均からのずれ」を平均偏差で測る
CCI(コモディティ・チャネル・インデックス)は、ドナルド・ランバートが1980年に商品先物向けに発表した指標です。名前に「コモディティ」とありますが、株価指数にもそのまま使えます。
計算には、終値ではなく典型価格(高値・安値・終値の平均)を使います。典型価格が、その20日移動平均からどれだけ離れているかを、過去20日の「ばらつき」で割って目盛りをそろえます。ばらつきには標準偏差ではなく平均偏差(各値と平均の差の絶対値の平均)を使うのが特徴です。
CCI =(TP − TPの20日平均)
÷(0.015 × TPの20日平均偏差)
2026年10月2日の例では、TPが68,394円、TPの20日平均が65,308円、平均偏差が1,100円でした。(68,394 − 65,308)÷(0.015 × 1,100)= 3,086 ÷ 16.5 = 187.0 です。
0.015という定数の意味
式の中の0.015は、CCIの値の多く(一般に7〜8割)が±100の内側に収まるように選ばれた、と説明されます。理屈はこうです。値が正規分布に従うなら、平均偏差は標準偏差の約0.798倍。±100は「平均偏差の1.5倍」、つまり標準偏差の約1.197倍にあたり、その内側には理論上76.9%が入ります。
ところが日経平均で実際に数えると、2007年4月以降のCCI(20)が±100の内側にあった日は58.7%でした。+100超えが24.7%、−100未満が16.6%です。期間を10日から50日まで変えても57.4%〜59.9%で、ほとんど変わりません。75%を内側に収めるには、定数を0.0195(0.015の1.30倍)にする必要があります。
ずれる理由は、CCIが「窓の端」を測っているからです。20日間の窓の中の20個の値すべてを同じ式で測ると、±100の内側は78.7%で、ほぼ理論どおりになります。しかしCCIが測るのは最新の1日だけ。相場が一方向に動いていれば、最新の値は窓の中でいちばん端にあり、外れやすくなります。実際、CCI(20)が+100を超えた日の99.3%は、典型価格が5日前より高い日でした。
「±100の外は2〜3割しかない珍しい状態だから、そこから戻る」とは言えません。日経平均では4割強の日が±100の外にあり、2013年は+100超えだけで39.6%ありました。±100の外は「まれな行き過ぎ」ではなく、相場が動いているときの普通の状態です。
実際の日経平均で見てみる
直近500営業日でも、±100の内側にあったのは60.6%でした。もっとも低かったのは2025年4月7日の−270.7(終値31,136円)。もっとも高かったのは2025年7月24日の338.2(終値41,826円)です。
このとき2つのルールは正反対の動きをしました。逆張りは2025年3月31日にCCIが−214.6まで落ちた時点ですでに株を持っており、4月7日の急落をそのまま受けています。順張りは現金で急落をやり過ごし、4月25日(35,706円、CCI 109.6)に買いました。2024年8月5日の急落(CCI −271.8)でも、逆張りは7月31日(39,102円)に買ったあとで、順張りは7月18日に売って現金でした。
2026年10月2日のCCI(20)は187.0。順張りは9月30日(66,754円、CCI 116.7)に+100を超えて買い、保有中です。
検証:逆張りと順張りを比べる
ルール:逆張りは、CCI(20)が−100を下から上に抜けたら買い、+100を上から下に割ったら売り。順張りは、CCI(20)が+100を超えたら買い、0を下回ったら売り。期間は±20%の16日・24日も試しました。条件は共通の検証ルールのとおりです。
| 戦略 | 最終資産 | 年率 | 最大下落率 | 取引 | 勝率 | PF | 保有率 |
|---|---|---|---|---|---|---|---|
| 買い持ち | 3.93倍 | 7.3% | −61.4% | — | — | — | 100% |
| 順張り CCI20 +100超え→0割れ | 1.87倍 | 3.3% | −25.1% | 128 | 36% | 1.42 | 44% |
| 順張り CCI16 | 1.20倍 | 1.0% | −34.3% | 163 | 36% | 1.13 | 44% |
| 順張り CCI24 | 1.38倍 | 1.7% | −29.7% | 115 | 37% | 1.25 | 44% |
| 逆張り CCI20 −100上抜け→+100下抜け | 1.26倍 | 1.2% | −54.8% | 93 | 69% | 1.26 | 48% |
| 逆張り CCI16 | 1.48倍 | 2.0% | −57.6% | 113 | 65% | 1.32 | 47% |
| 逆張り CCI24 | 1.71倍 | 2.8% | −51.5% | 81 | 70% | 1.51 | 47% |
勝率だけなら逆張りが69%と、順張りの36%を大きく上回ります。しかし中身は正反対です。逆張りは勝ちの平均+3.03%に対して負けの平均−5.30%、最大の負けは−40.62%。順張りは勝ちの平均+5.68%、負けの平均−2.25%で、最大の負けは−7.20%にとどまりました。
差がもっとも出たのは2008年です。順張りの年間成績は+0.32%、逆張りは−42.62%で、買い持ち(−42.12%)とほぼ同じでした。逆張りは「下がった後の戻り」で買いますが、売るのは+100を割ったときだけ。CCIが+100まで戻らないまま下げ続けると、損切りの仕組みがないため持ち続けることになります。
入口だけなら逆張りの方が良い
シグナルが出た日から先のリターンを見ると、話は少し複雑です。
買いの瞬間だけを比べると、逆張りの入口の方が優れていました。それでも順張りが勝ったのは、出口の違いです。順張りの売り(0割れ)の20日後は平均+0.28%と全日平均を大きく下回り、弱い局面からきちんと降りられていました。一方、逆張りの売り(+100下抜け)の20日後は+0.45%です。逆張りは「良い入口」と「損切りのない出口」の組み合わせでした。
出口の位置で成績が大きく変わる
順張りの買い(+100超え)はそのままに、売りの位置だけを変えてみました。
| 順張り CCI20 の売り | 年率 | 最大下落率 | 取引 | PF | 平均保有 |
|---|---|---|---|---|---|
| +100割れ | −0.1% | −22.0% | 274 | 1.01 | 4.3日 |
| +50割れ | 2.3% | −26.7% | 177 | 1.27 | 9.4日 |
| 0割れ(主ルール) | 3.3% | −25.1% | 128 | 1.42 | 16.5日 |
| −50割れ | 4.2% | −27.0% | 106 | 1.56 | 22.0日 |
| −100割れ | 3.3% | −30.3% | 94 | 1.45 | 27.7日 |
+100を割ったらすぐ売ると、平均4.3日で売買を繰り返し、年率−0.1%です。+100超えは「勢いの始まり」で、そこから少し揺れても持ち続ける余裕が必要でした。−50割れでは年率4.2%まで上がりますが、これは結果を見てから選んだ値なので、主ルールは計画どおり0割れとしています。
期間を変えると、順張りは揺れる
期間を10日から40日まで1日ずつ変えると、順張りは31通りのうち29通りで年率プラスでしたが、PF1.3以上は18通りでした。期間20日は31通り中10位。16日(年率1.0%)と24日(1.7%)では、ともにPF1.3を下回ります。19日〜22日あたりに成績の山があり、20日はその上に乗っています。逆張りは31通りすべてで年率プラスですが、取引100回以上は9通りしかなく、期間を長くするほど取引が減ります。
同じ順張り系の#019 ROC(ROC(20)がプラスの間保有)は年率2.9%・最大下落率−31.3%・取引253回でした。CCIの順張りは取引がその半分で、年率・最大下落率ともに少し上回っています。
読み解き
- 日経平均のCCIでは、±100は「勢い」として働いた。順張りは年率3.3%・最大下落率−25.1%・PF1.42。逆張りは取引93回・PF1.26で、最大下落率も−54.8%と買い持ちに近い。
- 逆張りの弱点は入口ではなく出口。−100上抜け後の20日リターンは+1.65%と全日平均の2倍以上あった。それでも損切りがないため、2008年は−42.62%。#002 RSIや#007 RCIと同じ「下げ相場の弱さ」が出た。
- ±100に7〜8割が収まる設計は、日経平均では58.7%だった。窓の中の全点なら78.7%で理論どおりだが、CCIは窓の端の1点を測るため外に出やすい。±100の外は珍しい状態ではない。
成績のまとめ(順張り CCI20 +100超え→0割れ)
順張りは前半3.4%・後半3.2%と成績が安定し、最大下落率−25.1%は買い持ちの−61.4%の半分以下。ただし年率3.3%は買い持ち7.3%に届かず、期間16日・24日では年率1.0%・1.7%、PFも1.13・1.25に落ちる。20日が成績の山に乗っている点は割り引いて見る必要がある。逆張りは取引93回・PF1.26と、回数・損益比ともに見劣りした。
自分で試す(TradingView)
//@version=6
indicator("CCI 順張り・逆張り", overlay = false)
len = input.int(20, "期間")
tp = hlc3 // 典型価格 (高値+安値+終値)/3
m = ta.sma(tp, len)
md = ta.dev(tp, len) // 平均偏差
cci = (tp - m) / (0.015 * md)
// 順張り:+100超えで買い、0割れで売り
var bool trendIn = false
if not trendIn and cci > 100
trendIn := true
else if trendIn and cci < 0
trendIn := false
// 逆張り:−100上抜けで買い、+100下抜けで売り
var bool contraIn = false
if not contraIn and ta.crossover(cci, -100)
contraIn := true
else if contraIn and ta.crossunder(cci, 100)
contraIn := false
plot(cci, "CCI", color = color.blue)
hline(100, "+100", color = color.red)
hline(0, "0", color = color.gray)
hline(-100, "−100", color = color.green)
bgcolor(trendIn ? color.new(color.blue, 85) : na, title = "順張り 保有中")
plotshape(contraIn and not contraIn[1], "逆張り 買い", shape.triangleup, location.bottom, color.orange, size = size.tiny)
plotshape(not contraIn and contraIn[1], "逆張り 売り", shape.triangledown, location.top, color.orange, size = size.tiny)

