모멘텀(Momentum)은 지표 중에서 계산이 가장 단순한 축에 든다. 오늘 종가에서 n일 전 종가를 빼면 끝이다. 이동평균처럼 가격을 매끄럽게 펴지도 않고, RSI처럼 0에서 100 사이로 눌러 담지도 않는다. 가격이 n일 동안 얼마나 움직였는지 원 단위로 그대로 보여 준다. 0보다 크면 n일 전보다 비싸고, 0보다 작으면 쌌다는 뜻이다. 이 글은 그 0선을 지날 때 나오는 신호가 얼마나 믿을 만한지 삼성생명 일봉으로 시험한다.

삼성생명을 고른 이유는 구간이 거칠기 때문이다. 이번에 확보한 50거래일 동안 일간 등락률이 -13.09%에서 +17.99%까지 튀었다. 추세가 깔끔하게 이어지는 종목에서는 어떤 지표든 그럴듯해 보인다. 하루에 10%씩 흔들리는 구간에서 단순한 지표가 어디까지 버티는지 보는 쪽이 값어치가 있다.

이 글의 데이터 범위
종목      삼성생명
코드      032830 (KRX)
구간      2026-07-24 ~ 2026-10-07 (50거래일)
출처      stockanalysis.com 일봉
--------------------------------------------------
첫 종가    318,000원
마지막 종가 282,500원 (구간 수익률 -11.16%)
종가 최고  328,500원 (08-21)
종가 최저  264,000원 (07-30)
고가 최고  329,000원 (08-21)
저가 최저  246,000원 (07-29)
낙폭      종가 최고 대비 마지막 종가 -14.00%

이 글은 지표의 작동 방식을 검증하는 기록이며 투자 권유가 아니다. 매매 판단과 손익의 책임은 본인에게 있다.

삼성생명 일봉과 거래량 개요

계산식과 파라미터

모멘텀의 정의는 한 줄이다. 아래 도판의 식 그대로 numpy로 구현했고 라이브러리는 쓰지 않았다.

Momentum 계산식
MOM(n)[t] = Close[t] - Close[t-n]
--------------------------------------------------
상향 신호  MOM[t-1] <= 0 이고 MOM[t] > 0
하향 신호  MOM[t-1] >= 0 이고 MOM[t] < 0
판정      신호 봉 종가 대비 5거래일 뒤 종가가
          상향 신호면 올랐을 때, 하향 신호면 내렸을 때 적중

기간 n은 10으로 골랐다. 거래일 10일은 달력으로 두 주다. 5일은 하루 이틀 흔들림에도 0선을 오가서 잡음이 많을 것 같았고, 20일은 50일짜리 표본에서 유효값이 30개밖에 남지 않아 신호 개수가 너무 줄 것 같았다. 두 극단 사이에서 가장 흔하게 쓰는 10을 기준으로 잡고, 뒤에서 5와 20으로 결과가 어떻게 달라지는지 따로 본다.

예열 구간이 있다는 점을 먼저 적어 둔다. MOM(10)은 10일 전 종가가 있어야 계산되므로 50개 봉 가운데 앞의 10개는 값이 없다. 유효값은 40개이고 첫 값은 08-07의 -42,500원이다(275,500원에서 07-24 종가 318,000원을 뺀 값). 이 구간 안에서 0선 위에 있던 날이 19일, 아래에 있던 날이 21일이다.

또 하나 한계가 있다. 이번에 받을 수 있었던 일봉이 50거래일치까지였다. 요청 방식을 몇 가지로 바꿔 보았으나 같은 50행만 돌아왔고, 겹치는 행의 값은 요청마다 일치했다. 다만 출처는 한 곳이라 다른 데이터와 맞춰 보지는 못했다. 표본이 작다는 사실은 아래 모든 결과에 그대로 따라붙는다.

실측: MOM(10)이 그린 모양

MOM(10) 곡선과 0선 교차 신호

