서론: 몸통이 없는 봉

오늘은 도지(Doji)를 뜯어본다. 시가와 종가가 거의 같아서 몸통이 사실상 한 줄로 찌그러진 봉이다. 십자가나 더하기 기호처럼 생겼다. 차트를 처음 배울 때 가장 먼저 눈에 들어오는 모양인데, 그만큼 “여기서 방향이 바뀐다"는 식으로 과하게 읽히는 봉이기도 하다.

이번 편은 시세를 받아 성과를 검증한 글이 아니라 규칙 자체를 해부한 글이다. 승률을 적지 않은 이유도 그래서다. 도지가 나온 뒤에 가격이 올랐는지 내렸는지는 이 글에서 한 번도 재지 않았다. 그래서 “도지는 잘 맞는다"거나 “안 맞는다"는 말도 하지 않는다. 대신 이 봉을 규칙으로 정의하면 어떤 조건문이 되는지, 그 조건문이 무엇을 보고 무엇을 못 보는지를 적는다.

무대는 월드코인(WLD)이다. 가격을 보지 않으니 월드코인의 성과를 말할 수는 없다. 다만 이 코인의 성격을 놓고 도지라는 규칙이 어울리는지는 따져볼 수 있다. 월드코인은 홍채 인식으로 사람임을 증명하는 프로젝트의 토큰으로 알려져 있다. 차트 바깥에서 오는 이야기, 이를테면 프로젝트 소식이나 규제 이슈, 물량 해금 같은 것들이 가격 논리에 크게 섞이는 종류의 자산이다. 이런 자산에서 봉 하나의 모양이 얼마나 의미를 갖는지가 이번 편의 질문이다.

본문에 나오는 그림 네 장은 전부 실제 시세가 아니라 규칙을 설명하기 위한 모식도다. 그림 안에도 모식도(schematic)라고 적어 두었고, 축에는 가격 숫자를 넣지 않았다.

본론 1: 도지를 조건문으로 옮기기

캔들 하나는 네 개의 값으로 만들어진다. 시가, 고가, 저가, 종가, 영어로 OHLC다. 몸통은 시가와 종가 사이, 꼬리는 몸통 바깥에서 고가와 저가까지 뻗은 선이다. 도지는 이 중 몸통이 꼬리 전체에 비해 아주 작은 봉이다.

도지 변형 네 종류의 모식도

위 그림처럼 도지는 모양에 따라 이름이 갈린다. 위아래 꼬리가 비슷한 표준형, 꼬리가 둘 다 유난히 긴 장다리형, 아래 꼬리만 긴 잠자리형, 위 꼬리만 긴 비석형이다. 이름은 다르지만 공통점은 하나다. 장이 열린 가격 근처에서 닫혔다는 것이다.

문제는 “거의 같다"를 코드로 어떻게 쓰느냐다. 가장 흔한 방식은 몸통의 절대 길이가 아니라 봉 전체 범위 대비 비율로 보는 것이다.

body  = abs(close - open)
range = high - low
is_doji = range > 0 and body <= k * range

한 줄씩 뜯어 보자. body 는 몸통의 길이다. 상승이든 하락이든 방향은 지우고 크기만 본다. range 는 그 봉이 움직인 전체 폭이다. 분모가 0이면, 즉 고가와 저가가 같으면 나눌 수 없으니 조건에 range > 0 을 먼저 둔다. 거래가 거의 없는 시간대의 작은 코인 봉에서 실제로 걸리는 경우가 있다. 마지막 줄의 k 가 이 규칙의 유일한 파라미터다.

여기서 이 규칙의 성격이 드러난다. 도지에는 업계가 합의한 기본값이 없다. RSI 14나 볼린저 밴드 20일·2표준편차처럼 트레이딩뷰 기본 설정으로 박혀 있는 숫자가 아니다. 몸통이 범위의 5퍼센트 이하여야 한다는 사람도 있고 10퍼센트까지 봐주는 사람도 있다. 그래서 이 글에서도 k를 특정 값으로 못 박지 않는다. 어떤 값이 맞는지는 시세로 재봐야 알 수 있고, 이번 편은 재지 않았기 때문이다.

