서론

지난 편에서는 두 개의 이동평균이 서로 교차하는 순간을 신호로 쓰는 규칙(MovingAvg2Line Cross)을 체인링크를 무대로 다뤘다. 이번 편은 그 동생뻘 되는 규칙이다. 트레이딩뷰 전략 목록에 나란히 올라 있는 MovingAvg Cross는 이동평균을 두 개가 아니라 하나만 쓴다. 기준은 훨씬 단순해진다 — 종가가 이 이동평균 하나보다 위에 있느냐 아래에 있느냐, 그것뿐이다.

먼저 분명히 밝힌다. 이번 편은 시세를 받아 성과를 검증한 글이 아니라 규칙 자체를 해부한 글이다. 승률도, 수익률도, 신호가 몇 번 났는지도 적지 않는다. 그런 숫자를 내려면 실제 종가를 받아 와야 하는데, 여기서는 받지 않기로 했기 때문이다. 대신 이 규칙이 정의로 갖는 숫자 — 이동평균의 길이 같은 것 — 만 갖고 계산식이 어떻게 움직이는지, 그리고 어떤 상황에서 이 규칙이 못 버티는지를 따진다.

무대로 쓸 코인은 카르다노(ADA)다. 카르다노는 이더리움 공동 창립자였던 찰스 호스킨슨이 이더리움을 떠난 뒤 세운 레이어1 블록체인으로, 지분증명 방식의 합의 알고리즘인 우로보로스를 쓴다. 논문을 먼저 발표하고 그 검증을 거친 뒤에야 코드로 옮기는 학술적 개발 방식으로 알려져 있고, 개발 로드맵을 비잔틴·셸리·고건·바쇼·볼테르 같은 시대 이름으로 나눠 부른 것으로도 유명하다. 스마트 컨트랙트는 한참 뒤에야 하드포크를 거쳐 플루투스라는 자체 언어로 들어왔다. 호스킨슨이 세운 개발사 IOG는 지금도 카르다노 프로토콜 개발을 주도하고 있다. 이 글에서는 카르다노의 가격이나 시가총액은 한 줄도 쓰지 않는다. 대신 이 코인의 이런 성격이 단일 이동평균 교차 규칙과 만났을 때 어떤 마찰을 일으키는지를 사고 실험으로 따라간다.

무엇을 재는가

MovingAvg Cross는 트레이딩뷰가 기본으로 제공하는 전략 스크립트 목록의 하나다. 이 전략이 재는 것은 딱 하나, 종가와 이동평균선 하나의 위아래 관계다. 이동평균의 기본 길이는 9다. 즉 최근 9개 봉의 종가를 산술평균한 값을 하나의 기준선으로 두고, 지금 종가가 그 기준선보다 높은지 낮은지만 본다.

포지션은 늘 시장에 들어가 있는 구조다. 종가가 이동평균보다 높아지면 롱으로 돌아서고, 낮아지면 숏으로 돌아선다. 반대 신호가 곧 청산이자 동시에 새 진입이다. 그래서 이 규칙에는 손절매도, 목표가도, 별도의 청산 조건도 없다. 청산 규칙이 없다는 게 이상하게 들릴 수 있는데, 정확히는 “따로 없는 게 아니라 진입 신호 자체가 청산 신호를 겸한다"는 뜻이다. 포지션을 정리하고 관망하는 중립 상태는 이 규칙의 어휘에 없다. 항상 롱 아니면 숏, 둘 중 하나다.

파라미터 구성은 지난 편의 MovingAvg2Line Cross보다 오히려 더 단순하다. 그쪽은 빠른 이동평균과 느린 이동평균, 길이 두 개를 조합해야 신호가 났다. 이번 규칙은 이동평균 길이 하나와, 방향 전환 신호가 나오기 전 조건이 몇 개의 연속 봉 동안 참이어야 하는지를 정하는 보조 파라미터 하나로 끝난다. 이 보조 파라미터의 정확한 기본값은 이 글을 쓰면서 확인하지 못했다. 확인 못 한 숫자는 적지 않기로 했으므로 값 자체는 비워 둔다. 다만 존재 이유는 짐작할 수 있다 — 종가가 이동평균을 스치듯 한 봉만 넘었다가 바로 되돌아오는 잡음성 교차를 걸러내려는 장치일 것이다. 값을 키울수록 방향 전환은 늦어지지만 그만큼 잡음성 교차는 줄어들고, 값을 0에 가깝게 두면 종가가 이동평균을 넘는 즉시 반응하는 대신 잡음까지 그대로 신호로 받아들이게 된다. 트레이드오프의 방향은 짐작이 가지만, 그 손잡이를 정확히 어디에 맞춰야 하는지는 규칙 스스로 답을 주지 않는다.

