서론: 왜 지수이동평균이고, 왜 이 종목인가

단순이동평균(SMA)은 최근 n일 종가를 똑같은 무게로 평균 낸다. 지수이동평균(EMA)은 최근 값에 더 큰 무게를 주고, 오래된 값의 무게는 하루가 지날 때마다 일정한 비율로 줄인다. 가격이 한쪽으로 빠르게 움직일 때 SMA보다 덜 늦게 따라오는 대신, 짧은 되돌림에도 더 자주 흔들린다. 이 글은 그 흔들림이 실제 일봉에서 얼마나 값어치가 있었는지 세어 본다.

HD현대중공업은 이번 구간에서 시험대로 쓰기 좋다. 8월 10일 종가 532,000원을 찍은 뒤 9월 중순에 한 번 반등하고, 10월에 들어 가파르게 밀렸다. 하락, 반등 시도, 재하락이 한 화면에 들어 있어서 이동평균이 틀리는 장면과 맞는 장면이 모두 나온다.

이 글의 데이터 범위
종목      HD현대중공업 (329180)
구간      2026-07-29 ~ 2026-10-13, 50거래일
출처      stockanalysis.com 일봉 (KRX)
--------------------------------------------------
최고 종가  532,000원 (08-10)
최저 종가  365,500원 (10-12)
마지막 종가 366,500원 (10-13)
고점 대비  -31.11% (최고 종가 기준)
첫날 대비  -15.55% (07-29 종가 434,000원 기준)

이 글은 투자 권유가 아니다. 과거 일봉에 지표를 대 본 기록이며, 같은 신호가 앞으로도 같은 결과를 낸다는 보장은 없다.

종가와 거래량 개요

다만 데이터 한계를 먼저 밝혀 둔다. 이번에 확보한 일봉은 50거래일이다. 같은 주소를 파라미터만 바꿔 세 번 더 요청했지만 매번 같은 50행이 돌아왔고, 겹치는 행의 값은 모두 일치했다. 60거래일에는 못 미친다. 이 한계는 아래 계산에 그대로 영향을 준다.

본론: 계산, 실측, 검증

계산식과 파라미터

EMA는 재귀식이다. 첫 유효값은 처음 n개 종가의 단순평균으로 시드를 잡고, 그다음부터 아래 식을 쓴다. 시드를 SMA로 잡는 방식이 가장 흔해서 그렇게 했다.

EMA 계산식
평활 계수   α = 2 / (n + 1)
시드        EMA[n-1] = (C[0] + ... + C[n-1]) / n
재귀        EMA[t] = α × C[t] + (1 - α) × EMA[t-1]
--------------------------------------------------
n = 5       α = 0.3333   첫 유효값 08-04  463,300원
n = 10      α = 0.1818   첫 유효값 08-11  487,350원
n = 20      α = 0.0952   첫 유효값 08-26  482,600원
n = 30      α = 0.0645   첫 유효값 09-09  471,067원

기간은 5, 10, 20, 30 네 가지를 돌렸고, 기준 파라미터는 20으로 잡았다. 20거래일은 한 달 남짓이라 중기 흐름을 볼 때 가장 흔히 쓰는 값이어서다. 5와 10은 반응이 빠른 쪽, 30은 느린 쪽을 대표하라고 넣었다.

예열 구간 때문에 유효값은 줄어든다. 50거래일 중 EMA(5)는 46개, EMA(10)은 41개, EMA(20)은 31개, EMA(30)은 21개만 값이 나온다. 20일선으로 판단할 수 있는 날이 31일뿐이라는 뜻이고, 아래의 모든 적중률은 이 표본 크기 안에서만 읽어야 한다.

종가와 EMA 네 가지

신호 규칙

규칙은 하나만 둔다. 종가가 EMA를 아래에서 위로 넘으면 매수 신호, 위에서 아래로 넘으면 매도 신호로 본다. 맞았는지는 신호 5거래일 뒤 종가로 판정한다. 매수 신호 뒤 종가가 올랐거나 매도 신호 뒤 종가가 내렸으면 적중이다. 수수료와 슬리피지는 넣지 않았고, 손익 시뮬레이션도 하지 않았다. 방향만 센다.

EMA(20) 교차 6회 전수

