서론: 왜 이동평균이고, 왜 한화에어로스페이스인가

이동평균은 최근 n일 종가의 평균을 매일 한 칸씩 밀어 가며 이어 붙인 선이다. 들쭉날쭉한 종가에서 잡음을 덜어내고 방향만 남기려는 도구라서, 지표 중에서 가장 오래되고 가장 많이 쓰인다. 이 글에서는 가중치를 주지 않는 단순이동평균(SMA, Simple Moving Average)만 다룬다. 지수이동평균이나 적응형 이동평균은 지표 큐에서 순서가 오면 따로 쓴다. 같은 계열의 삼성물산 ALMA 편이 이미 있으니, 가중 방식이 궁금하면 그쪽을 함께 보면 된다.

한화에어로스페이스의 이번 구간은 이동평균을 시험하기에 모양이 좋다. 7월 29일 종가 810,000원에서 8월 13일 종가 1,185,000원까지 열한 거래일 만에 46.30% 올랐고, 그 뒤 10월 8일 종가 891,000원까지 24.81% 내려왔다. 급등 뒤에 길게 흐르는 하락이라, 평균선이 추세를 얼마나 늦게 알려주는지 확인하기 쉽다.

데이터 범위부터 밝힌다. 일봉은 stockanalysis.com 한 곳에서만 받았고, 같은 데이터를 서로 다른 두 요청으로 받아 겹치는 행이 모두 일치하는 것까지 확인했다. 다만 한 번에 받을 수 있는 분량이 50행이었고, 다른 파라미터로 다시 요청해도 같은 50행만 돌아왔다. 그래서 이 글의 표본은 50거래일이다. 이 한계는 뒤에서 20일선의 유효값 개수에 그대로 영향을 준다. 외부 출처와의 교차검증은 하지 못했으니 단일 출처 데이터로 읽어 주기 바란다.

이 글의 데이터 범위
종목      한화에어로스페이스 (KRX 012450)
구간      2026-07-27 ~ 2026-10-08 (50거래일)
출처      stockanalysis.com 일봉 (단일 출처)
--------------------------------------------------
장중 최고  1,255,000원 (8/19)
장중 최저  783,000원 (7/29)
종가 최고  1,185,000원 (8/13)
종가 최저  810,000원 (7/29)
마지막 종가 891,000원 (10/8)
종가 최고 대비 -24.81%
구간 시작 종가 대비 -0.89%

이 글은 과거 데이터를 계산해 본 학습 기록이며 투자 권유가 아니다. 매매 판단과 손익은 전적으로 본인 책임이다.

한화에어로스페이스 일봉과 거래량

위 차트에서 먼저 눈에 들어오는 것은 8월 19일의 거래량 407,773주다. 이 구간에서 가장 크다. 같은 날 장중 최고가 1,255,000원을 찍었지만 종가는 1,177,000원이었고, 이틀 뒤 8월 21일에 -7.03%가 나왔다. 고점이 거래량 폭발과 함께 만들어졌다는 점은 기억해 두자.

본론: 계산, 실측, 검증

정의와 계산식

SMA의 정의는 짧다. t일의 종가를 C(t)라 할 때 아래와 같다. 이 글의 모든 값은 numpy로 직접 구현해 계산했고 지표 라이브러리는 쓰지 않았다.

계산식
SMA(n)[t]   = ( C[t] + C[t-1] + ... + C[t-n+1] ) / n
이격률[t]   = ( C[t] / SMA(20)[t] - 1 ) x 100
--------------------------------------------------
상향 교차   C[t-1] <= SMA[t-1]  이고  C[t] > SMA[t]
하향 교차   C[t-1] >= SMA[t-1]  이고  C[t] < SMA[t]
적중 판정   상향은 이후 종가가 교차일 종가보다 높으면 적중
 
유효값 개수 SMA(5) 46 / SMA(10) 41 / SMA(20) 31

n일선은 n번째 종가가 있어야 첫 값이 나온다. 50거래일 표본에서 SMA(5)는 46개, SMA(10)은 41개, SMA(20)은 31개의 유효값만 갖는다. SMA(20)의 첫 값은 8월 24일에 나왔다. 7월 27일부터 8월 21일까지 19거래일은 20일선 없이 지나간 구간이다. 8월 13일의 종가 고점이 20일선에 한 번도 비교되지 못했다는 뜻이기도 하다.

파라미터를 이렇게 골랐다

5, 10, 20일을 기본으로 잡았다. 5일은 한 주, 20일은 한 달 남짓한 거래일 수라서 관행적으로 가장 많이 보는 조합이다. 관행을 따랐다는 것 외의 이유는 없고, 한화에어로스페이스에 맞춰 최적화한 값이 아니다. 신호 판정의 기준선은 SMA(20)으로 정했다. 50거래일 중 31일치라서 표본이 가장 얇은 대신, 추세 판단용으로 가장 널리 쓰이는 선이기 때문이다. 이 선택이 결과를 얼마나 흔드는지는 뒤의 민감도에서 따로 본다.

