Moving Average Convergence Divergence
이동평균수렴확산
MACD는 두 지수이동평균의 관계를 통해 추세의 방향, 강도, 전환점을 파악하는 지표입니다. 1979년 Gerald Appel이 개발했습니다.
개요
Moving Average Convergence Divergence (MACD, 이동평균수렴확산) 는 1979년 Gerald Appel이 개발한 추세 추종 모멘텀 지표입니다1.
MACD는 두 개의 지수이동평균(EMA) 사이의 관계를 분석하여:
- 추세의 방향: 상승 또는 하락
- 추세의 강도: 모멘텀의 크기
- 추세의 전환: 모멘텀의 변화
를 동시에 파악할 수 있습니다.
핵심 개념: MACD는 "두 러너의 차이"를 추적합니다. 빠른 러너(12일 EMA)와 느린 러너(26일 EMA)가 있을 때, 빠른 러너가 앞서가면(수렴) 상승 모멘텀, 뒤처지면(확산) 하락 모멘텀을 의미합니다.
수학적 정의
MACD 구성 요소
MACD는 세 가지 구성 요소로 이루어집니다1:
1. MACD 선 (MACD Line)
2. 시그널 선 (Signal Line)
3. MACD 히스토그램 (Histogram)
전체 계산 흐름
가격 데이터
↓
┌─────────────────┬─────────────────┐
│ 12일 EMA 계산 │ 26일 EMA 계산 │
└────────┬────────┴────────┬────────┘
│ │
└────────┬────────┘
↓
MACD = EMA₁₂ - EMA₂₆
↓
Signal = EMA₉(MACD)
↓
Histogram = MACD - Signal
EMA 평활 계수
MACD에서 사용하는 EMA의 평활 계수:
| 구성요소 | 기간 | 평활 계수 (α) |
|---|---|---|
| 빠른 EMA | 12 | |
| 느린 EMA | 26 | |
| 시그널 | 9 |
비유적 설명
MACD를 기온차에 비유할 수 있습니다:
- 12일 EMA: 최근 12일의 평균 기온 (빠르게 변화)
- 26일 EMA: 최근 26일의 평균 기온 (느리게 변화)
- MACD: 두 평균 기온의 차이
- MACD > 0: 최근이 더 따뜻함 (상승 추세)
- MACD < 0: 최근이 더 차가움 (하락 추세)
- 히스토그램: 기온차의 변화 속도
- 히스토그램 증가: 점점 더 따뜻해지는 중
- 히스토그램 감소: 온난화 속도 둔화
파라미터
표준 설정 (12, 26, 9)
Gerald Appel이 제안한 표준 파라미터1:
- 12: 약 2주 (10 거래일 + 버퍼)
- 26: 약 1개월 (22 거래일 + 버퍼)
- 9: 약 1.5주
Appel의 대안 설정
Appel(2005)은 시장 상황에 따라 다른 파라미터를 제안했습니다1:
| 용도 | 빠른 EMA | 느린 EMA | 시그널 | 특성 |
|---|---|---|---|---|
| 매수 신호 | 8 | 17 | 9 | 민감, 조기 진입 |
| 표준 | 12 | 26 | 9 | 균형 |
| 매도 신호 | 12 | 26 | 9 | 보수적, 늦은 청산 |
파라미터 조정 원칙
- 빠른 EMA ↓: 더 민감한 신호, 노이즈 증가
- 느린 EMA ↑: 더 안정적, 지연 증가
- 시그널 ↓: 빠른 교차, 허위 신호 증가
해석 방법
1. 제로선 교차 (Zero Line Crossover)
Murphy(1999)에 따른 기본 해석2:
-
MACD > 0 (제로선 상향 돌파):
- 12일 EMA > 26일 EMA
- 단기 모멘텀이 장기 모멘텀을 앞섬
- 상승 추세 시작
-
MACD < 0 (제로선 하향 돌파):
- 12일 EMA < 26일 EMA
- 단기 모멘텀이 장기 모멘텀에 뒤처짐
- 하락 추세 시작
2. 시그널선 교차 (Signal Line Crossover)
가장 많이 사용되는 MACD 트레이딩 신호1:
- 골든크로스: MACD가 시그널선을 상향 돌파 → 매수
- 데드크로스: MACD가 시그널선을 하향 돌파 → 매도
신호의 강도:
- 제로선 아래에서 골든크로스: 강한 매수 신호
- 제로선 위에서 데드크로스: 강한 매도 신호
3. 히스토그램 분석
Thomas Aspray가 1986년 도입한 개념3:
히스토그램의 의미:
- 히스토그램 > 0: MACD > 시그널 (상승 모멘텀)
- 히스토그램 < 0: MACD < 시그널 (하락 모멘텀)
히스토그램 변화 분석:
- 히스토그램 바 증가: 모멘텀 강화
- 히스토그램 바 감소: 모멘텀 약화
- 히스토그램 방향 전환: 조기 경고 신호
4. 다이버전스 (Divergence)
MACD의 가장 강력한 신호 중 하나1:
Bullish Divergence (강세 다이버전스):
가격: Higher Low → Lower Low (하락)
MACD: Lower Low → Higher Low (상승)
결론: 하락 모멘텀 약화, 반전 가능
Bearish Divergence (약세 다이버전스):
가격: Lower High → Higher High (상승)
MACD: Higher High → Lower High (하락)
결론: 상승 모멘텀 약화, 반전 가능
학술적 검증
Chong & Ng (2008)
영국 FT30 지수를 대상으로 한 실증 연구4:
연구 방법:
- 기간: 1935-1994
- 대상: FT30 지수
- 전략: MACD 시그널선 교차 전략
결과:
- MACD 전략이 매수-보유 대비 초과 수익 달성
- 특히 약세장에서 효과적 (손실 회피)
- 거래 비용 고려 후에도 양의 수익
한계:
- 과거 데이터 기반 (미래 성과 보장 X)
- 특정 시장/기간에 한정
한계점
1. 후행성 (Lagging Indicator)
MACD는 이동평균 기반이므로 본질적으로 후행합니다2:
- 추세 전환 후에야 신호 발생
- 급격한 가격 변동에 늦게 반응
2. 횡보장 취약성
추세가 없는 구간에서:
- 잦은 교차 신호 발생 (whipsaw)
- 작은 이익/손실 반복
- 거래 비용 증가
3. 파라미터 최적화 함정
Appel(2005)의 경고1:
- 백테스트에서 최적 파라미터를 찾아도 과최적화 위험
- 시장은 항상 변하므로 "최적" 파라미터도 변함
4. 다이버전스 실패
다이버전스는 항상 반전으로 이어지지 않습니다:
- 강한 추세에서는 다이버전스가 무시될 수 있음
- 다이버전스 후에도 추세가 지속되는 경우 빈번
실전 활용 팁
Gerald Appel의 조언1:
- 추세 확인 후 사용: MACD는 추세 시장에서 가장 효과적
- 다중 시간프레임: 상위 시간프레임의 추세 방향으로만 진입
- 다른 지표와 병행: 볼륨, 지지/저항, 다른 오실레이터 확인
- 히스토그램 주시: 교차 전에 히스토그램의 방향 전환 관찰
구현 예시
interface MACDResult {
macd: number[];
signal: number[];
histogram: number[];
}
function calculateMACD(
prices: number[],
fastPeriod: number = 12,
slowPeriod: number = 26,
signalPeriod: number = 9
): MACDResult {
// EMA 계산 헬퍼
const calculateEMA = (data: number[], period: number): number[] => {
const multiplier = 2 / (period + 1);
const ema: number[] = [];
// 첫 번째 EMA = SMA
const firstSMA = data.slice(0, period).reduce((a, b) => a + b, 0) / period;
ema.push(firstSMA);
for (let i = period; i < data.length; i++) {
ema.push((data[i] - ema[ema.length - 1]) * multiplier + ema[ema.length - 1]);
}
return ema;
};
// MACD 계산
const fastEMA = calculateEMA(prices, fastPeriod);
const slowEMA = calculateEMA(prices, slowPeriod);
// MACD Line = Fast EMA - Slow EMA
const macdLine: number[] = [];
const offset = slowPeriod - fastPeriod;
for (let i = 0; i < slowEMA.length; i++) {
macdLine.push(fastEMA[i + offset] - slowEMA[i]);
}
// Signal Line = 9-period EMA of MACD
const signalLine = calculateEMA(macdLine, signalPeriod);
// Histogram = MACD - Signal
const histogram: number[] = [];
const signalOffset = signalPeriod - 1;
for (let i = 0; i < signalLine.length; i++) {
histogram.push(macdLine[i + signalOffset] - signalLine[i]);
}
return {
macd: macdLine,
signal: signalLine,
histogram: histogram
};
}
요약
| 항목 | 내용 |
|---|---|
| 개발자 | Gerald Appel (1979) |
| 유형 | 추세 추종 모멘텀 지표 |
| 구성 | MACD선, 시그널선, 히스토그램 |
| 표준 파라미터 | 12, 26, 9 |
| 주요 신호 | 제로선 교차, 시그널 교차, 다이버전스 |
| 장점 | 추세와 모멘텀 동시 분석, 다양한 신호 |
| 단점 | 후행성, 횡보장 취약, 파라미터 민감 |
Footnotes
-
Appel, G. (2005). Technical Analysis: Power Tools for Active Investors. FT Press. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
Murphy, J.J. (1999). Technical Analysis of the Financial Markets. NYIF. ↩ ↩2
-
Appel, G. & Hitschler, F. (1999). Stock Market Trading Systems. Marketplace Books. ↩
-
Chong, T.T. & Ng, W. (2008). Technical analysis and the London stock exchange. Applied Economics Letters. ↩
참고 문헌 및 출처
Technical Analysis: Power Tools for Active Investors
Gerald Appel
MACD 개발자 Gerald Appel의 저서. MACD의 원리, 활용법, 파라미터 조정에 대한 원저자의 직접 설명.
Technical Analysis: Power Tools for Active Investors
Gerald Appel, Fred Hitschler
MACD 히스토그램의 해석과 다이버전스 전략에 대한 상세 설명.
Technical Analysis of the Financial Markets
John J. Murphy
MACD의 기본 개념과 해석 방법을 체계적으로 정리.
Technical analysis and the London stock exchange: testing the MACD and RSI rules using the FT30
Terence Tai-Leung Chong, Wing-Kam Ng
MACD 전략의 영국 주식 시장 적용 실증 연구.
* 모든 내용은 위 학술 자료 및 공식 문서를 기반으로 작성되었습니다.
Moving Average Convergence Divergence로 백테스트 해보기
실제 시장 데이터로 이 지표의 성능을 검증해보세요. 무료로 시작할 수 있습니다.