계산식 뜯기

수식으로 옮기면 이렇다.

이동평균(t) = ( 종가(t) + 종가(t-1) + ... + 종가(t-8) ) / 9

그리고 포지션 규칙은 조건문 그대로다.

if 종가(t) > 이동평균(t):
    포지션 = 롱
elif 종가(t) < 이동평균(t):
    포지션 = 숏

분자는 최근 9개 종가의 합, 분모는 9라는 개수다. 특별할 게 없는 산술평균이다. 다만 이 단순함이 그대로 후행성으로 이어진다. 이동평균은 정의상 과거 값의 평균이라 방향이 바뀐 뒤에도 한동안 예전 방향을 향해 기울어 있다. 실제 가격이 바닥을 찍고 돌아선 시점과, 이동평균을 실제로 뚫고 올라가 신호가 나는 시점 사이에는 항상 간격이 생긴다. 길이가 9인 이동평균이면 대략 그 절반 안팎의 봉이 지나야 방향이 따라온다고 보면 된다. 아래 그림은 이 지연을 모식도로 그린 것이다. 실제 저점과 교차 신호가 나는 지점 사이에 눈에 보이는 간격이 있다.

이동평균은 후행한다 — 모식도, 실제 시세 아님

전체 그림으로 보면, 가격이 이동평균 위에 있는 구간과 아래에 있는 구간이 번갈아 나타나고 그 경계마다 포지션이 뒤집힌다.

MovingAvg Cross 규칙 — 모식도, 실제 시세 아님

무엇을 못 보는가

첫째, 방금 짚은 후행성이다. 추세가 뚜렷하게 이어지는 구간에서는 이 지연이 큰 문제가 안 된다. 어차피 방향을 오래 유지하니 늦게 타도 남는 구간이 길다. 문제는 방향이 없는 구간이다. 가격이 이동평균 근처에서 오르내리기만 하면, 종가가 이동평균을 넘었다 내려왔다 하는 일이 짧은 간격으로 반복되고 그때마다 포지션이 뒤집힌다. 파라미터를 바꿔도 못 없애는 함정에 가깝다. 아래 그림에서 교차가 짧은 구간에 몰려 나는 모습을 볼 수 있다.

추세가 없는 구간의 교차 — 모식도, 실제 시세 아님

둘째, 길이를 왜 9로 뒀는지에 대한 근거가 규칙 자체에는 없다는 점이다. 길이를 5로 줄이면 이동평균이 가격을 더 바짝 따라가면서 교차가 잦아지고, 20으로 늘리면 곡선이 훨씬 완만해지면서 교차가 드물어진다. 아래 그림처럼 같은 가격 흐름에 길이만 다른 세 개의 이동평균을 얹으면 모양이 완전히 달라진다. 어느 길이가 “맞는” 길이인지 알려주는 근거는 규칙 안에 없고, 그 근거를 과거 데이터로 찾으려는 순간 과최적화가 시작된다. 반대로 말하면, 지난 편의 두 이동평균 조합보다 파라미터 자유도가 하나 적다는 점에서 과최적화 여지도 그만큼 좁다 — 값을 튜닝할 손잡이가 하나 줄었으니까.

파라미터를 바꾸면 곡선이 이렇게 변한다 — 모식도, 실제 시세 아님

셋째, 이 규칙은 항상 롱 아니면 숏이라는 전제를 깔고 있는데, 현물 시장에는 공매도가 없다. 카르다노를 업비트나 바이낸스 현물 계좌로 들고 있다면 숏 신호가 났을 때 할 수 있는 일은 공매도 진입이 아니라 보유분을 정리하고 현금으로 대기하는 것뿐이다. 즉 이 규칙을 현물 봇에 그대로 옮기려면 “숏"을 “청산 후 관망"으로 바꿔 읽어야 한다. 그 순간 늘 시장에 있다는 원래 설계는 깨지고, 상승 구간에만 올라타는 반쪽짜리 규칙이 된다.