MOM(10)의 최고값은 08-21의 +41,000원이다. 그날 종가 328,500원에서 10거래일 전인 08-06 종가 287,500원을 뺀 값이다. 최저는 앞에서 말한 08-07의 -42,500원이다. 모멘텀 곡선은 08-11 이후 대체로 0선 위에 있었고, 09-11부터 10-01까지는 열네 거래일 내내 0선 아래에 머물렀다. 가격이 9월 초 고점대에서 천천히 내려오는 동안 MOM이 0 아래에 오래 있었다는 점은 지표가 본래 하려던 일을 한 대목이다. 그 구간에는 0선을 건너는 일이 없어서 신호도 없었다. 신호가 몰린 곳은 오히려 8월 중순과 9월 초의 등락이 큰 구간이었다. 값이 0 근처에서 위아래로 흔들리면 교차가 연달아 나오기 때문이다.

문제는 그 사이사이였다. 0선 교차를 전부 나열하면 이렇다. 판정은 신호 봉 종가를 기준으로 5거래일 뒤 종가를 비교한 결과다.

MOM(10) 0선 교차 전수
날짜   방향  종가       5일 뒤   판정
--------------------------------------------------
08-11  상향  289,500원   -4.66%   빗나감
08-14  하향  301,000원   -5.15%   적중
08-18  상향  310,500원   -8.21%   빗나감
08-19  하향  276,000원  +12.14%   빗나감
08-20  상향  297,000원   +3.37%   적중
09-01  하향  309,500원   -0.48%   적중
09-02  상향  294,000원   +3.23%   적중
09-04  하향  297,500원   +3.36%   빗나감
09-07  상향  312,000원   -4.49%   빗나감
09-09  하향  303,500원   -6.59%   적중
09-10  상향  309,500원   -9.37%   빗나감
09-11  하향  307,500원   -7.80%   적중
--------------------------------------------------
10-02  상향  289,000원   판정 불가 (5거래일 미경과)
10-07  하향  282,500원   판정 불가 (5거래일 미경과)

교차는 모두 14번이고, 5거래일이 아직 지나지 않은 마지막 두 번을 빼면 12번이 판정 대상이다. 적중은 6번, 빗나감도 6번이다. 동전 던지기와 구별이 안 되는 숫자다.

방향별로 나누면 모양이 더 구체적이다. 상향 신호 6번 가운데 적중은 2번뿐이고, 5거래일 뒤 수익률의 평균은 -3.36%였다. 올라타라는 신호를 따라갔다면 평균적으로 손해를 봤다는 말이다. 하향 신호는 6번 중 4번이 맞았지만 평균 수익률은 -0.75%로 폭이 작았다. 판정한 12번의 5거래일 뒤 변동폭은 절댓값 평균 5.74%였다. 신호 뒤에 가격이 크게 움직이긴 했는데 그 방향이 신호와 맞는 날과 어긋나는 날로 갈렸다. 지표가 방향을 알려 주지 못하면 변동폭이 큰 종목일수록 신호 한 번의 손실도 커진다. 참고로 이 50일 안에서 아무 날이나 골라 5거래일 뒤를 본 평균은 +0.05%였고, 45번 중 20번이 올랐다.

빗나간 신호를 하나씩 보자. 08-18의 상향 신호는 직전 이틀 동안 올라 310,500원까지 간 자리였다. 바로 다음 날 08-19에 종가가 276,000원으로 -11.11% 주저앉았다. 이어 08-19에 하향 신호가 나왔는데, 이번에는 정반대로 5거래일 뒤 309,500원까지 되돌렸다. 지표가 틀린 이유는 단순하다. MOM(10)은 10거래일 전 종가와 비교하기 때문에, 비교 대상이 되는 날의 값이 낮으면 가격이 그대로여도 값이 올라간다. 08-18에 +23,000원이던 MOM이 08-19에 -2,000원으로 꺼진 것도 그날의 낙폭이 컸던 탓이 크다. 하루짜리 충격이 10일 동안 지표 안에 남아 신호를 만든다.

09-04의 하향 신호도 같은 계열이다. 직전 10거래일 사이 높았던 날이 빠져나가며 MOM이 -31,000원까지 내려갔고, 5거래일 뒤 종가는 오히려 3.36% 높았다. 반대로 09-09부터 09-11까지는 하향 신호 두 번이 모두 맞았다. 맞은 신호가 몇 개 있다는 사실이 다음 신호를 믿을 이유가 되지는 못한다.