몸통 대비 범위 비율에 따른 도지 판정

위 그림은 같은 범위의 봉에서 몸통만 키워 가며 판정이 어떻게 바뀌는지를 보여준다. 첫 번째는 누가 봐도 도지다. 세 번째는 누가 봐도 아니다. 문제는 가운데다. 기준값을 조금만 움직여도 참과 거짓이 뒤집히는 구간이 있고, 이 구간의 봉이 생각보다 많다. 파라미터가 하나뿐이라 과최적화 걱정이 적다고 생각하기 쉽지만, 그 하나가 신호의 개수를 통째로 좌우한다.

또 하나 짚을 점이 있다. 비율로 정의하면 봉이 아주 작을 때도 도지가 된다. 변동이 거의 없는 조용한 구간에서는 범위 자체가 좁아서 몸통이 상대적으로 어떻다는 말이 별 의미가 없다. 그래서 범위를 평균 실제 범위(ATR) 같은 변동성 지표와 비교해 “평소보다 충분히 움직인 봉인가"를 추가 조건으로 거는 사람도 있다. 이 경우 파라미터가 하나 더 늘어난다. 규칙은 단순해 보여도 쓸 만하게 만들려면 곧바로 조건이 불어난다.

본론 2: 이 봉이 가정하는 심리

도지가 의미를 갖는 이유는 심리 서사 때문이다. 시가에서 올랐다 내렸다를 오가다가 결국 제자리에서 닫혔으니 매수와 매도가 팽팽했다, 따라서 지금까지의 추세에 힘이 빠졌을 수 있다는 이야기다. 상승 끝에 나오면 고점 신호, 하락 끝에 나오면 저점 신호로 읽는다.

여기서 첫 번째 함정은 도지 자체에는 방향 정보가 없다는 점이다. 봉 하나만 보면 올랐는지 내렸는지 알 수 없다. 방향은 전적으로 앞선 봉들에서 빌려온다.

같은 도지가 앞선 흐름에 따라 다르게 읽히는 모식도

위 그림이 이 점을 보여준다. 모양이 똑같은 봉이 상승 뒤에서는 고점으로, 하락 뒤에서는 저점으로, 횡보 중에서는 아무 의미 없는 봉으로 읽힌다. 규칙으로 옮기려면 “앞선 몇 개 봉이 어느 방향이었나"라는 조건을 따로 만들어야 한다. 그 순간 도지는 단독 지표가 아니라 추세 판정 규칙에 얹힌 부속품이 된다. 추세를 어떻게 정의하느냐가 신호의 질을 사실상 결정한다.

두 번째 함정은 “다음 봉"이 필요하다는 점이다. 도지는 망설임을 알려줄 뿐이고 반전은 확인해 주지 않는다. 그래서 대부분의 설명은 도지 다음 봉이 반대 방향으로 몸통을 만들어야 비로소 의미가 있다고 말한다. 규칙으로 쓰면 도지가 뜬 봉의 종가가 확정될 때까지 기다린 뒤, 다시 한 봉을 더 기다려 진입한다. 후행성이 두 봉만큼 쌓인다. 일봉 기준이면 이틀이다. 망설임이 해소되는 쪽으로 이미 한참 가 있을 수 있다.

세 번째 함정은 도지가 봉 하나의 모양일 뿐이라는 점이다. 같은 도지가 1분봉에도 있고 일봉에도 있다. 시간 단위가 짧을수록 흔하게 나오고 그만큼 잡음이 섞인다. 단위를 높이면 드물어지지만 그만큼 진입 기회도 줄어든다. 어느 쪽이든 도지가 반전을 알려주는 정도는 시간 단위에 따라 달라지는데, 그걸 재지 않은 이 글에서 말할 수 있는 것은 “달라질 수 있다"까지다.

본론 3: 코인 시장에서 이 규칙이 깨지는 자리