종가와 SMA 5·10·20

차트를 보면 SMA(20)은 9월 4일에 1,115,550원으로 정점을 찍고 내려온다. 정점 이후 21거래일 가운데 20일 동안 전일보다 낮아졌고, 10월 8일 값은 1,042,100원이다. 종가가 이미 8월 13일에 정점을 지났으니, 20일선의 정점은 종가보다 대략 3주 늦게 나타난 것이다. 평균선이 후행한다는 설명이 교과서 문장에서 끝나지 않고 숫자로 확인되는 장면이다.

10월 8일 종가 891,000원은 SMA(20) 1,042,100원보다 14.50% 아래다. 이격률이 이 구간 최저다. 직전 최저는 9월 2일의 -7.95%였으니 거의 두 배로 벌어졌다.

종가가 SMA(20)를 가로지른 일곱 번

가장 흔한 사용법은 종가가 평균선을 위로 뚫으면 사고, 아래로 뚫으면 파는 것이다. 위 정의대로 세면 31일의 유효 구간에서 교차는 모두 일곱 번 나왔다. 상향 세 번, 하향 네 번이다. 교차일 이후 1·3·5거래일 뒤 종가 수익률을 같이 적는다.

종가-SMA(20) 교차 신호 전수
 # 일자   방향  교차일 종가  SMA(20)     1일     3일     5일
--------------------------------------------------------------
 1 08/31  하향   1,102,000   1,105,500   -3.99%  -4.99%  -5.72%  적중
 2 09/14  상향   1,137,000   1,093,050   -6.51%  -3.52%  -6.16%  빗나감
 3 09/15  하향   1,063,000   1,088,900   -0.75%  +1.41%  -0.56%  5일만 적중
 4 09/17  상향   1,097,000   1,079,300   -1.73%  -3.65%  -5.74%  빗나감
 5 09/18  하향   1,078,000   1,078,950   -1.02%  -5.29%  -6.12%  적중
 6 10/02  상향   1,072,000   1,054,850   -4.57% -16.88%     n/a  빗나감
 7 10/06  하향   1,023,000   1,053,650   -4.99%     n/a     n/a  1일만 확인

종가-SMA(20) 교차 신호 7건과 이격률

5거래일 뒤 값이 확정된 신호는 1번부터 5번까지 다섯 건이다. 이 중 적중은 1, 3, 5번 세 건이고 2, 4번 두 건이 빗나갔다. 하향 신호는 확정된 세 건이 모두 5일 뒤 종가가 내려가 있었다. 상향 신호는 세 건 전부 빗나갔다. 6번은 5일치가 아직 없지만, 3거래일 뒤인 10월 8일 종가가 교차일보다 16.88% 낮다. 5일째 값은 10월 9일 이후 일봉이 있어야 채울 수 있다.

가장 보기 좋지 않은 구간은 9월 14일부터 18일까지 닷새다. 14일 상향, 15일 하향, 17일 상향, 18일 하향으로 평균선을 네 번 넘나들었다. 종가가 20일선 위아래 수 퍼센트 폭에서 오갈 때 교차 신호가 얼마나 쉽게 오작동하는지 이 닷새가 보여준다. 14일에 1,137,000원으로 평균선 위로 올라선 종가는 그다음 날 -6.51%로 1,063,000원까지 내려왔다.

3번 신호는 따로 본다. 하향 교차 뒤 3일째에 +1.41%로 올라서 3일 기준으로는 빗나갔고, 5일째에 -0.56%로 돌아와서야 맞은 것이 됐다. 판정 기간을 3일로 잡았다면 결과가 달라졌을 신호다. 같은 신호도 어느 시점에서 채점하느냐로 적중과 오답이 갈린다.

10월 2일의 6번 신호는 이번 구간의 상향 신호 중 대가가 가장 컸다. 1,072,000원에 20일선 위로 올라선 뒤 891,000원까지 갔다. 10월 6일(-4.57%), 10월 7일(-4.99%), 10월 8일(-8.33%)로 사흘 연속 내렸고, 이 사흘이 이격률 -14.50%를 만들었다. 20일선이 이 하락을 미리 알려준 흔적은 없다. 하향 교차가 10월 6일에 나오긴 했지만, 그때는 이미 한 번 -4.57%를 맞은 뒤였다.

평균 위에 있는 날과 아래에 있는 날

신호 대신 위치만 보면 어떨까. 31일 중 종가가 20일선 위에 있던 날은 8일, 아래는 23일이다. 위에 있던 8일의 다음 날 평균 수익률은 -1.60%였고 오른 날은 2일이었다. 아래에 있던 날은 다음 날이 있는 22일 기준으로 평균 -0.32%, 오른 날은 10일이었다. 방향만 보면 20일선 아래가 덜 나빴다는 뜻인데, 8일짜리 표본의 평균이라 의미를 부여하기 어렵다. 수치만 적어 두고 결론은 내리지 않는다.

