Accumulative Swing Index(ASI)는 하루의 시가·고가·저가·종가 네 값을 하나의 숫자로 눌러 담은 뒤 그 숫자를 계속 더해가는 지표다. 웰스 와일더가 상품선물 시장을 보며 설계했다. 하루 등락률만 보는 지표와 달리, 시가와 종가의 간극, 전일 종가와의 괴리, 당일 몸통의 크기를 함께 반영해서 “이 하루가 추세를 얼마나 밀어냈는가"를 점수로 바꾼다. 점수를 계속 쌓으면 가격 차트와 닮았지만 완전히 같지는 않은 또 하나의 선이 생긴다. 그 선이 가격보다 먼저 방향을 바꾸는지가 이 지표의 존재 이유다. 와일더는 이 지표를 1978년 저서에서 소개하면서, 종가 하나만 보고 판단하면 하루 안에 벌어진 진짜 힘겨루기를 놓친다고 적었다. 그 문제의식이 지금도 유효한지는 계산해봐야 알 일이지 짐작만으로 답할 수는 없다.

삼성바이오로직스를 고른 이유는 이 구간의 변동성이 고르지 않아서다. 6월 초는 박스권에 가까웠고, 6월 말에는 급락과 급반등이 붙어 있었고, 7월 24일에는 거래량이 평소의 4배 넘게 뛰며 하루 만에 10%가 넘게 올랐다. 조용한 구간과 시끄러운 구간이 한 종목 안에 섞여 있어서, ASI가 두 국면에서 다르게 행동하는지 볼 수 있다.

이 글의 데이터 범위
종목      삼성바이오로직스 (KRX 207940)
구간      2026-06-05 ~ 2026-08-14 (50거래일)
출처      stockanalysis.com 일봉
최고종가  1,609,000원 (08-11)
최저종가  1,243,000원 (06-08)
구간등락  +15.52% (1,340,000원 → 1,548,000원)

이 글은 투자 권유가 아니다. 계산 결과를 매매 신호로 그대로 옮기지 않는다.

규격은 60거래일 이상을 기준으로 삼는다. 이번 회차는 50거래일로 그 기준에 못 미쳤다. stockanalysis.com의 일봉 이력 페이지는 무료 열람 범위가 최근 약 두 달 반이고, 그 이전 구간은 페이지 하단의 버튼을 눌러야 열리는 방식이라 정적 요청으로는 받아지지 않았다. 요청 주소의 기간·페이지 파라미터를 여러 방식으로 바꿔 다시 받아봤지만 매번 같은 6월 5일부터 8월 14일까지의 50행이 돌아왔다. 부족한 채로 쓰기보다 한계를 적어두는 편이 낫다고 판단해 이번 글은 이 50거래일로 계산했다.

계산, 실측, 검증

ASI는 매일 SI(Swing Index)라는 값을 하나씩 만들고 그것을 누적해서 얻는다. 계산식은 아래와 같다. C, O, H, L은 당일 종가·시가·고가·저가, C1, O1은 전일 종가·시가다.

ASI 계산식
a    = |H - C1|
b    = |L - C1|
c    = H - L
d    = |C1 - O1|
--------------------------------------------------
R    a가 최대  → a - 0.5b + 0.25d
     b가 최대  → b - 0.5a + 0.25d
     그 외     → c + 0.25d
K    = max(a, b)
M    = (C-C1) + 0.5(C-O) + 0.25(C1-O1)
T    = C1 × 0.30
--------------------------------------------------
SI   = 50 × (M/R) × (K/T)
ASI  = SI의 누적합

T는 원래 선물시장의 일일 가격제한폭(limit move)을 넣는 자리다. 코스피 종목에는 선물 같은 제한폭이 따로 없지만, 상하한가 제도가 사실상 같은 역할을 한다. 코스피·코스닥은 2015년부터 전일 종가 대비 ±30%가 하루 등락의 한계다. 그래서 이 글은 T를 전일 종가의 30%로 고정했다. 근거 없는 상수를 넣느니 거래소가 실제로 쓰는 숫자를 넣는 편이 낫다고 판단했다.