도지의 심리 서사는 주식 시장에서 나온 것이다. 장이 열리고 닫히는 하루가 있고, 시가와 종가에는 시장 참가자들이 의미를 부여한다. 시가는 밤사이 쌓인 소식이 한꺼번에 가격에 반영되는 자리고, 종가는 그날의 마지막 합의다. 코인 시장에는 이 전제가 없다.

가장 큰 함정은 일봉 경계다. 코인은 24시간 쉬지 않고 거래되므로 “하루의 시작"은 거래소가 정해놓은 설정값일 뿐이다. 업비트는 한국 시간(KST) 자정에서 일봉을 끊고, 해외 거래소는 대개 협정 세계시(UTC) 자정에서 끊는다. 둘 사이에는 아홉 시간 차이가 있다.

일봉 경계가 다르면 같은 24시간이 서로 다른 봉이 되는 모식도

위 그림은 같은 24시간 가격 흐름을 두 가지 경계로 자른 모식도다. 경계가 다르면 같은 흐름이 서로 다른 시가와 종가를 갖는 봉 두 세트로 나뉜다. 한쪽에서는 몸통이 거의 없는 도지인 날이 다른 쪽에서는 뚜렷한 몸통을 가진 봉이 될 수 있다. 같은 코인, 같은 날인데 거래소에 따라 도지인지 아닌지가 갈리는 것이다. 이것은 도지의 문제이기도 하지만, 몸통에 의미를 두는 모든 봉 규칙의 문제다. 시가와 종가가 거래소 설정에 따라 움직이는 값이라면, 시가와 종가의 일치를 읽는 이 규칙은 그만큼 자의적이다.

그래서 코인 봇에서 도지를 쓰려면 먼저 “어느 거래소의 어떤 경계로 만든 봉인가"를 정해야 한다. 내가 매매하는 거래소의 봉과 신호를 계산한 봉이 다르면, 눈으로 본 신호와 봇이 낸 신호가 어긋난다.

두 번째 함정은 갭이 드물다는 점이다. 주식에서는 밤사이 소식이 시가 갭으로 한 번에 나타난다. 코인은 쉬지 않고 거래되니 소식이 시시각각 가격에 스며든다. 시가가 “새로운 하루의 출발점"이라는 의미를 갖지 못하니 시가와 종가가 같다는 사실의 무게도 가벼워진다.

세 번째는 월드코인 같은 자산의 성격이다. 이런 토큰은 차트 바깥의 소식에 방향이 뒤집힐 수 있다. 소식이 나오면 도지로 보였던 망설임이 한 시간 만에 긴 몸통으로 끝난다. 반대로 소식 없이 흘러가는 구간에서는 도지가 연달아 나온다. 봉 모양은 이 차이를 구분하지 못한다. 물량이 풀리는 일정처럼 날짜가 정해진 이벤트가 있다 해도, 그 일정을 확신하지 못하는 이상 여기서 구체적인 날짜를 적지는 않는다. 다만 이런 외부 변수가 있는 자산에서 봉 하나의 모양에 무게를 두는 것은 위험하다는 것까지는 말할 수 있다.

네 번째는 현물 시장의 한계다. 도지가 고점에서 나왔을 때 이것을 하락 신호로 읽는다면 그 다음 행동은 공매도다. 그런데 현물 계좌에서는 공매도를 할 수 없다. 내가 쓸 수 있는 방향은 사는 것과 팔고 나오는 것뿐이다. 그러면 고점의 도지는 “진입 신호"가 아니라 “이미 가진 물량을 정리할까” 하는 청산 신호로만 쓸 수 있다. 저점의 도지는 진입 신호로 쓸 수 있지만, 하락 도중에 나온 도지에서 사면 떨어지는 칼날을 잡는 셈이 된다.

본론 4: 도지가 못 보는 것

