변화율(ROC, Rate of Change)은 지금 가격이 일정 기간 전 가격보다 몇 % 높거나 낮은지를 계산해 보여주는 지표다. 가격 자체가 아니라 가격이 변한 ‘속도’를 보는 도구라서 흔히 모멘텀(momentum) 지표로 분류된다.
이 글에서는 ROC가 무엇을 재는지, 어떻게 계산되고 차트에서 어떻게 읽는지, 그리고 이 지표를 볼 때 흔히 하는 오해와 한계까지 차례로 정리한다.
무엇을 재는 지표인가
주가가 오르고 있다는 사실만으로는 그 상승이 힘을 받고 있는지, 힘이 빠지고 있는지 알기 어렵다. 예를 들어 어제도 오르고 오늘도 올랐지만, 오늘 오른 폭이 어제보다 훨씬 작다면 상승 ‘속도’는 이미 둔화되고 있는 셈이다.
ROC는 이런 속도 변화를 숫자로 바꿔주는 지표다. “가격이 오르냐 내리냐”가 아니라 “얼마나 빠르게 오르내리냐”에 초점을 맞춘다는 점이 핵심이다.
계산 원리
표준적인 계산 방식은 단순하다. 오늘 종가를 N일 전 종가와 비교해서 그 변화를 퍼센트(%)로 나타낸다.
- ROC = (오늘 종가 − N일 전 종가) ÷ N일 전 종가 × 100
예를 들어 12일 ROC라면 오늘 가격을 12거래일 전 가격과 비교한다. 이 값이 양수면 N일 전보다 가격이 올랐다는 뜻이고, 음수면 내렸다는 뜻이다. 값의 크기가 클수록 그 기간 동안의 가격 변동 폭이 컸다는 의미가 된다.
여기서 중요한 건 ROC가 ‘방향’뿐 아니라 ‘기울기의 기울기’, 즉 가속과 감속까지 어느 정도 드러내 준다는 점이다. 가격이 계속 오르더라도 ROC 값이 점점 작아진다면 상승 탄력이 약해지고 있다고 해석할 여지가 생긴다.
차트에서 읽는 법
ROC는 보통 가격 차트 아래에 별도의 선 그래프로 그려지고, 기준선인 0선이 함께 표시된다.
- 0선 위: 가격이 N일 전보다 높다 (상승 국면)
- 0선 아래: 가격이 N일 전보다 낮다 (하락 국면)
- 0선과의 교차: 모멘텀의 방향이 바뀌는 지점으로 해석되기도 한다
- 선의 기울기: 값이 점점 커지거나 작아지는 흐름 자체가 가속·감속을 보여준다
기간(N) 설정은 정해진 정답이 없고, 12일이나 25일처럼 비교적 짧은 기간이 흔히 쓰인다. 다만 어떤 기간을 쓰느냐에 따라 신호의 민감도가 크게 달라지므로, 짧은 기간은 신호가 잦고 예민하며 긴 기간은 신호가 드물고 둔감해진다는 점을 염두에 두는 게 좋다.
신호의 유형
ROC는 주로 다음과 같은 방식으로 참고된다.
- 0선 교차: 예를 들어 ROC가 음수에서 0선을 위로 뚫고 올라가면 하락 모멘텀이 상승 모멘텀으로 전환되는 신호로 참고되기도 한다.
- 극단값 도달: ROC 값이 평소보다 유난히 크거나 작아지면, 단기적으로 가격 움직임이 과열되었다고 보는 시각도 있다.
- 추세 강도 확인: 가격이 신고점을 갱신하는데 ROC 값은 이전 고점 때보다 낮다면, 겉보기 상승과 달리 힘이 약해지고 있다고 해석되는 경우가 있다.
다만 이런 해석들은 어디까지나 ‘참고할 만한 신호’이지, 확정적인 매매 신호로 다뤄지지는 않는다는 점을 기억할 필요가 있다.
한계와 흔한 오해
ROC를 볼 때 자주 생기는 오해와 한계는 다음과 같다.
- 후행성: ROC는 과거 가격을 기준으로 계산되기 때문에, 미래를 예측하기보다 이미 벌어진 변화를 뒤늦게 보여주는 성격이 강하다.
- 횡보장에서의 잦은 오신호: 가격이 좁은 범위에서 등락을 반복하는 구간에서는 ROC도 0선을 자주 오가며 신호가 반복적으로 나타나, 신뢰도가 떨어지는 경우가 많다.
- “극단값이면 곧 반전한다”는 단정은 위험: 모멘텀이 강한 추세에서는 ROC가 극단적인 값에서 한동안 머무를 수도 있다. 값이 크다고 무조건 곧 꺾인다고 보기는 어렵다.
- 기간 설정에 따른 결과 편차: 같은 종목이라도 N값을 바꾸면 신호의 시점과 빈도가 달라진다. 과거 데이터에 맞춰 기간을 지나치게 조정하면 실제로는 미래에 잘 맞지 않는 과최적화 문제가 생길 수 있다.
점검 항목
ROC를 참고할 때는 다음을 함께 확인해보는 것이 도움이 된다.
- ROC 신호가 나타난 구간이 뚜렷한 추세장인지, 아니면 횡보장인지 (구간 성격에 따라 신뢰도가 다르다)
- 가격의 실제 고점·저점 움직임과 ROC 값의 흐름이 같은 방향인지, 아니면 엇갈리는지
- 사용 중인 N값(기간)이 특정 과거 구간에 맞춰 임의로 조정된 값은 아닌지
