이번 편은 지캐시(ZEC)를 무대로 MACD 전략을 뜯어본다. 미리 밝혀둔다 — 이번 글은 시세를 받아 성과를 검증한 글이 아니라, 규칙 자체를 해부한 글이다. 승률도 수익률도 적지 않는다. 지캐시 가격을 아예 들여다보지 않았기 때문에 애초에 적을 수도 없다.

MACD를 다시 꺼내는 이유는 단순하다. 이동평균 크로스오버 계열 중에서 가장 널리 쓰이는데, 정작 “크로스오버가 나면 산다"는 문장만 통용되고 그 크로스가 어떤 계산에서 나오는지, 쉬는 시간이 없는 크립토 시장에서 어떤 전제가 깨지는지는 잘 안 짚힌다. 이번 회차 배정은 지캐시인데, 마침 프라이버시 코인이라 “규칙이 놓치는 것"을 이야기하기 좋은 상대다.

MACD 전략의 정의

MACD 전략은 세 개의 값으로 이루어진다.

  1. MACD 라인 = 단기 지수이동평균(EMA) − 장기 지수이동평균(EMA)
  2. 시그널 라인 = MACD 라인의 지수이동평균
  3. 히스토그램 = MACD 라인 − 시그널 라인

트레이딩뷰 기본값은 단기 12, 장기 26, 시그널 9다. 제럴드 아펠이 1979년에 제안한 값 그대로다. 왜 하필 12와 26인가 — 당시 주 5거래일 기준으로 각각 대략 2.5주, 5.5주치 평균을 잡은 값이라는 설명이 통용된다. 코인 시장은 24시간 돌아가니 “일” 단위 캔들에 그대로 얹으면 원래 의도했던 시간 폭과는 다른 의미가 된다는 점을 먼저 짚고 가야 한다. 일봉에 12·26·9를 그대로 쓰면 “지난 12개, 26개, 9개 봉"이 되는 것이지 “2.5주"라는 의미는 사라진다.

전략으로서 진입·청산 조건은 이렇다.

진입(롱): MACD 라인이 시그널 라인을 아래에서 위로 돌파 (골든크로스)
청산: MACD 라인이 시그널 라인을 위에서 아래로 돌파 (데드크로스)

아래 그림은 이 규칙이 참이 되는 캔들 배열을 모식도로 그린 것이다. 실제 시세가 아니라 규칙을 설명하기 위한 합성 데이터로 그렸다.

ZEC 캔들 배열과 MACD 크로스오버가 뜨는 자리 (모식도)

이 규칙에는 파라미터가 12·26·9 세 개나 있다. “파라미터가 없는 규칙"이 아니라는 뜻이다. 세 정수를 어떻게 잡느냐에 따라 크로스가 나는 자리가 완전히 달라지고, 과거 데이터에 맞춰 값을 새로 찾으려 들면 바로 과최적화 함정에 빠진다. 기본값을 쓰는 이유는 “잘 맞아서"라기보다 “다수가 같은 값을 보고 있어서 크로스 발생 시점이 서로 예측 가능하다"는 쪽에 가깝다고 본다.

청산 규칙이 반대 방향 크로스 하나뿐이라는 것도 짚어야 한다. 별도의 손절선이 없다. MACD가 계속 데드크로스를 미루면 포지션은 계속 물려 있다는 뜻이다. 급락이 나도 크로스가 뜨기 전까지는 전략상 “아직 보유"다.

계산식 뜯어보기

EMA는 최근 값에 더 큰 가중치를 준다. 가중치를 알파(α)라 하면 α = 2 / (기간 + 1)이고, 오늘 EMA = α × 오늘 종가 + (1 − α) × 어제 EMA다. 단순이동평균(SMA)과 달리 오래된 값이 한 번에 빠지지 않고 지수적으로 옅어지기만 한다.

아래 그림은 이 계산식의 각 항이 어떻게 겹쳐서 MACD가 만들어지는지 분해한 모식도다.

MACD 라인이 만들어지는 과정 (모식도)

MACD 라인은 “단기 추세가 장기 추세보다 얼마나 앞서 있는가"를 나타낸다. 12일 EMA가 26일 EMA 위에 있으면 MACD는 양수고, 그 폭이 벌어질수록 값이 커진다. 시그널 라인은 그 MACD 라인을 한 번 더 지수평활한 것 — MACD 자체의 이동평균이다. 히스토그램은 MACD와 시그널의 차이니까 “가속도"에 가깝다. 크로스오버가 나는 순간은 정의상 히스토그램이 0을 지나는 순간과 같다.

