본문 바로가기
기술지표

CCI 지표 우물 파기 기법 및 과매도 구간 탈출 타점 잡기 [지표 백과 027]

by 흔한트리이더 2026. 3. 1.
반응형

1. 평균으로부터의 일탈을 계량하다: CCI의 탄생

주식 가격은 결국 장기적인 '평균'으로 회귀하려는 강력한 습성을 지닙니다. 1980년, 수학자 도널드 램버트(Donald Lambert)는 계절적 주기가 뚜렷한 농산물 등의 상품(Commodity) 시장을 분석하기 위해, 이 평균 회귀의 법칙을 0을 기준으로 계량화한 CCI를 고안해 냈습니다.

단순히 과거 가격만 평균 내는 이동평균선과 달리, CCI는 현재 가격이 그 평균으로부터 '통계적으로 얼마나 비정상적으로 떨어져 있는지(편차)'를 정밀하게 수치화합니다. 골이 깊으면 산이 높듯, 주가가 비이성적인 공포에 휩싸여 끝없이 폭락해 '깊은 우물을 팠을 때', 대중이 던지는 물량을 받아내고 폭발적인 반등을 노리는 가장 치명적인 타점을 제공하는 모멘텀 지표입니다.

2. 수리적 원리와 계산 구조

CCI는 매일의 대표 가격($TP$)이 과거 일정 기간(보통 20일)의 평균값에서 얼마나 벗어나 있는지를 계산하며, 값이 무한대로 발산하지 않도록 통계적 상수를 사용하여 정규화합니다.

Step 1. 대표 가격($TP$, Typical Price) 산출

하루 동안 매매 공방이 벌어진 평균적인 중심 가격을 구하기 위해 고가($H$), 저가($L$), 종가($C$)를 더해 3으로 나눕니다.

$$TP = \frac{H + L + C}{3}$$

Step 2. 단순 이동평균($SMA$)과 평균 편차($MD$) 도출

20일 동안의 $TP$ 평균($SMA$)을 구하고, 각 일자의 $TP$가 이 평균으로부터 얼마나 떨어져 있는지 그 절대값들의 평균($MD$, Mean Deviation)을 계산합니다.

$$MD = \frac{1}{N} \sum_{i=1}^{N} |TP_i - SMA|$$

Step 3. 상품 채널 지수($CCI$) 산출

현재의 $TP$에서 평균($SMA$)을 뺀 뒤, 이를 평균 편차($MD$)로 나눕니다. 분모의 0.015는 CCI 수치의 70~80%가 +100과 -100이라는 정상적인 채널 안에 머물도록 램버트가 조정한 수리 통계적 상수입니다.

$$CCI = \frac{TP - SMA}{0.015 \times MD}$$

3. 차트에서 나타나는 수리적 특성: KISCO홀딩스(A001940) 분석 사례

평균 회귀의 원리가 가장 완벽하게 작동하는 KISCO홀딩스의 차트를 통해 CCI의 실전 타점을 분석해 보겠습니다.

  • 우물 파기와 과매도 탈출 (최적의 매수 타점): 2025년 12월 하순과 2026년 1월 말, 주가가 급락할 때 하단 패널의 오렌지색 CCI 선이 파란색 -100선 아래로 깊숙이 파고들어 갑니다. 하지만 진짜 타점은 선이 다시 -100선을 위로 뚫고 올라오는 순간입니다. 통계적 한계를 벗어난 공포 투매가 진정되고 강력한 반등이 시작되는 것을 두 차례나 정확히 잡아냈습니다.
  • 과매수 진입과 단기 고점: 2025년 11월 중순, 주가가 단기 피크를 칠 때 CCI 선은 붉은색 +100선 위로 올라가며 시장이 과열되었음을 강력히 경고합니다. 이후 선이 +100을 하향 이탈할 때가 단기 차익 실현의 교과서적인 타점입니다.

4. 장점 및 한계

  • 장점: 가격 변화에 반응하는 속도가 매우 빨라, RSI나 MACD보다 항상 한발 먼저 최저점의 바닥을 잡아냅니다. 특히 주가는 전저점을 깼는데 CCI는 이전 저점보다 높은 '강세 다이버전스' 발생 시 강력한 매수 신호가 됩니다.
  • 한계: 반응 속도가 빠른 만큼 작은 파동에도 지표가 출렁여 치명적인 가짜 신호(휩쏘)를 남발합니다. 또한 강력한 상승 추세장에서는 CCI가 +100(과매수) 위에서 장기간 내려오지 않는 현상이 빈번하므로, 이동평균선 등 추세 지표와 반드시 병행해야 합니다.

5. 파이썬 구현 (평균 편차 기반 정밀 연산)

단순한 뺄셈이 아니라, 판다스의 rolling().apply() 함수를 활용하여 각 구간의 $TP$가 그 구간의 평균($SMA$)에서 벗어난 정도($MD$)를 오차 없이 측정하는 벡터 연산 코드입니다.

import sqlite3
import pandas as pd
import numpy as np

def calculate_cci(df, period=20):
    # 1. 대표 가격(TP) 산출
    df['TP'] = (df['high'] + df['low'] + df['close']) / 3
    
    # 2. TP의 20일 단순 이동평균(SMA) 계산
    df['SMA_TP'] = df['TP'].rolling(window=period).mean()
    
    # 3. 평균 편차(MD, Mean Deviation) 도출
    df['MD'] = df['TP'].rolling(window=period).apply(
        lambda x: np.abs(x - x.mean()).mean(), raw=True
    )
    
    # 4. CCI 최종 산출 (0.015 통계 상수 적용)
    df['CCI'] = (df['TP'] - df['SMA_TP']) / (0.015 * df['MD'])
    
    return df

6. 실전 Tip 및 요약

가장 확실하고 수익률이 높은 실전 타점은 '우물 파기 후 탈출' 전략입니다. 주가가 폭락하며 CCI가 -100선 아래로 깊숙이 잠길 때는 절대 매수하지 말고 관망하십시오. 떨어지는 칼날입니다. 진짜 타점은 바닥을 다진 CCI 선이 다시 -100 선을 위로 뚫고 올라오는(상향 돌파) 그 찰나의 순간입니다. 이때가 비이성적인 공포가 끝나고, 평균으로 회귀하려는 강력한 에너지가 폭발하는 시작점입니다.


*본 포스팅은 기술적 지표의 수리적 이해를 돕기 위한 참고 자료이며, 투자 결과에 대한 책임은 투자자 본인에게 있습니다.*
반응형