서론: 왜 MACD, 왜 기아
MACD는 단기 지수이동평균에서 장기 지수이동평균을 뺀 값이다. 가격이 두 평균선 사이에서 얼마나 벌어졌는지를 한 줄로 보여 주고, 그 줄을 다시 평활한 신호선과 비교해 추세의 힘이 붙는지 빠지는지를 읽는다. 쓰는 사람이 많아서 설명은 흔하다. 대신 데이터가 짧을 때 어디까지 믿을 수 있는지를 따져 본 글은 드물다. 이번 글이 그 부분을 다룬다.
기아는 이번 구간에서 한 방향으로 길게 밀렸다. 8월 14일 종가 141,700원이 구간 최고였고 10월 8일 종가는 106,800원이었다. 고점 종가 대비 -24.63%다. 추세가 이렇게 선명한 종목에서 MACD가 무엇을 말하는지, 그리고 말하지 못하는 게 무엇인지 확인하기 좋은 표본이다.
미리 밝혀 둘 한계가 있다. 이번에 받을 수 있었던 일봉은 50거래일이 전부였다. 같은 주소를 파라미터를 바꿔 여러 번 요청해도 7월 27일 이전 행은 나오지 않았다. 서로 다른 두 요청에서 겹치는 행의 값은 모두 일치했지만, 두 요청이 같은 페이지를 돌려준 것이라 독립된 교차검증이라고 부르기는 어렵다. 단일 출처 자료라는 점을 그대로 적어 둔다. 표준 MACD는 예열에만 34거래일이 들어가서, 50거래일에서 쓸 수 있는 신호선 값은 17개다.
종목 기아 (KRX 000270)
구간 2026-07-27 ~ 2026-10-08, 50거래일
출처 stockanalysis.com 일봉 (단일 출처)
--------------------------------------------------
최고 종가 141,700원 (08-14)
최저 종가 106,800원 (10-08, 마지막 봉)
구간 고가 142,400원 / 구간 저가 106,300원
첫 종가 대비 -18.10% (130,400원 에서 106,800원)
고점 종가 대비 -24.63%이 글은 과거 데이터를 계산한 기록이며 투자 권유가 아니다. 매수와 매도 판단과 그 결과는 읽는 사람의 몫이다.

본론: 계산, 실측, 검증
계산식
지수이동평균은 아래처럼 쓴다. 첫 값은 처음 n개 종가의 단순평균으로 시작하고, 그다음부터 재귀로 이어 간다.
EMA(n) α = 2 / (n + 1)
EMA[t] = α × 종가[t] + (1 - α) × EMA[t-1]
첫 값 = 처음 n개 종가의 평균
--------------------------------------------------
MACD EMA(12) - EMA(26)
신호선 MACD 의 EMA(9), 첫 값은 MACD 처음 9개의 평균
히스토그램 MACD - 신호선
--------------------------------------------------
첫 유효값 MACD 는 26번째 봉, 신호선은 34번째 봉numpy 배열 위에서 이 재귀를 직접 구현했고 지표 라이브러리는 쓰지 않았다. 파라미터 12, 26, 9는 제안자가 쓴 값이고 대부분의 차트 프로그램 기본값이어서 골랐다. 이 선택이 특별히 최적이라는 근거는 없다. 기본값이 무엇을 말하는지부터 보고, 뒤에서 바꿔 본다.
표준값에서 실제로 나온 것
50거래일 중 처음 25거래일은 MACD 값이 없다. 26번째 봉인 9월 1일에야 MACD가 -259.4로 처음 찍힌다. 신호선은 9개가 더 쌓여야 해서 9월 11일에 -1,067.3으로 시작한다. 이날 히스토그램은 -304.3이다.
여기서 고점을 떠올려 보자. 종가 고점은 8월 14일 141,700원이었다. 9월 1일 종가는 131,200원으로, MACD가 처음 값을 낸 시점에 이미 고점 대비 -7.41%였다. 신호선이 생긴 9월 11일 종가는 126,600원, 고점 대비 -10.66%다. 지표가 말을 시작했을 때 하락의 상당 부분은 지나가 있었다. 지연이 큰 지표라는 건 알려진 사실이지만, 50거래일 표본에서는 그 지연이 표본 전체의 절반을 먹었다.

