Mass Index는 주가가 어느 방향으로 가는지 보지 않는다. 하루 고가와 저가의 차이, 즉 일중 범위가 넓어지고 있는지 좁아지고 있는지만 잰다. 1990년대에 도널드 도시(Donald Dorsey)가 소개한 지표로, 범위가 한껏 부풀었다가 가라앉을 때 추세가 뒤집힌다는 가설을 바탕에 둔다. 방향을 모르는 지표라서 신호가 나와도 위로 갈지 아래로 갈지는 따로 판단해야 한다. 이 점이 RSI나 이동평균 교차와 가장 다르다.
이 글은 그 한계를 숨기지 않고 쓴다. 지표가 신호를 내면 맞았는지 틀렸는지 따지기 쉽지만, 신호가 하나도 없으면 따질 거리가 없어 글이 허전해지기 쉽다. 그래도 신호가 없었다는 사실이 이 구간의 결과이므로 그대로 적고, 신호가 없었던 이유를 계산 과정에서 찾는다. 계산식을 전부 펼쳐 놓았으니 같은 일봉만 있으면 누구라도 같은 숫자를 얻을 수 있다.
이번 종목은 현대차(005380)다. 2026년 7월 22일부터 10월 2일까지 50거래일 동안 종가 기준으로 453,000원까지 올랐다가 345,000원까지 내려왔다. 중간에 하루 -9.68%, 하루 +10.54%, 하루 +8.24% 같은 큰 봉이 섞여 있고, 9월 중순 이후에는 하루 범위가 눈에 띄게 좁아졌다. 범위가 부풀고 쪼그라드는 모양이 한 구간에 다 들어 있어서 이 지표를 시험하기에 나쁘지 않은 재료다. 다만 먼저 말해 둘 것이 있다. 50거래일은 이 지표에게 짧다. 유효한 값이 몇 개나 나오는지부터 아래에서 센다.
종목 현대차 (KRX 005380)
구간 2026-07-22 ~ 2026-10-02 (50거래일)
출처 stockanalysis.com 일봉, 두 번 요청해 겹치는 행 일치 확인
--------------------------------------------------
최고가 459,500원 (08-18 장중)
최저가 338,500원 (07-29 장중)
최고 종가 453,000원 (08-14)
최저 종가 345,000원 (09-30)
마지막 종가 346,500원 (10-02)
낙폭 최고 종가 대비 -23.51%이 글은 지표 계산 과정을 기록한 학습 자료이며 투자 권유가 아니다. 매매 판단과 손익은 전적으로 본인 책임이다.

계산식과 파라미터
Mass Index는 세 단계로 만든다. 일중 범위를 EMA로 부드럽게 만들고, 그 EMA를 다시 한 번 EMA로 만들고, 둘의 비율을 25일 동안 더한다.
R(t) = High(t) - Low(t)
E1(t) = EMA(R, 9) 알파 = 2/(9+1) = 0.2
E2(t) = EMA(E1, 9)
ratio(t) = E1(t) / E2(t)
MI(t) = ratio(t-24) + ... + ratio(t) (25개 합)
--------------------------------------------------
EMA 첫 값은 처음 9개의 단순평균으로 시작
이후 EMA(t) = 0.2 * x(t) + 0.8 * EMA(t-1)
기준선 27 위로 올라갔다가 26.5 아래로 내려오면 반전 팽창(reversal bulge)파라미터는 도시가 제안한 원형인 9일 EMA와 25일 합산을 그대로 썼다. 직접 고른 값이 아니라서 이 구간에 맞춰 손본 흔적이 없다는 점이 장점이고, 50거래일짜리 표본에는 너무 길다는 점이 단점이다. 단점은 곧바로 숫자로 나타난다.
범위 R은 첫날부터 있다. E1은 9번째 봉인 8월 3일에야 처음 생긴다. E2는 E1이 9개 쌓여야 하므로 17번째 봉인 8월 13일에 나온다. ratio가 있어야 합산을 시작할 수 있으니 25개를 채우는 건 41번째 봉이다. 그 날이 9월 17일이다. 결국 50거래일 중 앞의 40거래일은 값이 없고, 값이 나온 날은 9월 17일부터 10월 2일까지 열 개뿐이다. 7월 28일의 -9.68%, 7월 31일의 +10.54%, 8월 14일의 +8.24%는 전부 예열 구간 안에서 일어났고, 이 지표는 그 사건들에 대해 아무 값도 내놓지 못했다.