EMA(20)이 값을 내기 시작한 08-26 이후 종가와 EMA(20)이 교차한 날은 6일이다. 전부 9월에 몰려 있다.

종가-EMA(20) 교차 전수
날짜    신호  종가       5일 뒤 종가  5일 뒤 변화   판정
--------------------------------------------------------
09-09   매수  463,500    440,500     -4.96%       빗나감
09-10   매도  453,500    469,500     +3.53%       빗나감
09-11   매수  479,000    460,000     -3.97%       빗나감
09-15   매도  453,500    455,500     +0.44%       빗나감
09-17   매수  469,500    442,000     -5.86%       빗나감
09-18   매도  460,000    429,000     -6.74%       적중

6번 중 1번이다. 맞은 것은 마지막 09-18 매도뿐이다. 그 뒤로 종가는 EMA(20) 위로 한 번도 올라오지 못했고, 10월 12일에는 EMA(20) 428,662원보다 14.73% 낮은 365,500원까지 내려갔다.

빗나간 5번을 하나씩 보자. 09-09 매수는 종가가 463,500원으로 EMA(20) 460,397원을 막 넘은 날이었다. 거래량이 급증하기 하루 전이다. 다음 날 09-10에 종가가 453,500원으로 도로 내려와 매도 신호가 났고, 이 거래일 거래량은 798,805주로 50일 평균 255,343주의 세 배를 넘었다. 이어 09-11에 종가 479,000원으로 다시 위로 넘으며 매수가 나왔고, 5거래일 뒤인 09-18에는 460,000원으로 3.97% 낮아졌다. 사흘 사이에 매수, 매도, 매수가 차례로 나왔다. 기준선 근처에서 종가가 하루씩 위아래로 튀면 이 규칙은 그때마다 반대 신호를 낸다.

09-17 매수는 종가 469,500원, 하루 +6.58%로 올라 EMA(20) 461,113원을 넘은 날이었다. 이튿날 09-18에 460,000원으로 내려오며 매도로 바뀌었는데, 이 매도가 유일한 적중이다. 같은 이틀 사이에 매수는 빗나가고 매도는 맞았다. 이 매도가 맞은 이유는 신호가 정교해서가 아니라 방향이 이미 아래였기 때문이다.

EMA(20) 교차 신호 시점

SMA(20)과의 차이

같은 구간 SMA(20)으로 같은 규칙을 돌리면 교차가 8번 나온다. 09-09, 09-10, 09-11, 09-15, 09-17의 다섯 번은 EMA(20)과 같은 날이고 모두 빗나갔다. 여기에 09-21 매도(종가 450,500원, 5일 뒤 -3.77%), 09-22 매수(종가 455,500원, -5.27%), 09-23 매도(종가 441,000원, -3.40%)가 이어진다. 매도 둘은 맞고 매수는 빗나가, SMA(20)은 8번 중 2번이다. EMA(20)에 있던 09-18 매도는 SMA(20)에는 없다. 종가가 SMA(20) 위에 아직 남아 있었기 때문이다.

마지막 날 값으로 비교하면 차이가 보인다. 10-13 EMA(20)은 422,742원, SMA(20)은 434,025원으로 SMA가 11,283원 높다. 하락이 이어지는 구간에서는 EMA가 가격에 더 가깝게 내려와 있다. 반대로 상승장에서는 SMA보다 위에 있을 것이다. 이 구간에서는 가격이 내려가는 쪽이었기 때문에 EMA의 장점이 그대로 나왔다.

파라미터를 바꾸면

기간을 바꾸면 교차 횟수와 적중이 크게 달라진다.

기간별 종가-EMA 교차 (5거래일 뒤 방향)
기간      유효값   교차   적중
--------------------------------------------------
EMA(5)     46개     9회    5회   (55.56%)
EMA(10)    41개     5회    2회   (40.00%)
EMA(20)    31개     6회    1회   (16.67%)
EMA(30)    21개     4회    1회   (25.00%)

가장 빠른 EMA(5)가 가장 많이 맞았다. 9번 중 5번이다. 그러나 55.56%는 동전 던지기와 구별하기 어렵다. 표본이 9개라서 한두 번이 뒤집히면 숫자가 확 달라진다. 기간이 길어질수록 적중이 줄어든 모양이 그럴듯해 보이지만, 유효값 21개짜리 EMA(30)과 46개짜리 EMA(5)를 같은 잣대로 비교하는 것부터가 무리다. 느린 선일수록 표본이 모자라서 불리하다.

