저는 한동안 TradingView 차트만 믿고 시스템을 돌렸습니다. 4시간봉 기준으로 진입·청산 신호를 설계하고, 그게 전부라고 생각했습니다. 그런데 올해 초 특정 구간에서 제 시스템이 연속으로 손절을 맞는 패턴이 반복됐습니다. 차트 신호는 완벽했는데 가격은 반대로 움직였습니다. 그때 처음으로 거래소 BTC 유입량 데이터를 들여다봤고, 고래들이 진입 직전부터 물량을 거래소로 옮기고 있었다는 걸 뒤늦게 확인했습니다. 그 이후로 저는 온체인 데이터를 차트의 ‘보조 필터’가 아니라 시장 참여자의 행동을 직접 읽는 수단으로 취급하기 시작했습니다.
온체인 데이터가 차트와 다른 이유 — 가격이 아닌 행동을 본다
차트는 이미 일어난 거래의 결과를 보여줍니다. 반면 온체인 데이터는 그 거래가 일어나기 전 지갑과 지갑 사이에서 자산이 어떻게 움직이는지를 보여줍니다. 저는 이 차이를 ‘결과 데이터 vs 행동 데이터’로 구분해서 생각합니다. 예를 들어 대형 지갑에서 바이낸스 입금 주소로 BTC가 대량 이동하면, 그 시점에 차트는 아무 신호도 주지 않습니다. 하지만 이 이동은 수 시간 혹은 수 일 내에 매도 압력이 발생할 가능성을 시사합니다. Glassnode나 CryptoQuant 같은 플랫폼이 이 데이터를 정제해서 제공합니다. 제가 주로 보는 지표는 세 가지입니다. 첫째, Exchange Net Flow — 거래소 순유입이 플러스로 전환되면 단기 매도 압력 증가 신호로 읽습니다. 둘째, Exchange Reserve — 전체 거래소에 예치된 BTC 총량이 줄면 공급 감소, 즉 매도 압력 완화로 해석합니다. 셋째, Whale Alert 기준 1,000 BTC 이상 이동 — 방향이 거래소인지 콜드월렛인지에 따라 의미가 완전히 달라집니다. 이 세 가지를 조합해서 차트 신호와 충돌하는지 확인하는 것이 제 현재 루틴입니다.
SOPR과 MVRV — 시장 전체의 수익·손실 온도를 읽는 법
온체인 데이터 중에서 저를 가장 오래 붙잡은 지표는 SOPR(Spent Output Profit Ratio)입니다. 이 지표는 현재 이동된 코인이 마지막으로 이동했을 때보다 얼마나 수익 상태에서 팔렸는지를 1을 기준으로 표현합니다. SOPR이 1보다 크면 시장 참여자들이 평균적으로 수익을 보며 팔고 있다는 의미이고, 1 아래로 내려가면 손실을 감수하고 팔고 있다는 뜻입니다. 제가 실제로 관찰한 패턴은 이렇습니다. 하락장이 길어지다가 SOPR이 1 근처에서 반등하는 시점이 단기 저점과 겹치는 경우가 꽤 있었습니다. 이걸 단독으로 쓰는 건 위험하지만, RSI 과매도 구간과 겹칠 때는 의미 있는 필터로 작동하는 것 같아서 검증 중입니다. MVRV Z-Score는 좀 더 거시적인 지표입니다. 시장 전체 시가총액이 실현 가치 대비 얼마나 고평가·저평가됐는지를 Z-Score로 환산한 값인데, 역사적으로 7 이상이면 과열 구간, 0 아래면 저평가 구간으로 분류됩니다. 저는 이 지표를 월간 단위로 체크해서 포지션 사이즈 조절의 참고 기준으로 활용하고 있습니다. 단기 트레이딩보다는 리스크 관리 레이어로 씁니다.
실전 연결 — 온체인 데이터를 자동매매 파이프라인에 붙이는 방법
온체인 데이터를 읽는 것과 자동매매 시스템에 연결하는 것은 전혀 다른 문제입니다. 저는 처음에 Glassnode API를 직접 호출해서 Jesse 전략 파일 안에서 필터로 쓰려고 했습니다. 그런데 Glassnode의 무료 플랜은 API 호출이 하루 10회로 제한되어 있고, 유료 플랜은 월 $39부터 시작합니다. 대안으로 찾은 방법이 두 가지입니다. 첫째, CryptoQuant의 무료 API를 활용하는 방법입니다. Exchange Flow 일부 데이터는 무료로 제공됩니다. Flask 서버에서 6시간마다 데이터를 풀링해서 Redis에 캐싱해두고, Jesse 전략에서 외부 HTTP 요청 대신 Redis에서 읽어오는 구조로 만들었습니다. 둘째, Dune Analytics의 퍼블릭 쿼리를 활용하는 방법입니다. Dune에는 커뮤니티가 공유한 고급 온체인 쿼리들이 많습니다. Dune API(무료 티어)로 쿼리 결과를 JSON 형태로 받아서 Make.com 시나리오에서 후처리한 뒤 Cafe24 VPS의 Flask 엔드포인트로 넘기는 파이프라인을 테스트 중입니다. 현재로서는 온체인 신호를 직접 진입 트리거로 쓰지 않고, 특정 임계값 초과 시 포지션 사이즈를 절반으로 줄이는 리스크 필터로만 운용하고 있습니다. 아직 검증 단계입니다.
💬 운영자 한마디
솔직히 말하면 저는 온체인 데이터를 과신하던 시기가 있었습니다. 고래 이동 있다고 무조건 숏 잡았다가 스퀴즈 맞은 적도 있습니다. 지금은 온체인을 ‘확신의 도구’가 아니라 ‘확률 조정의 도구’로 씁니다. 차트 신호와 온체인 신호가 같은 방향을 가리킬 때만 포지션 사이즈를 올리고, 충돌할 때는 사이즈를 줄이는 방식입니다. 이게 지금 제 시스템이 버티는 이유 중 하나라고 생각합니다.
— J_River · autoprofit 운영자
✅ 이번 주 체크리스트
- CryptoQuant 무료 계정 만들고 BTC Exchange Net Flow 차트 북마크하기
- Glassnode Studio에서 SOPR 지표 7일 이동평균 선 추가해서 관찰 시작하기
- Dune Analytics에서 ‘whale exchange inflow’ 퍼블릭 쿼리 검색 후 즐겨찾기 등록
- Whale Alert 텔레그램 봇 구독해서 1,000 BTC 이상 이동 실시간 알림 받기
- 매주 토요일 MVRV Z-Score 값을 노션이나 스프레드시트에 기록해 추세 파악하기
- 온체인 신호와 차트 신호가 충돌하는 날 포지션 사이즈 50% 축소 규칙 문서화하기
- Flask 서버에 CryptoQuant 무료 API 6시간 폴링 스크립트 작성 후 cron 등록하기
온체인 데이터는 차트를 대체하지 않습니다. 하지만 차트가 보여주지 못하는 시장 참여자의 실제 행동을 읽을 수 있게 해줍니다. 저는 지금도 이 데이터를 이해하고 시스템에 통합하는 방법을 실험 중입니다. 다음 칼럼에서 Redis 캐싱 구조를 더 구체적으로 공유하겠습니다.
※ 본 콘텐츠는 운영자 개인의 경험과 연구를 바탕으로 한 정보 제공 목적이며, 특정 종목에 대한 투자 권유나 매매 시그널이 아닙니다. 암호화폐 및 자동매매는 원금 손실 가능성이 있는 고위험 활동이며, 모든 투자 판단과 그 결과에 대한 책임은 투자자 본인에게 있습니다.