실측값
위 그림 아래 패널이 ratio다. E1이 E2 위에 있으면 1보다 크고, 범위가 줄어드는 중이면 1보다 작다. ratio가 1을 넘은 날은 8월 18일(1.0677), 8월 19일(1.0011), 8월 26일(1.0122) 사흘뿐이다. 그 뒤로는 계속 1 아래였고, 9월 11일에 0.7704까지 내려가 구간 최저를 찍었다. 9월 23일에는 하루 범위가 13,500원으로 잠깐 벌어지며 0.9791까지 반등했지만 1을 넘지 못했다.
범위 자체로 보면 변화가 더 분명하다. 첫 10거래일의 하루 평균 범위는 25,600원이고, 마지막 10거래일은 7,550원이다. 종가 대비 비율로 바꾸면 평균 6.69%에서 2.13%로 내려갔다. 주가가 한 달 넘게 흘러내리는 동안 변동성은 오히려 줄었다. 거래량 막대도 같은 이야기를 한다. 7월 29일 1,566,493주까지 갔던 거래량은 9월 하순에는 모두 55만 주 이하다.
날짜 MI 종가
--------------------------------------------------
09-17 22.13 363,000원
09-18 22.13 365,000원
09-21 21.96 359,000원
09-22 21.77 360,500원
09-23 21.75 353,500원
09-28 21.68 354,500원
09-29 21.64 350,000원
09-30 21.69 345,000원
10-01 21.65 349,000원
10-02 21.48 346,500원
--------------------------------------------------
최대 22.13 최소 21.48 기준선 27 / 26.5열 개 값이 모두 21.48에서 22.13 사이에 있다. 27까지는 가장 높은 값(22.13)에서도 4.87이 모자란다. 지표가 25 근처에 있으면 범위가 평소 수준이라는 뜻인데, 21~22는 평소보다 범위가 눈에 띄게 좁은 상태를 가리킨다. 이 지표의 문법으로는 변동성 수축이고, 수축이 끝나면 팽창이 온다는 해석으로 이어진다. 팽창이 왔는지는 이 열 개 값으로는 확인할 수 없다.

맞은 신호와 빗나간 신호
솔직히 정리하면, 규칙대로 읽을 때 이 구간에서 나온 반전 신호는 0건이다. 27을 넘은 적이 없으니 26.5 아래로 내려오는 사건도 없었다. 맞았다고 할 신호도, 틀렸다고 할 신호도 없다.
그래서 빗나간 쪽을 다른 방식으로 적는다. 첫째, 이 지표가 포착했어야 할 가장 큰 변동은 7월 28일(-9.68%)과 7월 31일(+10.54%) 전후의 팽창이다. 그 시점은 예열 구간이라 값이 없었다. 지표가 틀렸다고 말할 수도 없다. 쓰지 못했을 뿐이다. 이 차이는 봇에 넣을 때 중요하다. 틀린 신호는 손실 기록이 남지만, 쓰지 못한 구간은 아무 기록도 남기지 않는다.
둘째, ratio를 기준선 없이 눈으로 읽으면 8월 18일의 1.0677이 가장 높은 지점이다. 그날 종가는 435,000원이었고 이후 10월 2일 346,500원까지 -20.34%가 빠졌다. 사후에 보면 꼭대기 근처를 짚은 것처럼 보인다. 하지만 이건 신호가 아니다. 규칙은 합산값 27이고 그날 MI는 계산조차 되지 않았다. 사후 해석으로 맞힌 척하는 건 이 시리즈가 가장 경계하는 일이라 이렇게 선을 긋는다.
셋째, 9월 23일 ratio가 0.9791로 튄 날을 변동성 팽창의 시작으로 읽을 수도 있었다. 이후 종가는 353,500원에서 10월 2일 346,500원으로 -1.98%, 조용히 흘렀다. 이 해석은 틀렸다.
민감도
합산 길이와 EMA 길이를 바꿔 같은 규칙을 돌려 보았다. 기준선은 합산 길이에 비례해 줄였다. 27/25가 1.08이므로 평균 비율이 1.08을 넘는지를 본다.
EMA 합산 유효값 최대값 환산 팽창선
--------------------------------------------------
9 25 10 22.13 27.0
9 15 20 14.09 16.2
6 20 21 18.90 21.6
5 10 33 10.13 10.8
--------------------------------------------------
네 조합 모두 팽창선에 닿지 못했다파라미터를 줄이면 유효값이 10개에서 33개로 늘어난다. 하지만 어느 조합도 팽창선을 넘지 못했다. 가장 근접한 조합은 EMA 5, 합산 10으로, 최대 10.13이 환산선 10.8에 0.67 못 미쳤다. 결론이 파라미터에 따라 뒤집히지 않는다는 점은 좋은 소식이다. 반대로 말하면 파라미터를 줄여도 신호가 만들어지지 않을 만큼 이 구간의 범위 확대는 약했다. 8월 14일 +8.24% 같은 하루짜리 큰 봉은 9일 EMA로 두 번 눌리면서 합산값 안에서 희석된다.