이미지 첫 장은 이 구간의 캔들과 거래량이다. 6월 초 하락, 6월 말 반등, 7월 24일 거래량 폭증이 한눈에 보인다.

캔들과 거래량 개요

계산한 ASI를 그대로 그리면 아래와 같다. 위 패널이 누적된 ASI, 아래 패널이 그날그날의 SI다. SI 막대가 클수록 그날 하루가 추세에 크게 기여했다는 뜻이고, ASI 선의 기울기가 SI 막대 크기를 그대로 반영한다.

ASI 본체와 일별 SI

7월 24일 하루의 SI는 +23.86으로 이 구간 전체에서 가장 크다. 그날 시가 1,380,000원, 고가 1,537,000원, 저가 1,380,000원, 종가 1,518,000원으로 마감했고 등락률은 +10.08%, 거래량은 198,056주로 전날 42,236주의 4.7배였다. 몸통이 크고 저가가 시가와 같아 아래꼬리가 없는 날이라 SI 공식의 M 항이 크게 잡혔다. ASI는 전날 -5.35에서 이날 18.51로 뛰었다.

신호를 임의로 하나씩 고르면 원하는 결론을 미리 정해놓고 짜맞추는 꼴이 된다. 그래서 규칙을 하나 정해서 기계적으로 적용했다. “직전 10거래일 ASI 범위를 벗어나는 새 고점 또는 새 저점"을 신호로 본다. 이 규칙으로는 6월 5일부터 6월 19일까지 첫 10거래일은 비교할 과거 구간이 없어 신호를 판정할 수 없다. 이 구간에는 이번 50거래일 중 가장 큰 하루 낙폭인 6월 8일의 -7.24%도 들어 있다. 그날 SI는 -16.75로 전체 표본에서 가장 작은 값이었지만, 비교할 과거 10일치가 아직 쌓이지 않은 시점이라 이 값을 근거로 무엇을 판단할 수는 없다. 이 예열구간을 빼고 나면 이번 50거래일 안에서 신호는 정확히 7건 나온다. 아래에 전부 적는다. 괄호 안은 신호 발생일로부터 5거래일 뒤(자료 끝에 걸린 마지막 건은 3거래일 뒤) 종가의 등락률이다.

10일 신저점 2건이다. 6월 23일 ASI가 -13.64로 신저점을 찍었을 때 종가는 1,273,000원이었고 5거래일 뒤인 6월 30일 종가는 1,391,000원으로 +9.27% 올랐다. 7월 9일 ASI가 -6.72로 신저점을 찍었을 때 종가는 1,325,000원이었고 5거래일 뒤인 7월 16일 종가는 1,396,000원으로 +5.36% 올랐다. 두 건 모두 반등으로 이어졌다.

10일 신고점은 5건인데 결과가 정반대다. 6월 29일 ASI 12.96, 종가 1,448,000원 다음 5거래일 뒤(7월 6일) 종가 1,405,000원으로 -2.97%. 7월 24일 ASI 18.51, 종가 1,518,000원 다음 5거래일 뒤(7월 31일) 종가 1,485,000원으로 -2.17%. 7월 27일 ASI 22.79, 종가 1,545,000원 다음 5거래일 뒤(8월 3일) 종가 1,423,000원으로 -7.90%. 7월 28일 ASI 23.91, 종가 1,549,000원 다음 5거래일 뒤(8월 4일) 종가 1,476,000원으로 -4.71%. 8월 11일 ASI 26.26, 종가 1,609,000원 다음 자료가 끝나는 8월 14일(3거래일 뒤) 종가 1,548,000원으로 -3.79%. 다섯 건 전부 마이너스다.

ASI 10일 신고점·신저점 전수

