MarketTrace
M1포지셔닝M2풋프린트M3청산M4Funding
방법론 · v3.0.0 · 업데이트 2026-05-23

크로스 익스체인지 풋프린트

풋프린트 차트가 어떻게 Binance, Bybit, OKX, Hyperliquid 무기한 선물 깊이와 거래 흐름을 분당 bid × ask 셀로 결합하는가 — 출처, 정규화, 시간 정렬, 월 분류, 엣지 케이스, 한계.

실시간 위젯 보기: /perpetuals/footprint.

데이터 출처

네 거래소 피드, 공개 깊이 스트림만. API 키 불필요.

정규화: 가격과 수량

크로스 익스체인지 집계는 모든 출처가 같은 단위를 말할 때만 작동. 애그리게이터에 도달하기 전 인제스트에서 두 가지 조정이 일어남.

수량을 기초 코인으로. Binance와 Bybit은 기초 통화로 직접 수량을 반환(BTC-USDT 무기한은 BTC 단위 등). OKX는 계약 단위로 크기를 반환하며 한 계약은 기초 코인 ctVal 단위. BTC-USDT-SWAP은 ctVal = 0.01, DOGE-USDT-SWAP은 1000. OKX 피드는 시작 시 공개 instruments 엔드포인트에서 ctVal을 해석하고 발행 전에 모든 레벨에 곱셈자 적용. 이 단계가 없으면 DOGE 깊이가 크로스 익스체인지 뷰에서 1000배 깊게 읽힘.

가격을 자산별 버킷에. 거래소마다 틱 크기가 약간 다름. 애그리게이터가 가격을 가장 가까운 버킷 경계로 내림하여 거래소 간 인접 틱이 같은 벽에 병합되도록 함. 자산별 주 버킷 크기:

btc:  $1.0
eth:  $0.10
sol:  $0.05
bnb:  $0.10
xrp:  $0.001
doge: $0.0001

멀티 버킷 뷰

매 사이클 같은 원시 깊이가 병렬로 자산당 두 버킷 크기로 빈됨: 주 틱(위)과 5× 거친 변형. 사용자가 어느 것을 표시할지 선택. 풋프린트은 재연결 없이 올바른 버킷으로 전환.

BTC의 경우 $1 뷰(세밀, 중간가 근처에서 밀집)와 $5 뷰. 측면당 200 버킷 빈으로 $1에서 풋프린트은 중간가 ±$200을 커버. $5 뷰는 ±$1 000에 도달하며 라운드 넘버 자석($79k / $80k / $81k)이 위치하는 곳. 같은 로직이 자산별로 스케일: ETH는 $0.10 + $0.50 발행, DOGE는 $0.0001 + $0.001 발행.

집계: 합 + 거래소별 분할

각 버킷에 대해 애그리게이터가 세 출처의 수량을 합하고 거래소별 기여를 총합과 함께 보존. UI가 단일 벽 행과 호버 시 스택 분해를 두 번째 라운드트립 없이 렌더링할 수 있게 함.

for src in (binance, bybit, okx):
    for (price, qty_base) in src.depth.bids:
        bucket = floor(price / BUCKET_SIZE) × BUCKET_SIZE
        bid_buckets[bucket].total      += qty_base
        bid_buckets[bucket].by[src]    += qty_base
    # asks: 동일, 가격 오름차순 정렬
top_bids = sorted(bid_buckets, by price desc)[:200]
top_asks = sorted(ask_buckets, by price asc)[:200]

출력 payload는 출처 리스트와 거래소별 베스트 비드/베스트 아스크를 별도로 포함. 단일 통합 베스트 비드/아스크는 노출하지 않음 — 한계 참조.

케이던스와 spoof 해상도

애그리게이터는 10 Hz로 발행(~100 ms마다 스냅샷 1개). 프로듀서 피드는 ~20 Hz까지 쓸 수 있으나 제약은 거래소 푸시율(원생 ~50-100 ms).

풋프린트 100 ms 셀 너비에서 벽과 spoof는 다음과 같이 표시:

100 ms 미만 spoof는 탐지 불가. 우리 접근 티어에서 세 거래소 모두에 잠긴 tick-by-tick(TBT) 채널이 필요.

시간 정렬

각 프로듀서는 원생 깊이 스트림에서 거래소 이벤트 타임스탬프를 추출(Binance의 E 필드, Bybit의 top-level ts, OKX의 entry-level ts)하고 프로듀서 자신의 발행 시간과 함께 전파.

애그리게이터에서 각 스냅샷은 출처별 이벤트 타임스탬프 크로스 익스체인지 skew(OK 상태 출처 간 이벤트 시간 최대 - 최소)를 노출. 풋프린트 스냅샷 ts는 타임라인이 균일하게 간격을 가지도록 애그리게이터 폴링 순간으로 유지. skew는 툴팁에 ≥ 100 ms일 때 표시(≥ 300 ms는 빨강)되어 셀의 “합의”가 정직하게 경계 설정됨.

전형적 관측 skew: 정상 상태 < 100 ms. 한 출처가 일시적으로 뒤처지는 basis 스트레스 순간에 300-500 ms 피크. 이 귀속이 없으면 Binance T+0과 Bybit T+200 ms에 게시된 벽이 단일 즉시 합의로 읽혀버림 — 실제로는 그렇지 않음.

Stale 처리

각 프로듀서가 60초 TTL과 타임스탬프로 출처 키 작성. 애그리게이터가 매 사이클 출처별 나이를 계산하고 60초 이상 된 출처를 통합 뷰에서 제외. 제외된 출처는 여전히 sources 배열에 stale 상태로 나타나 FE가 저하 지시자를 렌더링.

FE: 툴바의 출처 pill이 색상 + 상태를 표시. 풋프린트은 남은 출처로 계속 작동. 지속적 stale 상태는 보통 프로듀서가 워치독 리셋을 겪었거나 WebSocket이 깨끗한 재연결 없이 끊겼음을 의미. 페이지는 조용히가 아니라 가시적으로 저하됨.

한계와 알려진 함정

버전

v1.0.0 최초 릴리스 2026-05-08(4 Hz 집계, 50 레벨). v2.0.0 2026-05-09: 10 Hz, 200 레벨, 멀티 버킷 뷰(자산당 $1 + $5), 출처별 이벤트 타임스탬프 정렬과 크로스 익스체인지 skew 노출로 업그레이드. v2.1.0 2026-05-21: multi-resolution l2Book 구독을 통해 Hyperliquid를 네 번째 출처로 추가(원시 20레벨 한도는 단독으로는 너무 짧음. 거친 nSigFigs 스트라이프가 mid 근처 네이티브 granularity를 유지하면서 도달 범위를 확장). v3.0.0 2026-05-23: M2 풋프린트 UI 폐지 후 크로스 익스체인지 오더북 풋프린트 방법론에서 풋프린트 방법론으로 rebrand. Substrate(출처, 정규화, 정렬)은 변경 없음 — 풋프린트 init aggregator가 동일한 `prod:agg:<asset>:history` 키를 읽음. 멀티 버킷 변형(`prod:agg:<asset>:b<size>:*`)은 같은 시기에 폐기됨(풋프린트가 유일한 소비자였음). 컴퓨트 경로의 중요 변경은 버전을 올리고 발행일을 갱신. 외관 편집은 안 함.