찬드 모멘텀 오실레이터(CMO)는 일정 기간 동안 오른 폭의 합과 내린 폭의 합을 비교해서 모멘텀의 방향과 세기를 하나의 숫자로 압축한다. 재료 자체는 RSI와 비슷하다. 다만 RSI는 평균 상승폭과 평균 하락폭을 스무딩해서 0에서 100 사이로 눌러 담지만, CMO는 스무딩 없이 상승폭 합과 하락폭 합을 그대로 뺀 뒤 둘의 합으로 나눈다. 그 결과값은 영을 기준으로 대칭인 -100에서 +100 사이를 오간다. 스무딩이 없다는 건 반응이 빠르다는 뜻이고, 동시에 하루 이틀의 급변에도 값이 크게 출렁인다는 뜻이다.

HD현대일렉트릭은 이 지표를 시험하기에 적당한 재료를 준다. 2026년 6월 말 백만원을 넘던 주가가 7월 말에는 반토막 수준까지 밀렸고, 8월 들어서는 반등과 조정을 반복했다. 급락과 급반등, 재조정이 두 달 안에 모두 들어 있어서 모멘텀 오실레이터가 얼마나 자주 맞았는지, 또 얼마나 자주 틀렸는지를 같은 창 안에서 볼 수 있다.

이 글의 데이터 범위
종목       HD현대일렉트릭 (267260)
구간       2026-06-22 ~ 2026-09-01 (50거래일)
출처       stockanalysis.com/quote/krx/267260/history
--------------------------------------------------
최고가     1,103,000원 (06-23)
최저가       538,000원 (07-29)
시작 종가   1,033,000원 (06-22)
종료 종가     769,000원 (09-01)
--------------------------------------------------
고점 대비 저점 낙폭   -51.22%
기간 종가 등락률     -25.56%

이 글은 투자 권유가 아니다. 모든 투자 판단과 그 책임은 투자자 본인에게 있다.

계산과 실측

CMO는 다음 식으로 구한다.

CMO 계산식 (N=9)
UpSum(N)   = 전일 대비 상승폭의 N일 합
DownSum(N) = 전일 대비 하락폭 절대값의 N일 합
--------------------------------------------------
CMO = 100 * (UpSum - DownSum) / (UpSum + DownSum)
--------------------------------------------------
범위     -100 ~ +100 (0 기준 대칭)
기준선   +50 과매수 / -50 과매도 / 0 중립

상승폭 합이 하락폭 합보다 크면 양수, 작으면 음수가 된다. 둘이 비슷하면 0에 수렴한다. 이론적 상하한은 ±100이지만 실제 종목에서 그 끝까지 가는 일은 드물어서, 통상 ±50을 과매수·과매도 경계로 쓴다.

기간 파라미터는 9일로 잡았다. TradingView가 CMO 기본값으로 쓰는 길이이기도 하고, 이 시리즈에서 다뤄온 단기 오실레이터들과 비교 기준을 맞추려는 목적도 있다. 다만 이번 구간은 스톡어낼리시스에서 받아 온 일봉이 50거래일에 그쳤다. 사이트가 기간 파라미터를 바꿔도 첫 페이지의 50행만 정적으로 돌려주는 탓에, 애초 목표였던 3개월 60거래일 기준을 채우지 못했다. 게다가 9일짜리 CMO는 앞의 9거래일을 소진해야 첫 값이 나오므로, 실제로 쓸 수 있는 값은 2026년 7월 3일부터 41개뿐이다. 표본이 넉넉하다고는 할 수 없다.

HD현대일렉트릭 일봉 개요

가격만 보면 흐름은 뚜렷하다. 6월 23일 고가 1,103,000원에서 7월 29일 저가 538,000원까지 51.22% 빠졌다. 종가 기준으로는 6월 22일 1,033,000원에서 9월 1일 769,000원까지 25.56% 내렸다. 낙폭의 절반 가까이는 7월 마지막 주 나흘 사이에 몰렸다. 7월 28일부터 30일까지 사흘 연속 두 자릿수 등락이 이어졌고, 31일에는 하루 만에 17% 넘게 반등했다.

HD현대일렉트릭 CMO(9)