여기서 후행성이 두 겹으로 쌓인다는 걸 알 수 있다. 가격 → 12일·26일 EMA (1차 후행) → MACD 라인 → 시그널 라인 (2차 후행). 크로스가 뜬 시점에는 이미 가격이 방향을 튼 지 한참 지났을 가능성이 높다. 이건 파라미터를 아무리 조정해도 없앨 수 없는 구조적 한계다 — MACD는 정의상 이동평균의 차이일 뿐, 가격을 앞질러 가는 지표가 아니다.

이 전략이 못 보는 것

크로스오버 전략이 가장 취약한 구간은 횡보장이다. 가격이 좁은 폭에서 오르내리면 두 EMA가 서로 얽혀서 골든크로스와 데드크로스가 짧은 간격으로 반복된다. 매번 진입하고 매번 반대 크로스로 청산하면 수수료만 깎이는 휩쏘(whipsaw) 구간이 된다.

0선 필터를 추가하는 변형도 흔하다. “MACD가 0 위에서 골든크로스가 나야만 진입"으로 조건을 하나 더 걸면, 이미 상승 추세에 들어선 뒤의 크로스만 신호로 인정하는 셈이다. 아래 그림은 같은 골든크로스라도 이 필터 하나로 신호 여부가 갈리는 자리를 보여준다.

같은 골든크로스라도 0선 필터로 신호 여부가 갈리는 자리 (모식도)

필터를 걸면 신호 개수는 줄지만 그만큼 추세 초입 구간을 놓친다. 이건 필터를 걸고 안 걸고의 트레이드오프지, 어느 쪽이 우월하다고 말할 근거가 나한테는 없다 — 성과를 재지 않았으니까.

파라미터 자체를 바꾸는 것도 같은 트레이드오프를 만든다. 12·26·9보다 짧은 값(가령 5·13·5)을 쓰면 반응은 빨라지지만 횡보 구간에서 크로스가 더 자주 발생해 휩쏘 위험도 함께 커진다. 아래 그림은 같은 합성 데이터에 기본값과 단축값을 각각 얹어 크로스가 나는 빈도가 얼마나 달라지는지 비교한 것이다.

파라미터를 바꾸면 크로스 빈도가 달라진다 (모식도)

민감도와 안정성이 맞바꾸는 관계에 있다는 것 — 이게 파라미터 세 개짜리 규칙이 안고 가는 근본적인 제약이다.

코인 시장 특유의 함정

크로스오버 기반 전략에서 유독 코인 시장이 걸고넘어지는 지점이 하나 있다. 일봉의 경계다. 주식은 거래소가 열고 닫는 시간이 명확해서 하루 봉의 시작과 끝이 자연스럽게 정해진다. 코인은 24시간 쉬지 않고 거래되니 하루 봉의 경계는 거래소가 임의로 정한 설정값일 뿐이다. 업비트는 KST 자정(00:00)을 기준으로 일봉을 끊고, 해외 거래소 다수는 UTC 자정을 기준으로 끊는다. 이 둘 사이엔 아홉 시간의 시차가 있다.

같은 시세를 보고 있어도 어느 거래소 캔들을 기준으로 MACD를 계산하느냐에 따라 그날의 종가가 달라지고, 두 EMA가 갱신되는 시점도 아홉 시간씩 밀린다. 그 결과 골든크로스가 뜨는 “날짜"가 하루 어긋나는 경우가 생긴다. 오늘 뜬 신호가 다른 거래소 기준으로는 어제 이미 떴던 신호일 수도 있고, 아직 안 뜬 신호일 수도 있다. 주식 전략을 그대로 옮겨서 크립토 봇에 얹을 때 가장 자주 빠지는 함정이 이거다 — 봉 경계가 시장의 물리적 구조가 아니라 거래소의 설정값이라는 걸 잊는 것.

반대로 갭은 크립토에서 오히려 드물다. 주식은 장 마감 후 뉴스가 나오면 다음 날 시가가 뛰어서 갭이 생기지만, 24시간 시장은 그런 단절이 구조적으로 없다. MACD 같은 크로스오버 전략 입장에선 이건 장점이다 — 갭 때문에 크로스 판정이 통째로 건너뛰는 일이 적다는 뜻이니까.