값이 생긴 뒤의 모습은 단순했다. MACD가 유효한 25거래일 전부가 0선 아래였다. 신호선이 유효한 17거래일에서 히스토그램은 전부 음수였다. 즉 MACD선이 신호선을 위로 뚫는 교차도, 아래로 뚫는 교차도 한 번도 없었다. 10월 8일 값은 MACD -4,850.4, 신호선 -3,954.6, 히스토그램 -895.8이고, 이 -895.8이 17일 중 가장 깊다.
마지막 봉에서 두 평균선의 위치도 적어 둔다. 10월 8일 EMA(12)는 114,249.78원, EMA(26)은 119,100.21원이고 둘의 차가 MACD -4,850.43이다. 종가 106,800원은 EMA(26)보다 10.33% 아래에 있다. 신호선이 처음 생긴 9월 11일부터 10월 8일까지 종가는 126,600원에서 106,800원으로 15.64% 내렸고, 같은 기간 MACD는 -1,371.6에서 -4,850.4로 벌어졌다. 가격이 내리는 만큼 MACD가 아래로 따라간 것이다. 여기까지는 추세가 이어지고 있다는 사실을 확인해 줄 뿐, 언제 끝날지에 대해서는 아무 말도 하지 않는다.
그러니 표준 MACD의 교차 신호는 이 구간에서 맞은 횟수도 틀린 횟수도 셀 수 없다. 표본이 0건이다. 이 사실이 이 글에서 가장 정직한 결과라고 생각한다.
교차가 없으면 무엇을 볼 수 있나
교차 대신 히스토그램의 방향 전환을 신호로 삼는 사람이 많다. 히스토그램이 전날보다 올라가면 하락 힘이 약해진다고 읽는 방식이다. 같은 17거래일에서 전날보다 히스토그램이 커진 날을 세어 보니 6번이었다. 이때 이후 종가를 같이 적는다.
날짜 종가 히스토그램 다음날 3거래일 뒤
--------------------------------------------------
09-18 121,900 -633.7 -1.56% -5.33%
09-28 117,600 -762.3 -1.36% -3.66%
09-29 116,000 -738.9 -2.76% -2.67%
10-01 113,300 -839.1 -0.35% -3.27%
10-02 112,900 -775.6 -0.27% -5.40%
10-06 112,600 -683.6 -2.66% 자료 없음여섯 번 모두 다음 날 종가가 내렸다. 3거래일 뒤를 볼 수 있는 다섯 번도 전부 내렸다. 맞은 신호가 하나도 없다. 히스토그램이 반등한다는 말은 하락 속도가 줄었다는 뜻이지 가격이 오른다는 뜻이 아니었다. 이 구간에서는 속도가 줄어든 날에도 가격은 계속 내려갔다. 마지막 10월 6일은 이후 종가가 2거래일뿐이라 3거래일 열은 비워 두었다. 9월 28일 행은 직전 거래일이 9월 23일이어서, 9월 24일부터 27일은 일봉 표에 없는 날이다.
표본이 6건뿐이라서 이것으로 히스토그램 전환이 늘 틀린다고 말할 수는 없다. 이 하락 추세 안에서 여섯 번 연속으로 빗나갔다는 사실까지만 확인했다.
파라미터를 바꾸면
유효값이 모자라서 파라미터를 줄여 보았다. 짧게 줄이면 예열이 짧아지고 신호가 빨라진다. 대신 잡음도 늘어난다.
설정 히스토그램 유효 첫 유효일 교차
--------------------------------------------------
12, 26, 9 17거래일 09-11 0회
8, 17, 9 26거래일 08-31 0회
6, 19, 5 28거래일 08-27 2회
5, 13, 6 33거래일 08-20 2회(8, 17, 9)에서는 MACD가 0 위인 날이 34일 중 7일, (5, 13, 6)에서는 38일 중 10일이었다. 짧은 설정에서는 8월 중순 무렵 구간 일부가 0선 위로 잡혔다는 뜻이다. 표준값은 이 구간을 아예 보지 못한다.
교차는 (5, 13, 6)에서 9월 10일 상향, 9월 14일 하향이 나왔다. 상향 신호일 종가 127,000원은 5거래일 뒤인 9월 17일 120,900원으로 -4.80%였다. 틀렸다. 하향 신호일 종가 124,200원은 5거래일 뒤인 9월 21일 120,000원으로 -3.38%였다. 하향은 맞았다. 그러나 두 신호는 거래일로 하루를 사이에 둔 9월 10일과 14일에 연달아 나왔다. 상향 신호를 따랐다면 이틀 만에 반대 신호가 온 셈이다. (6, 19, 5)도 9월 11일 상향 후 5거래일 -3.71%, 9월 14일 하향 후 -3.38%로 같은 모양이었다.