같은 구간의 CMO(9)는 저점을 두 번 찍었다. 7월 14일 -70.03으로 관측 구간 전체 최저치를 기록했는데, 정작 가격이 저점을 찍은 7월 29일에는 -50.32까지만 내려갔다. 지표의 최저점과 가격의 최저점이 보름 가까이 벌어졌다. 반등 국면에서는 8월 12일 67.92까지 치솟아 과매수 구간에 여러 날 머물렀다.

거래량도 같이 봐야 한다. 7월 29일 거래량은 509,927주로 이번 구간 전체에서 가장 많았고, 다음 날인 7월 30일도 393,134주로 두 번째로 많았다. 이 이틀은 CMO가 -50.32와 -47.77을 기록하며 두 번의 매수 신호가 겹친 날이기도 하다. 반대로 신호가 틀렸던 7월 13일과 7월 21일의 거래량은 각각 172,717주, 133,521주로 평균 수준에 머물렀다. 신호가 맞았던 날에는 거래량이 실렸고, 틀렸던 날에는 그렇지 않았다는 점은 이번 구간에 한해서는 뚜렷하다.

수집한 일봉을 자체 검증하는 과정에서 한 가지는 짚어둘 필요가 있다. 사이트가 제공하는 일별 등락률 열과, 종가로 직접 계산한 등락률을 대조 가능한 마흔아홉 개 행에서 맞춰 보니 8월 11일 하루에서만 어긋났다(사이트 표기 -3.11%, 종가 기준 계산값 -3.27%). 나머지 마흔여덟 개 행은 모두 일치했다. 이 글에 쓴 등락률은 전부 수집한 시가·고가·저가·종가에서 직접 계산한 값이며, 사이트가 표시하는 등락률 열은 참고만 하고 본문에 그대로 옮기지 않았다.

신호 여섯 번, 세 번만 맞았다

±50 문턱을 기준으로 삼으면 이번 구간에서 신호가 여섯 번 났다.

CMO(9) 신호 6건의 5거래일 뒤 성과

CMO(9) ±50 신호 전수
날짜     CMO     신호가       5일뒤가      결과      판정
--------------------------------------------------
07-13   -54.44   788,000원   778,000원   -1.27%   실패
07-21   -38.17   778,000원   705,000원   -9.38%   실패
07-29   -50.32   586,000원   772,000원  +31.74%   적중
07-30   -47.77   583,000원   761,000원  +30.53%   적중
08-11    60.47   739,000원   752,000원   +1.76%   실패
08-18    38.98   785,000원   719,000원   -8.41%   적중

7월 13일 CMO가 -54.44로 과매도에 진입했을 때 종가는 788,000원이었다. 닷새 뒤인 7월 21일 종가는 778,000원으로 오히려 1.27% 더 내렸다. 신호와 반대로 움직인 경우다. 같은 7월 21일, CMO가 -38.17로 과매도 구간을 벗어나며 매수 트리거가 켜졌는데, 닷새 뒤 종가는 705,000원까지 밀려 9.38% 손실이 났다. 두 번째도 틀렸다.

세 번째부터는 결이 달랐다. 7월 29일 CMO가 -50.32로 다시 과매도에 들어갔을 때 종가는 586,000원, 닷새 뒤인 8월 5일 종가는 772,000원으로 31.74% 뛰었다. 바로 다음 거래일인 7월 30일 CMO가 -47.77로 과매도를 이탈하며 매수 신호가 다시 켜졌는데, 이번에도 닷새 뒤인 8월 6일 종가 761,000원까지 30.53% 상승했다. 저점 근처에서 연달아 켜진 두 신호는 둘 다 맞았다.

8월 11일에는 CMO가 60.47로 과매수에 진입했다. 매도 관점에서 보면 경고였지만 닷새 뒤인 8월 19일 종가는 752,000원으로 오히려 1.76% 더 올랐다. 세 번째 실패다. 마지막으로 8월 18일 CMO가 38.98로 과매수 구간을 벗어나며 매도 신호가 켜졌고, 닷새 뒤인 8월 25일 종가는 719,000원으로 8.41% 내렸다. 이번엔 신호가 맞았다.

