이 지표를 왜 여기서 쓰는가
Advance/Decline은 원래 개별 종목이 아니라 시장 전체를 재는 물건이다. 코스피 안의 몇 종목이 올랐고 몇 종목이 내렸는지, 그 개수 차이를 매일 누적해서 시장 전체의 폭(breadth)을 보여준다. 오르는 종목 수가 내리는 종목 수보다 꾸준히 많으면 지수가 몇몇 대형주에 끌려가는 게 아니라 시장 전체가 같이 움직인다는 뜻이고, 반대면 지수는 버텨도 속은 곪고 있다는 신호로 읽힌다.
이 시리즈는 한 편에 한 종목, 한 지표만 다루기 때문에 시장 폭을 그대로 쓸 수는 없다. 그래서 이번 편에서는 종목 하나의 매일 종가를 전날과 비교해 오른 날이면 +1, 내린 날이면 -1로 세고 이를 누적하는 방식으로 바꿔 썼다. 시장 전체의 상승·하락 종목 수 대신 한 종목의 상승·하락 일수를 쓴 것이다. 원래 지표의 정신인 “방향의 빈도"는 남기고 대상만 좁힌 변형이라는 점을 먼저 밝혀둔다.
이 변형을 시험하기에 삼성생명(032830)의 최근 구간이 맞춤했다. 6월 중순 고점을 찍은 뒤 두 달이 못 되는 사이 장중 기준 52%가 넘게 빠졌다가 8월 들어 낙폭의 일부를 되돌리는 중이다. 방향이 크게 꺾인 구간이라 상승일과 하락일의 개수가 실제로 갈리는지, 그 개수 차이가 이어질 하락이나 반등을 앞서 알려주는지를 보기에 적당했다.
종목 삼성생명 (032830, KRX)
구간 2026-06-05 ~ 2026-08-14 (50거래일)
출처 stockanalysis.com
구간 최고 516,500원 (06-19 장중)
구간 최저 246,000원 (07-29 장중)
낙폭 -52.37% (장중 고점 대비 저점)
최근 종가 301,000원 (08-14)수집한 60거래일 목표에는 못 미쳤다. stockanalysis.com의 일봉 표가 페이지당 50행으로 끊겨 있고, 이번 수집 환경에서는 다음 페이지로 넘어가는 클라이언트 쪽 동작을 재현할 수 없었다. range 파라미터를 3M, 6M, 1Y로 바꿔가며 다시 받아봤지만 매번 같은 50행(6월 5일~8월 14일)이 돌아왔다. 두 번의 개별 요청에서 겹치는 행의 값은 전부 일치했으니 받은 데이터 자체는 믿을 만하지만, 표본이 50거래일로 짧다는 한계는 안고 간다.
이 글은 투자 권유가 아니다. 모든 계산은 과거 데이터를 대상으로 한 지표 검증이며, 매매 판단의 근거로 쓰지 않는다.

계산과 실측
계산식은 이렇다. 전날 종가 대비 오늘 종가가 오르면 부호값 1, 내리면 -1, 같으면 0을 매기고 이를 첫날부터 누적한다.
sign[t] = +1 (close[t] > close[t-1])
sign[t] = -1 (close[t] < close[t-1])
sign[t] = 0 (close[t] = close[t-1])
AD[t] = sum(sign[1..t])
ratio[t, N] = sum(sign[t-N+1..t]) / N (N일 롤링 순상승비율)50거래일(49번의 전일 대비 비교) 중 상승일이 22일, 하락일이 27일이었다. 하락일이 5일 더 많았고, 그 차이만큼 누적선 AD는 시작값 0에서 마지막 -5.0으로 끝났다. 구간 중 최고값은 +4.0(6월 19일과 6월 25일 두 번 도달), 최저값은 -8.0(8월 7일)이었다.

누적선만으로는 신호를 만들기 어렵다. 계속 우상향하거나 계속 우하향하는 구간이 있는가 하면 며칠 만에 방향이 꺾이기도 해서, 매매 판단에 쓰려면 일정 구간을 잘라 보는 롤링 창이 필요하다. 창 길이는 5일로 정했다. 코스피 정규 거래일 기준 한 주에 해당하고, 5일 모두 같은 방향이면 순상승비율이 ±1.0에 닿아 “이번 주 내내 한쪽으로만 움직였다"는 상태를 가장 단순하게 표시할 수 있기 때문이다. 신호는 이 5일 롤링비율이 +0.6(5일 중 4승1패 이상 상승 우위) 위로 올라서거나 -0.6 아래로 내려서는 시점으로 잡았다.
범위 -1.00 ~ +1.00
신호 문턱 ±0.60
확인된 신호 6건 (상승 1 / 하락 5)
방향 적중 2건 / 6건 (33.3%)
신호가 발생한 시점을 전수 나열한다. 신호 발생 5거래일 뒤 종가와 비교했다.
- 06-17 상승 신호 (5일 연속 상승, 종가 447,000원) → 06-24 종가 433,000원, -3.13%. 빗나감. 5연속 상승 직후 고점이었다.
- 07-01 하락 신호 (5일 연속 하락, 종가 387,000원) → 07-08 종가 346,000원, -10.59%. 적중. 이 구간에서 가장 크게 맞은 신호다.
- 07-13 하락 신호 (종가 326,000원) → 07-21 종가 316,000원, -3.07%. 적중.
- 07-20 하락 신호 (종가 301,500원) → 07-27 종가 311,500원, +3.32%. 빗나감. 낙폭이 과했던 자리에서 반등이 먼저 나왔다.
- 07-29 하락 신호 (종가 265,500원) → 08-05 종가 294,000원, +10.73%. 빗나감. 구간 최저가 근처였다.
- 08-07 하락 신호 (종가 275,500원) → 08-14 종가 301,000원, +9.26%. 빗나감.
- 08-14 상승 신호 (종가 301,000원) → 5거래일 뒤 데이터가 아직 없어 확인 불가.
맞은 신호만 골라 적으면 이 지표가 실제보다 유능해 보인다. 정직하게 세면 6건 중 2건만 방향이 맞았다. 그나마 초반 두 번의 하락 신호는 추세가 계속 이어지는 구간에서 나와 유효했지만, 7월 20일 이후 세 번의 하락 신호는 전부 낙폭이 과열된 뒤 반등이 나온 자리에서 발생해 빗나갔다. 5일 연속 하락이라는 조건 자체가 구간 후반부에는 “더 팔 사람이 남지 않은” 시점과 겹쳤다는 뜻으로 읽을 수 있다.
파라미터를 바꾸면 결론이 어떻게 달라지는지도 확인했다. 창을 10일로 늘리면 범위가 ±0.60으로 좁아지고, 20일로 늘리면 ±0.40 안쪽에 머문다. 창이 길어질수록 롤링비율이 완만해지면서 문턱을 넘는 횟수 자체가 줄었다. 10일 창에 같은 논리로 문턱을 ±0.4로 낮춰 잡으면 신호가 5건으로 줄고 적중도 2건으로 비슷한 비율을 유지했다. 20일 창에서는 구간 내내 한 번도 +0.2를 넘지 못했다. 하락일이 상승일보다 꾸준히 많았던 이번 구간의 성격이 창을 늘릴수록 더 뚜렷하게 드러났다.

