
얼마 전 횡보장에서 자동매매 수익률이 좋다는 화면을 봤다. 거래 횟수와 그리드 수익은 눈에 띄었지만, 보유 코인의 평가손익과 수수료를 합친 계좌 수익률은 따로 확인해야 했다. 코인 자동매매를 볼 때 내가 먼저 묻는 것도 같다. 봇이 몇 번 이겼느냐보다 계좌에 얼마가 남았느냐다.
1. 거래량은 주문이 체결될 자리부터 보여준다
봇은 정해진 조건이 오면 주문을 낸다. 문제는 신호가 맞아도 원하는 가격에 체결된다는 보장이 없다는 점이다. 최근 거래량을 20일 중앙값과 비교하고, 실제 주문을 넣을 시간대의 호가창도 봐야 한다. 하루 거래량이 커 보여도 새벽 시간대에는 매수·매도 호가가 얇을 수 있다.
예를 들어 100만 원을 매수할 때 최우선 매도 호가에 30만 원어치만 있다면, 나머지는 더 높은 가격의 물량을 사야 한다. 백테스트에 찍힌 가격과 실제 평균 체결가가 벌어지는 이유다. 거래량이 급감한 코인에서는 작은 주문도 성과를 흔든다. 그래서 처음에는 주문 금액을 작게 잡고 예상 체결량과 실제 체결량의 차이를 기록한다.
2. 매매 간격보다 왕복 비용이 작으면 멈춘다
그리드 봇은 가격 구간마다 사고팔지만, 거래가 잦다는 사실 자체가 수익은 아니다. 가령 매수·매도 가격 차이가 0.25%이고 각 거래의 수수료가 0.05%, 각 체결의 불리한 가격 차이가 0.08%라면 왕복 비용은 약 0.26%다. 매매 간격보다 비용이 더 크다. 이 수치는 계산을 보여주기 위한 예시이며, 실제 비용은 거래소·주문 방식·호가 상황에 따라 달라진다.
바이낸스도 현물 그리드 거래에 현물 거래 수수료가 적용된다고 안내한다. 성과 화면에서 체결된 그리드의 이익만 볼 일이 아니다. 아직 팔지 않은 코인의 평가손익까지 포함한 전체 자산을 시작 시점과 비교해야 한다. 하락장에서 소액 이익 거래가 여러 번 쌓여도 남은 코인의 손실이 더 클 수 있다.
선물 자동매매라면 계산 항목이 늘어난다. 펀딩비와 청산 가능성을 빼고 본 백테스트 수익률은 그대로 믿기 어렵다. 특히 레버리지가 높을수록 평소의 작은 이익보다 한 번의 급격한 가격 이동이 계좌에 미치는 영향이 커진다.
3. 과거 수익률에는 하락 구간이 들어 있어야 한다
상승장 자료만 넣으면 매수 신호가 많은 전략은 대체로 보기 좋다. 나는 상승·횡보·급락 구간을 나눠 손익과 최대 낙폭을 본다. 예컨대 과거 90일로 매개변수를 고른 뒤 다음 30일을 별도로 검증하는 식이다. 숫자는 예시다. 중요한 건 전략을 고르는 데 쓴 구간과 성능을 확인하는 구간을 분리하는 일이다.
수익률 15%라는 숫자 옆에는 최대 낙폭 20%, 거래 횟수 600회 같은 정보가 함께 있어야 한다. 낙폭은 전략을 계속 운용할 수 있을 만큼 감당 가능한지 보여주고, 거래 횟수는 비용 추정이 얼마나 중요한지 알려준다. 백테스트에는 당시의 수수료, 호가 차이, 미체결 가능성도 반영해야 한다. 체결가를 매번 자신에게 유리하게 잡으면 결과가 부풀려진다.
과거 자료에만 맞춰 매개변수를 계속 바꾸는 것도 경계한다. 특정 가격 간격 하나에서만 성과가 좋고 조금만 바꿔도 손실로 돌아선다면, 시장의 규칙을 찾았다기보다 지난 가격 움직임에 맞춘 것일 수 있다.
4. 온체인 유입은 매도 신호로 단정하지 않는다
거래소로 들어오는 코인 물량은 수급을 읽는 단서다. 다만 큰 입금이 포착됐다고 곧바로 매도 주문이 나온다는 뜻은 아니다. 거래소 내부 지갑 이동이나 주소 분류 변경이 섞일 수 있다. 글래스노드도 거래소 주소를 식별해 만든 지표에는 이런 해석상의 한계가 있다고 설명한다.
그래서 나는 유입량 하나로 봇을 켜거나 끄지 않는다. 평소 대비 유입량이 얼마나 늘었는지 보고, 같은 시간 현물 거래량과 가격 반응을 맞춰 본다. 입금이 커도 가격이 버티고 현물 매수가 이어지는 경우와, 거래량이 늘면서 지지 가격을 깨는 경우는 다르다. 온체인 수치는 경보에 가깝고, 주문 판단에는 거래소에서 실제로 체결되는 흐름이 필요하다.
5. 손실 한도와 중단 조건은 수익 목표보다 먼저다
자동매매에는 오류도 자동으로 반복될 수 있다는 문제가 있다. 주문 요청 뒤 응답이 끊겼다고 같은 주문을 다시 보내면 중복 체결이 생길 수 있다. 봇은 재시도 전에 주문 상태와 잔고를 확인해야 한다. API 키는 필요한 주문 권한만 부여하고 출금 권한은 제외하는 편이 안전하다. 업비트 개발자 문서에서도 API 키의 권한과 허용 IP를 따로 설정하도록 안내한다.
운용 전에는 숫자로 중단 조건을 적어둔다. 예를 들어 하루 실현·평가손익 합계가 운용 자금의 2% 손실에 닿거나, 예상 체결가와 실제 체결가의 차이가 정해둔 범위를 넘으면 신규 주문을 멈추는 방식이다. 2%는 권장 수치가 아니라 한도 설정의 예시다. 자금 규모와 전략의 변동성에 맞춰 별도로 정해야 한다.
내가 코인 자동매매에서 기대하는 것은 수익을 보장하는 기계가 아니라 규칙을 일관되게 실행하는 도구다. 거래량, 왕복 비용, 최대 낙폭, 온체인 수급, 손실 한도가 계좌 기록에서 서로 맞아떨어질 때만 운용 규모를 늘릴 이유가 생긴다.