정리하면 도지는 다음을 보지 못한다.

  • 방향. 봉 하나로는 어느 쪽으로 가던 길이었는지 알 수 없다. 앞선 봉에서 빌려야 한다.
  • 거래량. 몸통이 작은 이유가 거래가 활발하게 오가다 제자리인 건지, 아무도 거래하지 않아서인지 구분하지 못한다. 앞의 경우는 팽팽한 힘겨루기이고 뒤의 경우는 그냥 한산한 시간이다. 거래량이 얇은 알트코인에서는 뒤의 경우가 흔하다.
  • 봉 내부의 경로. 시가와 종가가 같다는 것은 그 사이 어떤 경로를 지났는지를 전혀 말해 주지 않는다. 크게 올랐다가 내려왔을 수도 있고, 크게 내렸다가 올라왔을 수도 있고, 거의 움직이지 않았을 수도 있다. 꼬리의 길이가 힌트를 주지만 순서는 알 수 없다.
  • 시간 단위의 의미. 앞에서 말했듯 같은 모양이어도 단위에 따라 무게가 다르다.
  • 다음 봉. 확인 없이는 아무것도 말하지 않는다.

이렇게 적어 놓고 보면 도지는 “무엇이 일어났는지"를 알려주는 봉이 아니라 “무엇이 일어나지 않았는지"를 알려주는 봉이다. 방향이 정해지지 않았다는 사실 하나만 담고 있다. 그것을 반전의 전조로 읽는 것은 해석을 얹은 것이고, 그 해석이 맞는지는 이 글에서 재지 않았다.

결론: 내 봇에 넣을 것인가

넣지 않기로 했다. 정확히는 단독 진입 조건으로는 넣지 않는다.

이유는 세 가지다. 첫째, 파라미터 기본값이 합의되어 있지 않아서 k를 내가 정해야 하는데, 정할 근거가 되는 측정을 이 글에서 하지 않았다. 근거 없이 정한 숫자를 봇에 넣으면 과최적화든 아니든 설명할 수 없는 숫자가 하나 생긴다. 둘째, 일봉 경계가 거래소 설정값이라서 같은 코인이 다른 거래소 봉에서는 도지가 아닐 수 있다. 셋째, 방향 정보가 없어 추세 판정 규칙을 따로 붙여야 하는데, 그러면 도지는 부속품이고 성패는 추세 규칙이 좌우한다.

내 봇의 진입 게이트와 나란히 놓아도 결론은 같다. 내 게이트는 추세와 변동성 같은 조건을 먼저 확인하고 그 위에서 진입 시점을 잡는 구조다. 도지는 그 어느 쪽에도 새 정보를 보태지 못한다. 변동성은 이미 따로 보고 있고, 추세도 이미 따로 보고 있다. 도지가 줄 수 있는 것은 “지금 망설이는 중"이라는 정보뿐인데, 이것은 진입을 막는 필터로는 쓸 수 있어도 진입을 일으키는 신호로 쓰기에는 약하다.

그래서 남겨둘 용도는 하나다. 이미 보유 중일 때 추세 끝에서 도지가 나오면 알림을 받는 정도, 즉 사람이 차트를 한 번 더 들여다보게 하는 보조 표시다. 자동 청산 조건으로 올리는 것도 아직은 이르다. 이것도 재보지 않은 가정이기 때문이다.

다시 한 번 적어 둔다. 이번 편은 시세를 받아 성과를 검증한 글이 아니라 규칙 자체를 해부한 글이다. 도지가 통하는지 아닌지는 이 글이 답하지 않는다. 월드코인은 무대로 빌렸을 뿐이고, 이 코인에 대한 어떤 성과도 주장하지 않았다. 나중에 실제 시세로 재볼 일이 생기면 그때 이 글의 결론을 다시 판단할 것이다.

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

약어 풀이

  • WLD (Worldcoin) — 월드코인의 티커.
  • OHLC (Open, High, Low, Close) — 시가, 고가, 저가, 종가. 캔들 하나를 만드는 네 값.
  • RSI (Relative Strength Index) — 상대강도지수. 기본 기간 14로 쓰는 모멘텀 지표.
  • ATR (Average True Range) — 평균 실제 범위. 변동성 크기를 재는 지표.
  • KST (Korea Standard Time) — 한국 표준시. UTC보다 9시간 빠르다.
  • UTC (Coordinated Universal Time) — 협정 세계시.