EMA(5)에서 맞은 5번은 08-11 매도, 08-18 매도, 08-28 매도, 09-07 매수, 09-21 매도다. 빗나간 4번은 08-14 매수(5일 뒤 -10.69%), 08-27 매수(-7.45%), 09-15 매도(+0.44%), 09-17 매수(-5.86%)다. 맞은 것은 대부분 매도, 빗나간 것은 대부분 매수다. 이 구간이 하락장이어서 나온 편향이다.

기간별 적중과 EMA(20) 이탈률

오른쪽 막대는 종가가 EMA(20)에서 벗어난 비율이다. 31일 중 종가가 EMA(20) 위에 있던 날은 4일뿐이고, 최대 이탈은 09-11의 +3.78%, 반대편 최대는 10-12의 -14.73%였다. 위쪽으로는 3.78%가 한계였는데 아래쪽으로는 14.73%까지 갔다.

봇 게이트에 넣을 것인가

이번 표본으로는 종가-EMA 교차를 단독 진입 조건으로 쓰지 않는 쪽으로 정한다. 6번 중 1번이라는 숫자 때문만은 아니다. 교차가 9월 9일부터 18일 사이에 몰려 있었고, 기준선 근처에서 종가가 오르내리는 박스 구간에서는 신호가 서로를 지운다. 필터가 필요하다. 예를 들어 종가와 EMA의 이탈률이 일정 폭 이상일 때만 신호로 인정하는 식이다. 다만 그 폭을 이 50일 데이터로 정하면 과최적화가 되니 여기서는 정하지 않는다.

EMA(10)과 EMA(20)의 교차도 같이 보려 했다. EMA(20)이 값을 내기 시작한 08-26 이후 EMA(10)은 한 번도 EMA(20) 위로 올라간 적이 없다. 차이는 -2,344원(09-18)에서 -19,725원(10-13) 사이였다. 이 구간에서는 교차 자체가 한 번도 없었으므로 적중을 셀 수 없다. 그냥 아래에 머물렀고, 이 지표가 그 상태를 정확히 알려 준 날로 기록해 둔다.

결론: 이번 구간에서 남길 것

첫째, 짧은 EMA는 하락 추세에서 맞는다. 하지만 이는 추세가 이미 아래로 서 있었기 때문이다. EMA(5)는 9번 중 5번 맞았고 그중 4번이 매도였다. 하락장에서 매도가 맞는 것은 지표의 공이라기보다 방향의 몫이다.

둘째, EMA(20)의 6번 중 1번은 지표의 결함보다 표본의 문제일 가능성이 크다. 50거래일에서 31일만 유효하고, 신호는 열흘 안에 몰렸다. 같은 규칙을 다른 종목, 더 긴 구간에 대 봐야 이 결과가 우연인지 구조인지 가려진다. 이번 글만으로는 판단할 수 없다.

이 구간에서 종가가 EMA(20)을 위로 넘은 세 번(09-09, 09-11, 09-17)은 모두 지지선 구실을 못 했다. 거래량이 70만~80만 주까지 붙은 09-10과 09-11이 기관이 받치는 장면일 수 있었는데, 방향이 매도, 매수로 엇갈려 일봉만으로는 읽을 수 없었다.

10월 13일 현재 종가 366,500원은 EMA(5) 384,493원 아래다. 모든 EMA가 종가 위에 있다. 다음에 확인할 것은 종가가 EMA(5)를 위로 넘는 날이 오는지, 그 날 거래량이 어떤지다. 지금 숫자로는 판단을 보류한다.

본 글은 투자 권유가 아니며, 모든 투자 판단과 손익의 책임은 투자자 본인에게 있다.

약어 풀이

* 이 글에 나온 영어 약어를 풀어 둔다.

  • EMA (Exponential Moving Average): 지수이동평균. 최근 값에 더 큰 가중치를 주는 이동평균.
  • SMA (Simple Moving Average): 단순이동평균. 최근 n일 값을 같은 무게로 평균한 값.
  • KRX (Korea Exchange): 한국거래소. 코스피와 코스닥이 상장된 시장.