여섯 번 중 세 번은 맞고 세 번은 틀렸다. 정확히 반반이다. 맞은 세 번은 모두 7월 말 저점 근처와 8월 중순 고점 이탈 구간에 몰려 있었고, 틀린 세 번은 각각 하락 초입, 반등 초입, 상승 랠리 중간처럼 추세가 한창 진행 중이던 시점에 나왔다. CMO는 추세의 끝자락 근처에서는 쓸 만했고 추세 중간에서는 자주 어긋났다.

기간을 바꾸면 신호가 사라진다

CMO 파라미터 민감도 비교

기간을 9일에서 14일, 20일로 늘리면 그림이 완전히 달라진다. CMO(14)는 이번 구간 내내 -48.55에서 45.11 사이에서만 움직였다. 절대값 50을 단 한 번도 넘지 못했다는 뜻이라, ±50 기준으로는 신호가 아예 나지 않는다. CMO(20)은 딱 한 번, 7월 30일 -53.16으로 과매도 경계를 살짝 넘었다가 다음 거래일에 -32.95로 바로 복귀했다. 8월 반등 구간에서는 최고 46.35까지 올라 과매수 경계에 3.65포인트 못 미쳤다. 같은 가격, 같은 ±50 기준인데 기간 하나를 바꾸면 신호가 여섯 번에서 두 번으로, 다시 0번으로 줄어든다. 이 구간에서는 파라미터 선택이 신호의 존재 자체를 결정했다.

이 지표를 봇 게이트에 넣을지는 이번 결과만 보면 망설여진다. 적중률 50%는 동전 던지기와 다르지 않고, 기간을 조금만 늘려도 신호 자체가 사라지는 민감도는 실전 파라미터를 고정하기 어렵게 만든다. 다만 맞은 세 번이 손실을 크게 줄이거나 수익을 크게 낸 지점, 즉 저점 근처 두 번과 고점 이탈 한 번에 몰려 있었다는 점은 눈여겨볼 만하다. 지금 단계에서는 CMO 단독 게이트보다, 다른 추세 지표와 함께 확인하는 보조 신호로 남겨두는 편이 나아 보인다.

남는 것

이번 구간에서 남는 건 두 가지다. 하나는 지표의 저점과 가격의 저점이 항상 같은 날 찍히지 않는다는 것. CMO는 가격 저점보다 보름 먼저 최저치를 찍었고, 정작 가격이 바닥을 칠 때는 그보다 덜 내려간 채로 움직였다. 다른 하나는 기간 파라미터 하나가 신호의 유무 자체를 바꿔놓을 만큼 힘이 세다는 것이다.

9일짜리 CMO가 이번엔 세 번 맞고 세 번 틀렸지만, 다음 종목 다음 구간에서도 같은 비율이 나온다는 보장은 없다. 유효 표본이 41개뿐이라 이 결과를 일반화하기도 이르다. 다음에 같은 지표를 다른 종목에 걸어보면 기간 9일이 여전히 쓸 만한 선택인지 다시 확인할 필요가 있다.

거래량이 실린 신호만 골라 쓰는 필터를 더하면 적중률이 달라질지도 궁금하다. 이번 구간에서는 맞은 신호 세 개가 모두 거래량 상위권에서 나왔고 틀린 신호 세 개는 평이한 거래량에서 나왔다는 정황이 있었다. 다만 표본이 여섯 건뿐이라 우연일 가능성도 배제할 수 없다. 거래량 조건을 얹은 CMO를 같은 종목의 다음 구간, 혹은 다른 종목에 그대로 적용해 보는 쪽이 다음 확인 과제로 남는다.

이 글은 투자 권유가 아니며, 모든 투자 판단과 그 책임은 투자자 본인에게 있다.

약어 풀이

* 이 글에 나온 영어 약어를 풀어 둔다.

  • CMO (Chande Momentum Oscillator): 찬드 모멘텀 오실레이터. 상승폭 합과 하락폭 합의 차이를 둘의 합으로 나눈 값으로, -100~+100 사이를 움직이는 모멘텀 지표.
  • RSI (Relative Strength Index): 상대강도지수. 평균 상승폭과 평균 하락폭의 비율을 0~100 사이로 스무딩해 표시하는 모멘텀 오실레이터.