거래량을 같이 보면 빗나간 신호의 성격이 조금 더 드러난다. 적중한 두 하락 신호(07-01, 07-13)의 발생일 거래량은 평균 442,409주였다. 반면 빗나간 세 번의 하락 신호(07-20, 07-29, 08-07) 중 두 건은 이보다 거래량이 많았고, 특히 07-29는 581,469주로 이번 구간 상위권에 들었다. 개수로만 보면 같은 “5일 연속 하락"이지만, 거래량까지 얹어 보면 07-29 쪽은 추세가 더 이어질 매도세라기보다 물량이 쏟아지며 정리되는 국면에 가까웠다. 다만 표본이 워낙 적어 거래량 조건을 신호에 바로 얹기는 이르고, 경향만 확인했다.
이 상태로 봇 게이트에 넣을 생각은 없다. 표본이 6건뿐이라 통계적으로 의미를 두기엔 이르고, 그마저도 절반 넘게 빗나갔다. 다만 후반부 신호가 전부 반등 직전에 나왔다는 패턴은 눈에 띈다. “5일 연속 하락"을 매도 신호가 아니라 과매도를 알리는 역발상 신호로 뒤집어 쓰는 편이 이번 구간에는 더 맞았을 것이다. 이 뒤집힌 해석이 다른 종목, 다른 구간에서도 성립하는지는 확인하지 못했다.
남는 것
이번 구간에서 남기고 싶은 건 두 가지다. 하나는 개수 기반 지표가 방향의 크기를 전혀 재지 못한다는 점이다. 7월 31일 하루에만 17.99% 뛰었는데, 그날의 상승은 5일 롤링비율 계산에서 다른 평범한 상승일과 똑같이 +1로만 처리됐다. 며칠 동안 조금씩 오르는 흐름과 하루 만에 크게 튀는 흐름을 이 지표는 구분하지 못한다.
다른 하나는 하락일이 계속 쌓인다고 해서 앞으로도 계속 내려간다는 보장은 없다는 점이다. 오히려 이번 구간에서는 하락일이 다섯 번 몰린 자리 세 곳 중 두 곳에서 며칠 안에 반등이 나왔다. 트레이더 제시 리버모어는 “시장은 절대 틀리지 않지만 의견은 자주 틀린다"고 했는데, 이번 경우엔 순서를 바꿔 말하는 편이 맞겠다. 개수만 세는 지표의 의견이 틀렸을 뿐, 시장은 그저 파는 사람이 줄어드는 지점에서 멈췄을 뿐이다.
이 시리즈에서 이미 다룬 다른 지표들과 비교해도 이번 결과는 유독 거칠다. 거래량의 흐름 방향을 재는 지표들은 매수·매도 압력의 크기를 어느 정도 반영하지만, 이번에 쓴 개수 기반 Advance/Decline은 하루 등락폭이 0.1%든 18%든 똑같은 +1 또는 -1로 뭉갠다. 단순한 만큼 계산과 해석은 쉬웠지만, 그 단순함이 정확도를 깎아 먹은 구간이기도 했다.
다음에 같은 지표를 다른 종목에 적용할 기회가 오면 등락폭으로 가중치를 준 변형과 이번의 단순 개수 버전을 나란히 놓고 비교해볼 생각이다. 10일, 20일 창으로 문턱을 다시 잡아 신호 수를 늘리는 것, 다른 하락장 구간에서도 후반부 신호가 비슷하게 빗나가는지 확인하는 것도 다음 숙제로 남긴다.
이 글은 투자 권유가 아니며, 언급된 수치는 모두 과거 데이터에 대한 사후 계산이다. 향후 수익을 보장하지 않는다.
약어 풀이
- 이 글에 나온 영어 약어를 풀어 둔다.
- KRX (Korea Exchange): 한국거래소. 코스피·코스닥 시장을 운영하는 거래소로, 삼성생명의 상장 종목코드 032830이 이곳 기준이다.