짧은 설정이 더 낫다고 보기도 어렵다. 2회 중 1회가 맞았고, 그 1회는 하락 추세에서 나온 하향이라 추세를 따라간 것일 뿐이다. 표본은 2건이다. 4개 설정 모두에서 결론이 같은 건 하나다. 이 구간의 MACD는 일관되게 0선 아래로 향했다.
봇 게이트에 넣을 것인가
단독 진입 신호로는 넣지 않는다. 이유는 위에서 확인한 두 가지다. 표준값은 50거래일에서 값이 17일치뿐이고, 값이 생긴 뒤에도 교차 신호가 없다. 짧은 설정은 신호가 나오지만 2건 중 1건을 놓쳤다.
필터로는 생각해 볼 수 있다. MACD가 0선 아래면 롱 진입을 막는 식이다. 이번 구간에서는 25거래일 내내 이 필터가 닫혀 있었고 그동안 가격은 계속 내렸다. 그러나 필터가 맞았는지 보려면 상승 구간에서 필터가 열려 있었는지도 같이 봐야 한다. 이번 자료로는 상승 구간이 8월 상반기뿐이고, 그 시점에 표준 MACD는 값이 없었다. 확인이 안 되는 부분이다.
결론: 남기는 것
두 가지를 남긴다. 첫째, 지표를 쓰려면 예열에 몇 거래일이 들어가는지 먼저 세어야 한다. 이번 표본에서 표준 MACD는 절반이 예열이었다. 신호선 값 17개로 결론을 내는 건 무리다. 이번에는 7월 27일 이전 일봉을 구하지 못했고, 그래서 결론의 상당 부분이 “아직 판단할 수 없다"로 끝난다.
둘째, 히스토그램이 반등해도 가격은 따라오지 않았다. 여섯 번 전부였다. 하락 속도의 변화와 가격 방향은 다른 이야기다. 이 말이 다른 종목, 다른 구간에서도 성립하는지는 모른다.
다음에 확인할 것이 하나 있다. 기아가 반등해서 MACD가 0선을 올라올 때, 표준값이 얼마나 늦게 알려 주는지다. 10월 8일까지의 값으로는 그 시점이 언제일지 알 수 없다. 이 글은 투자 권유가 아니며, 이 글의 계산 결과로 이루어진 거래의 책임은 거래한 사람에게 있다.
약어 풀이
* 이 글에 나온 영어 약어를 풀어 둔다.
- MACD (Moving Average Convergence Divergence): 단기와 장기 지수이동평균의 차이로 추세의 힘을 읽는 지표.
- EMA (Exponential Moving Average): 최근 값에 더 큰 가중을 주는 지수이동평균.
- KRX (Korea Exchange): 한국거래소.