본문 바로가기
기술지표

카우프만 적응형 이평선(KAMA) 횡보장 노이즈 필터링 파이썬 구현 [지표 백과 063]

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

1. 인공지능처럼 시장을 스스로 판단하는 이평선: 페리 카우프만의 혁신

모든 이동평균선(SMA, EMA) 트레이더들은 영원한 딜레마에 빠져 있습니다. 이평선의 기간을 짧게 잡으면 주가에 빠르게 반응하지만 수많은 휩쏘(가짜 신호)에 계좌가 녹아내리고, 기간을 길게 잡으면 가짜 신호는 피할 수 있지만 치명적인 후행성 때문에 매매 타점이 너무 늦어집니다.

유명한 퀀트 투자자 페리 카우프만(Perry Kaufman)은 이 난제를 해결하기 위해 KAMA(Kaufman's Adaptive Moving Average, 적응형 이동평균선)를 개발했습니다. KAMA는 현재 시장이 뚜렷한 방향을 가진 '추세장'인지, 아니면 위아래로 흔들리기만 하는 '횡보장(노이즈)'인지를 수리적으로 계산합니다. 그래서 횡보장에서는 둔감한 장기 이평선처럼 수평을 유지하며 노이즈를 무시하고, 강한 추세가 터지면 민감한 단기 이평선처럼 주가에 바짝 붙어 따라가는 '적응형(Adaptive)' 시스템을 완성했습니다. 마치 인공지능이 차트를 보고 스스로 이평선의 길이를 조절하는 것과 같은 혁신적인 원리입니다.

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

KAMA는 시장의 효율성(방향성 vs 변동성)을 측정하여 가중치를 동적으로 변환합니다. 기본 설정값은 (10, 2, 30)을 가장 많이 사용합니다.

Step 1. 효율성 비율 (Efficiency Ratio, ER)

주가의 순수한 이동 거리(방향성)를 총 이동 거리(변동성, 노이즈)로 나눕니다. ER은 0에서 1 사이의 값을 가집니다. 추세가 강할수록 1에 가까워지고, 횡보하며 위아래로 흔들릴수록 0에 가까워집니다.

$$ER = \frac{|Close_t - Close_{t-10}|}{\sum_{i=1}^{10} |Close_i - Close_{i-1}|}$$

Step 2. 평활화 상수 (Smoothing Constant, SC)

계산된 ER을 바탕으로 단기 가중치(2일 EMA 기준)와 장기 가중치(30일 EMA 기준) 사이에서 현재 시장에 맞는 최적의 상수(SC)를 동적으로 계산합니다.

$$SC = \left[ ER \times \left( \frac{2}{2+1} - \frac{2}{30+1} \right) + \frac{2}{30+1} \right]^2$$

Step 3. KAMA 본선 산출

어제 계산된 KAMA 값에 오늘 새롭게 도출된 SC를 적용하여 오늘의 KAMA를 업데이트합니다.

$$KAMA_t = KAMA_{t-1} + SC \times (Close_t - KAMA_{t-1})$$

3. 실전 매매 활용법 (적응형 추세 판독 테이블)

KAMA는 횡보장에서 불필요한 교차 신호를 만들지 않으므로, 추세 추종 트레이더에게 가장 안전한 길잡이가 됩니다.

시그널 형태 현상 설명 (KAMA의 반응) 실전 매매 대응 전략 (Action)
수평 궤적
(Flat KAMA)
주가가 오르내리지만 KAMA는 수평을 유지하며 미동도 하지 않음 매매 금지 (관망). 시장이 노이즈가 심한 횡보장(ER 값이 0에 근접)임을 스스로 판단한 상태입니다. 이때 발생하는 주가의 돌파는 가짜 신호일 확률이 90% 이상입니다.
방향 전환
(Turn)
수평이던 KAMA가 위로 고개를 들거나 아래로 꺾임 추세 진입 (매수/매도). 노이즈를 뚫고 진짜 추세가 시작되었음을 KAMA가 컨펌한 순간입니다. 고개를 드는 방향으로 강력하게 배팅합니다.
동적 지지/저항
(Dynamic S/R)
강한 추세장에서 KAMA가 주가에 바짝 붙어 계단식으로 상승/하락 눌림목 매수 및 홀딩. 추세장(ER 값이 1에 근접)에서는 단기 이평선으로 변신하므로, KAMA 선을 이탈하지 않는 한 끝까지 홀딩하며 수익을 극대화합니다.

4. 차트에서 나타나는 수리적 특성: 네패스(A033640) 분석 사례

노이즈를 걸러내는 KAMA의 소름 돋는 필터링 능력을 보여주는 네패스의 차트 분석 사례입니다.

  • 완벽한 휩쏘 방어 (수평 궤적): 차트 중앙인 2025년 10월 말부터 12월 말까지의 횡보장을 보십시오. 주가가 위아래로 흔들리며 하단의 ER(효율성 비율)이 바닥을 깁니다. 이때 회색 점선인 일반 10일 이평선(SMA)은 주가를 따라 요동치며 가짜 돌파 신호를 연발하지만, 보라색 KAMA 본선은 완벽한 '수평선'을 그리며 미동조차 하지 않고 관망세를 유지합니다. 인공지능이 노이즈를 스스로 차단한 것입니다.
  • 추세장 진입 시 가속 (적응형 반응): 2026년 1월 말, 주가가 박스권을 돌파하며 폭등해 ER이 치솟습니다. 그러자 수평으로 누워있던 KAMA가 즉각 단기 이평선으로 돌변하여, 주가에 바짝 붙어 가파르게 우상향하며 완벽한 동적 지지선 역할을 수행합니다.

5. 장점 및 한계

  • 장점: 현존하는 이동평균선 중 노이즈 필터링 능력(가짜 신호 제거)이 단연코 1위입니다. 횡보장에서는 휩쏘 손실을 방어하고, 추세장에서는 수익을 끝까지 끌고 갈 수 있게 해주는 궁극의 추세 추종 지표입니다.
  • 한계: 계산 과정이 매우 복잡하며 이전 값을 계속 참조하는 재귀적 구조를 띄고 있어, 초기 데이터의 시작 지점에 따라 지표의 궤적이 미세하게 달라질 수 있습니다. 또한 박스권 횡보 구간을 완벽히 필터링하므로, 박스권 단타(고점 매도, 저점 매수)를 즐기는 트레이더에게는 무용지물입니다.

6. 파이썬 구현 (효율성 비율 및 재귀 연산)

판다스(Pandas)의 diff()rolling().sum()을 이용해 효율성 비율(ER)과 평활화 상수(SC)를 벡터 연산으로 도출합니다. 이후 KAMA 본선은 재귀 연산의 특성상 for 루프를 통해 이전 값을 참조하며 부드럽게 업데이트하는 정통 퀀트 코드입니다.

import pandas as pd
import numpy as np

def calculate_kama(df, n=10, fast=2, slow=30):
    # 1. 효율성 비율 (ER: Efficiency Ratio) 산출
    change = abs(df['close'] - df['close'].shift(n))
    volatility = abs(df['close'] - df['close'].shift(1)).rolling(window=n).sum()
    er = change / volatility
    er = er.fillna(0)
    
    # 2. 평활화 상수 (SC: Smoothing Constant) 산출
    fast_sc = 2 / (fast + 1)
    slow_sc = 2 / (slow + 1)
    sc = (er * (fast_sc - slow_sc) + slow_sc) ** 2
    
    # 3. KAMA 본선 산출 (재귀 연산)
    kama = np.zeros(len(df))
    kama[:] = np.nan
    
    # 첫 번째 유효한 KAMA 값은 초기 기준점(종가)으로 설정
    start_idx = n
    if start_idx < len(df):
        kama[start_idx-1] = df['close'].iloc[start_idx-1]
        for i in range(start_idx, len(df)):
            kama[i] = kama[i-1] + sc.iloc[i] * (df['close'].iloc[i] - kama[i-1])
            
    df['KAMA'] = kama
    return df

7. 실전 Tip 및 요약

KAMA 하나만으로 매매하기보다는 '두 개의 KAMA (이중 KAMA 시스템)'를 활용해 보십시오. 예를 들어 KAMA(10, 2, 30)을 단기선으로, KAMA(10, 5, 30)을 장기선으로 차트에 띄웁니다. 횡보장에서는 두 선이 겹쳐서 하나의 일직선으로 진행되므로 매매를 쉬고, 두 선이 위아래로 벌어지며 교차(Cross)하는 순간에만 진입하면 승률을 극한으로 방어할 수 있습니다.


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