현물 거래라는 제약도 있다. 데드크로스는 정의상 “정리하라"는 청산 신호는 되지만, 현물에는 공매도가 없으니 데드크로스를 새로운 진입 신호로 쓸 수 없다. 이 전략은 구조적으로 롱 온리다. 하락 국면에서는 포지션 없이 쉬는 것 말고 이 규칙이 할 수 있는 일이 없다.

지캐시라는 무대

지캐시를 배정받은 김에 이 코인의 성격과 MACD 전략을 나란히 놓고 본다. 지캐시는 영지식증명 기반으로 발신자·수신자·금액을 가릴 수 있는 “차폐 거래(shielded transaction)“를 선택적으로 지원하는 프라이버시 코인이다. 기본은 투명 주소(transparent address)를 쓰고, 사용자가 원할 때만 차폐 주소로 옮겨 프라이버시를 켜는 구조다 — 항상 강제로 가리는 방식의 프라이버시 코인과는 다르다.

프라이버시 코인 카테고리 전체가 공통으로 지고 있는 리스크가 있다. 자금세탁방지 규제가 강화될 때마다 거래소들이 익명성 강화 코인을 상장폐지 대상 1순위로 올린다는 점이다. 이 리스크는 차트 어디에도 안 찍힌다. MACD든 다른 어떤 크로스오버 지표든, 상장폐지 공지가 뜨는 순간 그 코인의 가격 논리는 기술적 지표가 아니라 유동성 증발로 넘어간다. 크로스오버 규칙은 “추세가 있다"는 전제 위에서 작동하는데, 상장폐지는 추세가 아니라 거래 자체가 끊기는 사건이라 이 전제를 통째로 깨버린다.

즉 지캐시에 MACD 전략을 얹는다면, 크로스오버 신호와는 별개로 “이 코인이 지금 거래 가능한 시장에 계속 남아 있는가"를 감시하는 게이트가 하나 더 필요하다는 뜻이다. 이건 MACD 라인 계산으로는 절대 나오지 않는 조건이다.

내 봇에 넣을 것인가

결론부터 적는다 — MACD 크로스오버를 단독 진입 게이트로는 넣지 않기로 했다. 이유는 두 가지다.

첫째, 후행성이 구조적이다. EMA를 두 번 겹친 지표라 크로스가 뜨는 시점엔 이미 초입 구간을 놓친 뒤일 가능성이 높다. 둘째, 파라미터가 세 개(12·26·9)라 과최적화 여지가 있는데, 나는 이걸 어떤 값으로 다시 맞출 근거(실측 데이터)를 이번 글에서 아예 다루지 않았다.

다만 완전히 버리지는 않는다. 히스토그램의 부호(MACD가 시그널 위인지 아래인지)를 다른 진입 조건의 “추세 방향 필터"로 얹는 건 고려할 만하다고 적어둔다. 크로스오버 자체를 매수 트리거로 쓰는 것과, 이미 다른 조건으로 진입을 결정한 뒤 MACD 부호로 방향만 거르는 것은 전혀 다른 무게의 사용법이다. 후자는 다음에 실측 데이터로 따로 검증해볼 생각이다 — 지금은 그 판단을 보류한다는 사실만 남겨둔다.

거래소 봉 경계 문제(KST·UTC)는 별도로 처리해야 한다. 봇에서 MACD를 쓰려면 최소한 어느 거래소, 어느 시간대 기준 캔들을 쓸지부터 고정해야 하고, 그 기준을 전략 문서에 못 박아야 한다.

마지막으로 한 줄 — 이 글은 투자 권유가 아니다. 규칙을 해부했을 뿐 지캐시나 MACD 전략의 성과를 검증하거나 추천한 게 아니다.

약어 풀이

  • MACD (Moving Average Convergence Divergence) — 이동평균수렴확산지수. 단기·장기 지수이동평균의 차이로 추세 전환을 보는 지표.
  • EMA (Exponential Moving Average) — 지수이동평균. 최근 값에 더 큰 가중치를 주는 이동평균.
  • SMA (Simple Moving Average) — 단순이동평균. 구간 내 값을 동일 가중치로 평균.
  • ZEC (Zcash) — 지캐시. 영지식증명 기반 선택적 프라이버시를 지원하는 코인.
  • KST (Korea Standard Time) — 한국 표준시.
  • UTC (Coordinated Universal Time) — 협정 세계시.