넷째, 24시간 쉬지 않는 코인 시장 특유의 함정이다. 이 규칙은 일봉 종가를 기준으로 움직이는데, 일봉의 경계 자체가 거래소 설정값일 뿐이다. 업비트는 한국 표준시 자정을 하루의 끝으로 삼고, 해외 대형 거래소 다수는 협정 세계시 자정을 쓴다. 두 시각 사이에는 아홉 시간의 차이가 있다. 같은 가격 흐름이라도 어느 거래소의 종가를 기준으로 삼느냐에 따라 특정 날짜의 봉이 이동평균 위로 마감하느냐 아래로 마감하느냐가 갈릴 수 있다. 주식처럼 장이 닫히는 시간이 정해져 있지 않으니, 어느 시각을 하루의 경계로 볼지부터 봇을 만드는 사람이 직접 정해야 한다.

다섯째, 카르다노 같은 레이어1 코인 고유의 사각지대다. 이 코인은 스테이킹 비율, 활성 스테이크 풀 수, 거버넌스 투표 결과, 하드포크 일정처럼 체인 안에서만 관찰되는 지표를 따로 갖고 있다. 종가와 이동평균의 관계만 보는 이 규칙은 그런 사건이 다가오고 있다는 것도, 방금 지나갔다는 것도 알지 못한다. 가격이 이동평균을 넘나드는 이유가 추세 때문인지 특정 사건 때문인지 이 규칙 안에서는 구분이 안 된다. 밈코인이라면 뉴스 한 방에 방향이 뒤집히는 성격이 문제가 되겠지만, 카르다노처럼 개발 로드맵과 거버넌스 절차가 느리게 진행되는 코인에서는 오히려 그 반대가 함정이다. 사건이 예고된 일정대로 조용히 지나가다가 어느 순간 한꺼번에 반영되면서 이동평균 하나로는 절대 못 잡는 갭성 움직임이 나올 수 있다는 뜻이다.

결론: 내 봇에 넣을 것인가

넣지 않기로 했다. 이유는 세 가지다. 하나는 방향이 없는 구간에서 반복적으로 뒤집히는 구조적 약점이 파라미터를 아무리 손봐도 근본적으로 없어지지 않는다는 점, 둘은 보조 파라미터(연속 확인 봉 수)의 기본값 근거를 이 글에서 확인하지 못한 채로 넣으면 결국 과거 데이터로 값을 끼워 맞추게 될 위험이 있다는 점, 셋은 늘 시장에 있다는 원래 설계가 공매도 없는 현물 구조와 맞지 않아 그대로 옮기면 규칙의 절반이 다른 의미로 바뀐다는 점이다.

다만 완전히 버리지는 않는다. 길이를 9가 아니라 50이나 200처럼 훨씬 길게 두면, 진입 신호로 쓰기엔 너무 느리지만 “지금이 상승 국면인지 하락 국면인지"를 가르는 큰 방향 필터로는 참고할 만하다고 본다. 다른 신호를 켜고 끄는 문지기 역할이다. 이것도 시세를 받아 확인한 결론이 아니라 규칙의 구조만 보고 내린 짐작이라는 점은 분명히 해 둔다. 이 글은 투자 권유가 아니며, 카르다노나 어떤 자산의 매수·매도를 제안하는 글이 아니다.

약어 풀이

  • ADA (Cardano) — 카르다노. 이 글에서 다룬 코인의 심볼.
  • SMA (Simple Moving Average) — 단순이동평균. 최근 n개 종가를 산술평균한 값.
  • MA (Moving Average) — 이동평균. 본문에서 이동평균선을 가리키는 줄임말로 썼다.
  • KST (Korea Standard Time) — 한국 표준시.
  • UTC (Coordinated Universal Time) — 협정 세계시.
  • IOG (Input Output Global) — 카르다노를 개발하는 회사. 찰스 호스킨슨이 세웠다.