봇 게이트에 넣을 것인가
지금 상태로는 넣지 않는다. 이유는 둘이다. 하나는 예열이다. 원형 파라미터는 최소 41봉이 있어야 첫 값이 나오고, 일봉 기준으로 두 달 가까운 이력이 필요하다. 상장 직후 종목이나 재개장 직후에는 쓸 수 없다. 다른 하나는 방향 정보가 없다는 점이다. 반전 팽창이 나와도 매수인지 매도인지는 다른 지표가 정해야 하고, 그 조합의 성적은 이 글의 데이터로 말할 수 없다.
쓰임새를 하나 찾는다면 필터다. MI가 평소 수준인 25보다 한참 낮을 때는 범위 돌파형 전략의 진입을 보류하고, 값이 25를 넘어 올라올 때 다시 켜는 식이다. 이번 구간처럼 하락하면서 범위가 줄어드는 시기에 돌파 전략이 잦은 손절을 겪었을지는 검증하지 못했다. 다음 회차에서 더 긴 일봉으로 확인할 숙제로 남긴다.
남는 것
이번 구간에서 건질 것은 두 가지다. 첫째, 현대차는 최고 종가 이후 23.51%를 내려오는 동안 변동성이 오히려 줄었다. 하락이 곧 공포 구간이라는 통념과 다른 장면이었고, 하루 평균 범위가 25,600원에서 7,550원으로 준 것은 숫자로 확인된다. 둘째, 50거래일로는 이 지표를 제대로 시험하지 못한다. 열 개 값으로 기준선 통과 여부를 말하는 건 표본이 너무 얇다.
도시의 가설대로라면 범위가 이렇게 오래 좁아진 뒤에는 어느 쪽이든 큰 움직임이 나올 차례다. 10월 2일 현재 MI는 21.48로 구간 최저이고 ratio는 0.8424다. 이 값이 다시 25를 향해 올라가는지, 다시 부풀고 나서 27을 넘는지는 이 데이터 밖의 이야기다. 지켜보다가 값이 나오면 같은 계산식으로 이어 쓴다.
하나 더 적어 둔다. ratio가 1을 넘은 사흘은 8월 18일, 19일, 26일이다. 첫날인 18일은 8월 14일 +8.24% 급등 직후에 종가가 -3.97% 밀린 날이고, 26일은 하루 범위가 27,500원까지 벌어지며 -3.09%를 기록한 날이다. 큰 봉이 나온 직후에만 ratio가 부풀었다는 뜻이다. 하루 범위가 7,000원 안팎으로 이어지던 9월 중순 이후에는 1에 다가서지 못했고, 9월 23일의 0.9791이 가장 높았다. 이 지표가 재는 것은 변동성의 크기가 아니라 변화 속도라는 점이 숫자로 보이는 대목이다.
이 글의 수치는 모두 수집한 일봉과 직접 계산한 값이다. 투자 판단의 근거로 쓰지 말고, 지표를 이해하는 학습 자료로만 읽어 주길 바란다.
약어 풀이
* 이 글에 나온 영어 약어를 풀어 둔다.
- EMA (Exponential Moving Average): 지수이동평균. 최근 값에 더 큰 가중치를 주는 이동평균이다.
- RSI (Relative Strength Index): 상대강도지수. 일정 기간 상승폭과 하락폭의 비율로 과열과 침체를 보는 지표다.
- MI (Mass Index): 일중 범위의 EMA 비율을 25일 합산한 지표. 이 글에서는 표와 계산식에서 줄여 썼다.
- KRX (Korea Exchange): 한국거래소. 종목코드의 시장 구분을 표기할 때 썼다.