1. ROC는 가격 차이가 아니라 N일 전 종가 대비 변화율입니다
ROC(Rate of Change)는 현재 종가가 N거래일 전 종가보다 몇 퍼센트 변했는지를 나타냅니다. TradingView의 ROC 설명처럼 기준선은 0이고, 기간 N은 사용자가 정합니다. TradingView의 기본 기간은 9입니다.
같은 기간의 Momentum은 현재 종가 - N일 전 종가라는 원화 차이입니다. ROC는 그 차이를 N일 전 가격으로 나눠 백분율로 바꿉니다.
예를 들어 1만원 주식이 1,000원 올랐을 때와 10만원 주식이 1,000원 올랐을 때 Momentum은 모두 1,000원입니다. 그러나 ROC는 각각 +10%, +1%입니다. 여러 가격대의 종목을 상대 변화율로 비교할 때 ROC가 필요한 이유입니다.
2. 같은 기간의 ROC와 Momentum은 0선을 같은 날 통과합니다
N일 전 종가는 0보다 크므로 ROC와 Momentum의 부호는 항상 같습니다. 따라서 같은 기간을 쓴다면 ROC가 0선을 상향 통과한 날과 Momentum이 0선을 상향 통과한 날은 같습니다.
이 점은 의외로 중요합니다. 9일 ROC의 0선 상향 통과를 매수 신호로 쓴다면, 9일 Momentum 0선 상향 통과보다 더 빠른 신호를 얻는 것은 아닙니다. 둘의 차이는 신호 날짜가 아니라 값의 단위와 종목 간 비교 가능성입니다.
Momentum 계산법에서 다룬 가격 차이와 달리 ROC는 변화율을 사용하므로, 동일한 0선 신호라도 종목을 순위화하거나 변동 폭을 비교할 때 결과가 달라질 수 있습니다.
3. ROC 0선 상향 통과를 전체 표본에서 확인했습니다
이번 검증은 ROC가 전날 0 이하에서 당일 0 위로 넘어온 날을 신호로 잡았습니다. 신호일 종가가 확정된 뒤 다음 거래일 시가에 진입하고 열 번째 거래일 종가에 청산했습니다. 비용은 반영하지 않았습니다.
10개 대형주 8,860개 일봉에서 기간을 5·9·14·20으로 바꿔 같은 규칙을 적용했습니다.
| 신호 | 관찰 수 | 10거래일 양수 비율 | 중앙값 | 최저~최고 |
|---|---|---|---|---|
| ROC(5) 0선 상향 통과 | 917개 | 49.62% | 0.00% | -30.49%~+42.23% |
| ROC(9) 0선 상향 통과 | 697개 | 47.63% | -0.33% | -27.39%~+57.21% |
| ROC(14) 0선 상향 통과 | 538개 | 44.61% | -0.62% | -21.47%~+50.94% |
| ROC(20) 0선 상향 통과 | 467개 | 47.11% | -0.41% | -28.00%~+42.16% |

기본값인 ROC(9)의 양수 비율은 47.63%, 중앙값은 -0.33%였습니다. 기간을 길게 한다고 다음 10거래일 결과가 자동으로 개선되지 않았습니다. ROC(9)의 0선 하향 통과도 689개에서 양수 비율 48.04%, 중앙값 -0.27%였습니다.
이 표는 ROC가 쓸모없다는 뜻이 아니라, 0선 통과 하나만으로 이후 방향을 확정할 근거가 충분하지 않았다는 뜻입니다.
4. 값의 크기로 종목을 고르면 ROC와 Momentum의 선택은 자주 달랐습니다
ROC와 Momentum의 0선 신호 날짜는 같지만, 여러 종목 중 어느 종목의 움직임이 더 컸는지를 고를 때는 다릅니다. 10종목이 모두 있는 482거래일마다 9일 Momentum이 가장 큰 종목과 ROC(9)가 가장 큰 종목을 각각 골랐습니다.
| 비교 | 날짜 수 | 비율 |
|---|---|---|
| 두 방식이 같은 종목 선택 | 257일 | 53.32% |
| 두 방식이 다른 종목 선택 | 225일 | 46.68% |
거의 절반의 날짜에서 선택 종목이 달랐습니다. 원화 차이는 높은 가격대 종목의 움직임을 크게 보이게 할 수 있고, ROC는 기준 가격 대비 변화율을 봅니다. 여러 종목을 같은 기준으로 순위화하려면 ROC가 더 직접적인 입력입니다.
그렇다고 ROC가 자동으로 더 좋은 종목을 고르는 것은 아닙니다. 변화율이 가장 컸다는 사실과 이후 수익률은 다른 문제입니다. 순위 기준을 바꿨다면 그 순위로 실제 매수·청산까지 적용한 결과를 따로 검증해야 합니다.
5. NAVER의 같은 ROC(9) 상향 통과는 상승과 하락으로 갈렸습니다
아래 두 사례는 모두 NAVER의 ROC(9)가 전날 0 이하에서 0 위로 넘어온 날입니다. 사례를 고른 뒤 진입일이나 보유 기간을 바꾸지 않고, 앞에서 정한 다음 거래일 시가 진입·10거래일 뒤 종가 청산 규칙을 적용했습니다.

| 항목 | 상승으로 이어진 사례 | 하락으로 이어진 사례 |
|---|---|---|
| 신호일 | 2023년 1월 25일 | 2026년 2월 24일 |
| 9일 Momentum | +9,000원 | +6,000원 |
| ROC(9) | +4.66% | +2.41% |
| 다음 거래일 시가 | 202,500원 | 255,500원 |
| 열 번째 거래일 종가 | 230,500원 | 222,000원 |
| 10거래일 수익률 | +13.83% | -13.11% |
| 기간 중 최고 수익률 | +14.57% | +4.50% |
| 기간 중 최저 수익률 | -1.28% | -18.98% |
두 사례 모두 ROC가 양수로 돌아섰지만, 다음 10거래일의 결과는 정반대였습니다. 상승 사례의 ROC가 더 컸다는 한 번의 관찰도 규칙이 되지 않습니다. 전체 표본 결과와 손실 폭을 함께 봐야 합니다.
6. ROC는 상대 변화율을 비교할 때 사용합니다
- 같은 종목·같은 기간의 0선 통과만 쓸 때는 ROC와 Momentum이 같은 날짜에 신호를 낸다는 점을 인식합니다.
- 종목 가격대가 다른 여러 종목을 비교하거나 순위화할 때는 원화 차이보다 ROC의 백분율이 적합합니다.
- 기간 9는 기본값일 뿐이며, 5·14·20처럼 기간을 바꿨을 때 신호 수·손실 폭·거래 비용 후 결과를 함께 확인합니다.
- ROC가 양수라는 사실은 최근 N일 수익률이 양수라는 뜻일 뿐, 다음 구간의 수익을 보장하지 않습니다.
핵심은 간단합니다. ROC는 가격 변화의 방향을 더 빨리 알려주는 지표가 아니라, 그 변화를 백분율로 바꾼 지표입니다. 0선 통과는 모멘텀 후보일 수 있지만, 단독 매수 신호로 쓰기 전에는 같은 체결 규칙의 성공과 실패를 모두 확인해야 합니다.