파라미터를 바꾸면

MOM 5, 10, 20 비교

같은 방식으로 기간을 바꿔 계산했다. MOM(5)는 유효값이 45개이고 교차가 16번, 그중 5거래일 뒤 판정이 가능한 15번에서 적중이 5번이다. MOM(20)은 유효값이 30개이고 교차 8번 모두 판정이 가능했으며 적중은 3번이다. 판정 대상 대비 적중률은 5일이 33%, 10일이 50%, 20일이 38%다. 어느 기간에서도 과반이 되지 못했고, 10일이 가장 나은 숫자가 나온 것도 표본이 12개라는 점을 생각하면 우연일 가능성을 배제할 수 없다.

기간을 늘리면 신호는 줄어들지만 정확도가 따라 오르지는 않았다. 20일에서 8번이라는 숫자는 한 번 더 맞거나 틀리면 적중률이 12.5%포인트씩 움직인다는 뜻이다. 이 표본으로 어느 기간이 좋다고 말하는 것은 무리다. 세 기간의 신호 날짜도 서로 달랐다. MOM(5)는 08-05에 처음 상향 신호를 냈고 MOM(10)은 08-11, MOM(20)은 08-26에야 첫 신호를 냈다. 같은 가격 흐름을 보고도 첫 진입 시점이 3주 가까이 벌어진다는 뜻이고, 어느 쪽이 맞았는지는 사후에 골라야만 말할 수 있다. 기간을 정하는 일 자체가 이미 하나의 가정이다.

봇 게이트에 넣을 것인가

단독 진입 신호로는 넣지 않는다. 이유는 위 표가 전부다. 12번 중 6번이라는 적중률도 그렇지만, 상향 신호의 평균이 음수였다는 점이 더 걸린다. 그 구간 안에서 매수 방향의 신호가 손실 쪽으로 기울었다.

쓸 자리를 찾는다면 필터 쪽이다. MOM(10)이 한 달 가까이 0선 아래에 머문 9월 중순 이후 구간은 하락 추세의 확인으로 읽을 만하다. 0선 아래에 있으면 신규 매수를 쉬게 하는 식이다. 다만 이것도 이번 50일 한 번의 관찰이라 다른 종목과 다른 구간에서 다시 봐야 한다. 일봉 50개로 필터의 유효성까지 확정할 수는 없다.

남은 숙제

이번 글에서 남기고 싶은 것은 두 가지다. 모멘텀은 하루짜리 큰 봉을 10일 동안 들고 다닌다는 점, 그리고 그 때문에 0선 교차가 가격의 방향 전환보다 10일 전의 어떤 하루가 창 밖으로 빠져나간 시점을 가리킬 때가 있다는 점이다. 08-19의 하향 신호와 09-04의 하향 신호가 그런 경우였다.

숙제는 남았다. 일봉을 더 길게 받아 MOM의 0선 교차를 200개쯤 모으면 12번 중 6번이라는 숫자가 어느 쪽으로 수렴하는지 볼 수 있다. 거래량이 큰 날의 신호와 작은 날의 신호를 나눠 보는 것도 해 볼 만하다. 08-21과 08-26처럼 거래량이 100만 주를 넘긴 날 전후로 지표가 유독 흔들렸기 때문이다. 이번 데이터에서는 그 차이를 검증하지 못했다.

이 글의 수치는 수집한 일봉과 직접 계산한 값이며 투자 판단의 근거로 쓰기에 충분하지 않다. 매매는 본인 책임이다.

약어 풀이

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

  • MOM (Momentum): 모멘텀. 오늘 종가에서 n일 전 종가를 뺀 값이며 괄호 안 숫자가 n이다.
  • RSI (Relative Strength Index): 상대강도지수. 가격 상승폭과 하락폭의 비율을 0에서 100 사이로 나타낸 지표.
  • KRX (Korea Exchange): 한국거래소. 종목코드 옆에 거래소를 밝히려고 쓴 표기.