파라미터를 바꾸면

기준선을 SMA(3), (5), (10), (15), (20)으로 바꿔 같은 규칙을 적용했다. 교차 횟수가 달라지는 것은 예상대로다. 5거래일 뒤 방향 적중은 겹치는 신호가 많아 서로 독립이 아니므로 참고용으로만 읽는다.

창 길이별 민감도 (종가가 SMA를 가로지르는 규칙)
창   유효값  교차(상향)  5일 뒤 적중
----------------------------------------
 3     48     18 (9)      9 / 16
 5     46     11 (5)      5 /  9
10     41      9 (4)      4 /  7
15     36     11 (5)      4 /  9
20     31      7 (3)      3 /  5

창 길이별 교차 횟수와 적중률

창이 짧을수록 신호가 많다. 3일선은 48개 유효값에서 18번, 20일선은 31개 유효값에서 7번 교차했다. 적중 비율은 44%에서 60% 사이에서 움직였고, 어느 창도 뚜렷하게 동전 던지기를 넘지 못했다. 분모가 5에서 16 사이라서 이 차이는 숫자의 흔들림으로 보는 편이 안전하다.

5일선과 20일선이 서로 교차하는 골든·데드크로스 방식으로 바꾸면 신호는 세 번으로 줄어든다. 9월 1일 하향, 9월 17일 상향, 9월 21일 하향이다. 5거래일 뒤 수익률은 각각 -2.93%, -5.74%, -5.62%라서 하향 두 건은 맞고 상향 한 건은 틀렸다. 가격 교차보다 신호가 적어 오작동이 줄었지만, 대신 확인이 늦다. 9월 21일의 하향 교차는 20일선이 9월 4일 정점에서 내려오기 시작한 지 11거래일째에 나왔다.

봇 게이트에 넣을 것인가

매수 진입 트리거로는 넣지 않는다. 이번 구간에서 상향 교차 세 건이 모두 빗나갔고, 이유도 단순하다. 20일선이 내려가는 중에 종가가 잠깐 위로 올라서는 반등은 추세 전환 신호가 아니었다. 전일 대비 20일선이 내려가는 날의 상향 신호는 2번과 4번이었으니 기울기 조건을 붙이면 둘은 걸러낸다. 하지만 6번은 20일선이 전일보다 올라 있던 날이라 걸러지지 않는다. 그리고 이 조건은 결과를 본 뒤에 붙인 것이라 이 표본에서는 검증된 것이 아니다.

필터로는 검토해 볼 만하다. 종가가 20일선 아래에 있는 동안 신규 매수를 막는 규칙이다. 이 구간에서는 31일 중 23일을 이 규칙이 막았고, 막힌 날의 다음 날 평균은 -0.32%였다. 다만 이것도 한 종목의 한 구간이라 규칙으로 올리기에는 근거가 얇다. 다른 종목과 상승 구간에서 같은 필터가 어떻게 작동하는지 확인하기 전에는 게이트 후보로만 둔다.

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

남길 것은 두 가지다. 하나는 후행성이다. 8월 13일의 종가 고점이 지나고 3주가 지나서야 20일선이 꺾였고, 그 사이에 가격은 이미 몇 차례 큰 폭으로 움직였다. 20일선은 급락 직전의 경고가 아니라 급락 뒤의 기록으로 읽는 편이 맞았다. 하나는 횡보 구간의 오작동이다. 9월 14일부터 18일까지의 닷새 동안 평균선을 넘나든 네 번이 그렇다.

이동평균이 쓸모없다고 결론 내릴 수는 없다. 50거래일이라는 짧은 표본, 한 종목, 하락이 지배한 한 구간이기 때문이다. 상승 추세가 길게 이어진 구간에서 같은 20일선이 어떻게 행동하는지는 이 글에서 확인하지 못했다.

다음에 확인할 숙제는 10월 6일 하향 신호의 5일째 결과다. 10월 8일까지 두 거래일치만 있고, 이후 반등이 나오면 이 신호도 3번 신호처럼 판정 시점에 따라 갈릴 수 있다. 이 글의 모든 수치는 수집한 일봉에서 직접 계산한 값이며 투자 권유가 아니다. 매매 결정과 그 결과는 본인의 몫이다.

약어 풀이

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

  • SMA (Simple Moving Average): 단순이동평균. 최근 n일 종가를 같은 비중으로 평균한 값을 하루씩 밀어 이은 선.
  • KRX (Korea Exchange): 한국거래소. 코스피와 코스닥을 운영하는 국내 거래소. 종목코드 앞에 붙은 거래소 구분이다.
  • ALMA (Arnaud Legoux Moving Average): 아르노 르구 이동평균. 가우시안 가중치를 주어 후행을 줄이려 만든 이동평균.
  • MA (Moving Average): 이동평균. 일정 기간 가격의 평균을 이어 붙인 추세 추종 지표.