10일 신고점·신저점 신호 전수 (T=30%)
신저점 2건  +9.27% / +5.36%  모두 반등
신고점 5건  -2.97% / -2.17% / -7.90% / -4.71% / -3.79%
--------------------------------------------------
표본  7건, 단일 종목·50거래일. 통계적으로 작다

이 결과를 “ASI 신고점은 무조건 팔아라"로 읽으면 성급하다. 표본이 7건뿐이고 종목도 하나다. 다만 이 구간 삼성바이오로직스에서는 ASI가 새 고점을 찍은 시점 다섯 번 모두 며칠 안에 가격이 밀렸고, 새 저점을 찍은 시점 두 번 모두 며칠 안에 가격이 반등했다. 이 사실 자체는 데이터를 몇 번을 다시 계산해도 똑같이 나온다. 표본 하나로 규칙을 세우기엔 이르지만, 이번 50거래일 안에서는 신고점과 신저점의 성적이 이렇게나 갈렸다는 점은 기록해둘 만하다.

T를 절반인 15%로 바꾸면 어떻게 될까. R과 K는 그대로 두고 T만 줄이면 SI가 매일 정확히 2배로 커지고, 누적한 ASI도 매 시점 정확히 2배가 된다. 이걸 확인하려고 두 계열의 차이를 배열로 직접 빼봤는데 오차는 0이었다. T가 분모에서 상수 배율로만 작동하기 때문에 생기는 당연한 결과이지만, 막상 계산해서 눈으로 보기 전에는 그냥 짐작일 뿐이었다. 진폭만 바뀌고 방향과 꺾이는 시점은 그대로라는 뜻이라, 신고점·신저점 판정 자체는 T를 얼마로 잡든 달라지지 않는다.

파라미터 민감도

이 지표를 봇 게이트에 넣을지는 이번 표본만으로는 정하기 어렵다. 신고점 5건이 전부 단기 조정으로 이어졌다는 결과를 그대로 쓴다면, ASI 신고점은 매수 신호보다 보유 포지션의 일부 차익실현 신호로 쓰는 편이 이 데이터와 더 맞는다. 진입을 여는 쪽이 아니라 정리하는 쪽 게이트로 시험해볼 값어치는 있다. 신저점 쪽은 2건뿐이라 바닥 매수 신호로 단독 사용하기엔 근거가 얕다. 거래량이나 다른 지표와 같이 확인하는 조건을 붙여야 한다고 본다.

남기는 것

이번 구간에서 눈에 띄는 점 두 가지를 적는다. 하나는 ASI가 가격보다 먼저 움직이기보다 거의 같은 날 함께 움직였다는 것이다. 7월 24일의 SI 급등은 그날의 큰 등락률과 거래량이 만든 결과이지 다음날을 미리 알려준 게 아니었다. 다른 하나는 신고점과 신저점의 비대칭이다. 이 종목 이 구간에서는 바닥 신호가 꼭대기 신호보다 더 잘 맞았다.

와일더는 스윙 인덱스를 설계하면서 하루의 진짜 변동폭을 놓치지 않으려 했다. 종가 하나만 보고 판단하는 습관이 얼마나 많은 정보를 버리는지는 이번 계산에서도 다시 드러났다. 다만 신고점 5건이 전부 되돌림으로 끝났다는 결과가 다음 50거래일에도 이어질지는 이번 자료로는 알 수 없다. 다음 회차에서 다른 종목으로 같은 규칙을 한 번 더 돌려보고 싶다.

이번에 못 채운 숙제도 남아 있다. 60거래일을 못 채운 채로 계산했고, 신호 판정 표본도 7건뿐이라 다음 라운드에 같은 종목이 다시 걸리면 더 긴 구간으로 다시 검증해볼 만하다. 신고점 신호 5건이 전부 되돌림으로 끝난 결과를 이번 한 종목만으로 규칙처럼 못박지는 않는다.

이 글에 실린 수치는 전부 stockanalysis.com에서 받은 일봉과 그 데이터로 직접 계산한 값이다. 투자 판단의 근거로 쓰지 말 것을 다시 적는다.