Pro+ 7일 무료 · 카드 불필요무료 체험 시작하기

청산 히트맵

강제 청산 데이터를 수집하고 렌더링하는 방식, 그리고 히트맵과 피드의 차이입니다.

히트맵이 보여주는 것

전체 화면 청산 히트맵은 실시간 캔들스틱 차트 뒤에 그려지는 시간×가격 강도 격자이며, 둘 다 하나의 공유 USD 가격 축에 걸려 있어 한 번 이동하거나 확대하면 함께 움직입니다. 가로축은 시간, 세로축은 가격이고, 각 셀은 하나의 시간 bucket(구간) 안의 가격 구간입니다. 기본 레이어는 추정 청산 표면입니다. 새로 열린 레버리지 명목가치를 진입 가격에 고정된 이산 청산 레벨로 투사하고, 가격이 그 레벨을 통과할 때까지 이어서 들고 가며, 시장이 쓸어간 띠는 제거합니다. 관측된 기록이 아니라 모델로 계산한 투사값이므로, 이 레이어의 범례는 달러가 아니라 상대 강도로 표시됩니다.

가격 (USD)시간 (UTC)컬러바달러가 아닌 상대 강도열 격자셀 = 가격 구간 × 열캔들같은 가격 축 — 함께 움직임호버는 열 전체를 읽음셀 하나레벨 1개, 열 1개호버 판독값레벨 값과 열 합계
두 레이어는 같은 USD 가격 축에 고정되어 있어, 한 번 이동하거나 확대하면 함께 움직입니다. 한 행은 가격 구간 하나로 BTC는 50달러, ETH는 5달러, SOL은 50센트이며, 한 열은 렌더링 간격 하나로 lookback(조회 기간)이 길어질수록 넓어집니다. 컬러바에 상대 강도라고 적힌 이유는 추정 레이어가 모델로 계산한 투사값이지 보존되는 달러 총액이 아니기 때문입니다. 마우스를 올리면 정확히 한 셀이 선택되고 그 열 전체를 읽어냅니다.

open interest에서 청산 레벨까지

추정 표면의 모든 열은 거래소마다 하나의 숫자에서 시작합니다. 같은 구간 격자에서 직전 열 이후 그 거래소의 open interest가 얼마나 늘었는가입니다. 증가분만 집계되고 감소는 아무것도 남기지 않습니다. 새로 열린 이 명목가치는 그 거래소가 해당 구간에 보고한 가격에 고정되며, 모델은 이를 방금 진입한 집단의 진입 가격으로 봅니다. 처음 보는 거래소이거나 커버리지 공백 후 다시 나타난 거래소는 기준선만 다시 세울 뿐 아무것도 남기지 않습니다. 공백 이전에 열린 포지션의 진입 가격은 관측할 수 없고, 결코 지어내지 않기 때문입니다.

새로 열린 명목가치는 이어서 롱과 숏 비중으로 나뉩니다. 계정 비율 입력이 없으면 funding rate를 따르는 선형 신호로 나누되 그 값을 제한하며, 그 결과 롱 비중은 언제나 30%에서 70% 사이로 유지되므로 어느 한쪽으로 완전히 쏠리는 일은 없습니다. 각 방향은 5배에서 125배까지 2.5배 간격으로 이루어진 49단짜리 레버리지 사다리에 걸쳐 분배되며, 45배에서 정점을 이루는 로그정규 곡선으로 가중치가 매겨집니다. 이 사다리는 측정값이 아니라 명시된 모델 가정입니다. 중앙화 거래소에서 포지션별 레버리지는 관측할 수 없습니다.

모델은 각 단마다 전체 집단 명목가치가 아니라 1만 달러라는 대표 포지션 크기에서 해당 거래소의 유지증거금률을 조회합니다. 집단 전체 명목가치를 쓰면 거래소마다 고액 구간이 적용되어 모든 단이 하나의 청산 가격으로 뭉개지기 때문입니다. 레벨 가격은 진입가와 레버리지의 고정된 함수입니다. 롱은 진입가 곱하기 (1 − 1/레버리지 + 유지증거금률), 숏은 진입가 곱하기 (1 + 1/레버리지 − 유지증거금률)입니다. 진입가가 고정되어 있으므로 가격이 움직여도 레벨은 움직이지 않습니다.

띠를 살려두는 것과 지우는 것

투사된 레벨은 누적 표면에 합쳐지며, 열마다 정확히 세 가지 일이 순서대로 일어납니다. 기존 띠는 그대로 다음 열로 넘어갑니다. 시간에 따른 감쇠가 없으므로, 손대지 않은 띠는 몇 시간이 지나도 처음 만들어졌을 때와 똑같아 보입니다. 이미 띠가 있는 구간에 새 레벨이 떨어지면 그 값에 합산되는데, 그래서 한 가격에서 반복해 포지션이 열리면 선이 하나 더 생기는 대신 기존 선이 밝아집니다. 마지막으로, 그 열 동안 가격이 통과한 모든 구간은 같은 열에서 방금 쌓인 것까지 포함해 제거됩니다.

통과 구간은 종가끼리의 움직임이 아닙니다. 해당 구간 안에서 관측된 최저 마크와 최고 마크에 걸치며, 직전 열의 open interest 가중 마크까지 포함하도록 확장됩니다. 그래서 레벨에 닿은 꼬리 하나도 그 레벨을 제거합니다. 실제 띠를 지우는 대신 말이 안 되는 구간을 걸러내는 안전장치가 두 가지 있습니다. 직전 마크에서 캔들까지의 도약이 가격의 절반을 넘으면 커버리지 공백으로 읽고, 한 구간의 고가와 저가 폭이 가격의 80%를 넘으면 데이터 오류로 읽습니다. 두 경우 모두 그 열은 아무것도 쓸어내지 않습니다.

명목가치 하한 아래의 띠는 수치 잡음으로 버려집니다. 실시간 상시 조회는 이 하한을 0으로 두어 엄밀히 양수인 띠만 남기고, 저장 기록 경로는 1달러 미만을 모두 버립니다. 실질적인 결과는 이렇습니다. 어떤 열이 이웃 열과 다른 이유는 선이 새로 생겼거나 잘렸기 때문뿐입니다. 따라서 한 가격 행을 왼쪽에서 오른쪽으로 읽으면 레벨이 언제 처음 열렸고 시장이 어디서 그것을 통과했는지는 알 수 있지만, 얼마나 강하게 옅어졌는지는 알 수 없습니다. 애초에 옅어지지 않기 때문입니다.

데이터의 출처

청산 화면에는 세 가지 데이터 집합이 들어가며, 셋이 다루는 거래소가 모두 같지는 않습니다. 통합 멀티 거래소 뷰는 open interest, funding rate, 가격을 위해 Binance, Bybit, OKX, Hyperliquid, Bitget, Gate.io, HTX, MEXC, dYdX, Kraken으로 요청을 펼칩니다. 저장된 상시 열 표면은 더 작은 저장 집합, 즉 Binance, Bybit, OKX, Deribit, Bitget, Hyperliquid로 만들어집니다. 실현 청산 이벤트는 거래소 WebSocket 피드 등록소에서 오는데, 현재 등록된 곳은 Binance와 Bybit입니다. 실시간 확산 집합과 저장 집합은 서로의 부분집합이 아니므로 합계가 정확히 맞아떨어지지 않습니다.

컬러바에 달러 표기가 없는 이유

셀의 색은 불러온 기간 동안 그 구간에 레벨을 투사한 누적 개시 흐름을 나타냅니다. 이 값은 그것을 만들어낸 open interest에 의해 제한되지만, 현재 호가창도 아니고 해당 기간의 보존되는 달러 총액도 아닙니다. 그래서 달러가 붙은 색 띠를 쓰면 읽는 사람이 셀들을 더해 아무 의미 없는 숫자를 만들도록 부추기게 됩니다. 그래서 이 레이어의 범례는 상대 강도로 설명되고 눈금은 0에서 100까지로 표시되며, 100은 고정된 금액이 아니라 현재의 색상 상한입니다.

그 상한은 불러온 격자의 최댓값이 아니라 99.9 백분위 값입니다. 그래야 아주 큰 셀 하나가 나머지 전부를 어두운 쪽으로 밀어내고 남은 자석 레벨들이 하나의 밝은 색조로 뭉개지는 일이 생기지 않습니다. GPU로 넘기는 격자는 각 셀을 그 상한으로 나눈 값을 담습니다. 텍스처 형식이 half float이어서 대략 6만 5천을 넘는 원시 달러 값은 넘쳐버리기 때문입니다. 선형 및 symlog 스케일링은 이 나눗셈에 영향을 받지 않으며, 로그 모드는 상한 아래로 네 자릿수 범위를 다룹니다. 범례는 셰이더와 같은 함수로 눈금을 배치하므로, 라벨은 실제로 그 색이 칠해지는 자리에 놓입니다.

조작 항목과 색상 스케일

히트맵 경로에서는 자산(BTC, ETH, SOL), lookback(조회 기간), 그리고 밀도 히트맵을 볼지 아니면 격자를 개별 고정 선과 열린 레벨 프로파일, 누적 델타 창으로 대체하는 Liquidation Levels 뷰를 볼지 고릅니다. 표시 패널은 네 가지 colormap(색상표)인 viridis, inferno, magma, cividis를 제공하며 그중 viridis와 cividis는 색각 이상에 안전한 것으로 표시되어 있습니다. 여기에 세 가지 스케일 모드(linear, log, symlog)와 민감도 슬라이더가 있습니다. 기본값은 viridis, linear, 지수 0.85입니다. 실현 오버레이는 1m, 1h, 1d 해상도의 반투명한 두 번째 레이어로 켤 수 있습니다.

낮음높음viridis기본값색각 이상 안전infernomagmacividis색각 이상 안전
표시 패널이 제공하는 네 가지 색 띠로, 렌더러가 올리는 조회 테이블에서 추출한 것입니다. 그중 두 가지는 가장 흔한 색각 이상에 안전한 것으로 표시되어 있으며, viridis가 기본값입니다.

커서 아래의 숫자들

마우스를 올리면 가격 레벨 하나와 시간 열 하나가 정해집니다. 방향을 판단하는 기준 가격은 포인터 아래의 캔들이 아니라 그 열의 구간 시작점을 포함하는 캔들의 종가입니다. 그래서 커서가 한 열 안에서 움직이는 동안 레벨이 롱 쪽과 숏 쪽을 오가는 일이 없습니다. 기준보다 위의 레벨은 숏 쪽으로, 아래의 레벨은 롱 쪽으로 읽히며, 기준과 같은 구간에 있는 레벨은 중립으로 양쪽을 함께 보고합니다. 열의 시각은 UTC로 표시되므로 판독값이 보는 사람의 현지 시간대가 아니라 시간 축과 일치합니다.

두 가지 수치가 표시됩니다. 이 레벨의 값은 마우스가 놓인 셀의 방향별 값으로, 색이 나타내는 바로 그 양입니다. 그래서 숫자와 색조가 어긋날 수 없습니다. 누적 값은 기준 구간을 제외하고 마우스가 놓인 레벨까지 같은 방향을 합산해, 현재가와 그 레벨 사이에 얼마나 쌓여 있는지를 알려줍니다. 상시 모드에서는 더 작은 글씨의 세 번째 줄이 그 구간에 레벨을 투사하는 현재 상시 open interest를 알려줍니다. 이 값은 가장 최신 열만으로 만든 별도 프로파일에서 오며 전체 open interest로 제한되고, 다른 질문에 답하는 값이므로 의도적으로 작은 글씨로 표시됩니다.

Liquidation Levels 뷰 자세히 보기

Levels 뷰는 밀도 격자를 개별 선으로 대체합니다. 각 선은 하나의 집단, 즉 거래소와 레버리지 단, 방향, 그리고 그것이 열린 열의 조합이며, 구간에 맞춰 붙이지 않고 투사된 정확한 가격에 유지됩니다. 서로 다른 열에서 열린 집단은 결코 합쳐지지 않으므로, 선들의 왼쪽 가장자리가 가격 경로를 계단 모양으로 따라갑니다. 선은 이후 어떤 열의 거래 범위가 그 가격을 덮는 지점에서 끝나며, 이 뷰는 진입 시점과 도달 시점을 모두 보관합니다. 그래서 화면 폭 전체를 가로지르는 선이 아니라 유한한 구간을 그릴 수 있습니다.

세분화 정도는 포지션 크기로 필터링합니다. 구분점은 요청마다 그 요청 자체의 선별 명목가치 분포의 3분위로 다시 계산되므로, 고정된 달러 임계값이 아니라 자산과 기간을 따라갑니다. Large는 아래쪽 구분점 이상인 선을, Whale은 위쪽 구분점 이상인 선을 남기며, All은 필터를 적용하지 않습니다. 거래량 대비 델타 조작 항목은 양쪽에서 작동하는 두 번째 필터입니다. 두 개의 손잡이로 관측된 명목가치 범위의 부분 구간을 선택하므로, 한쪽만 자르는 필터로는 닿을 수 없는 중간 크기 선들을 따로 골라낼 수 있습니다. Measure는 누적 창을 선의 개수를 세는 방식과 명목가치를 합산하는 방식 사이에서 전환합니다.

맵 주위에는 세 개의 패널이 있습니다. 오른쪽 프로파일은 열려 있는 모든 선을 가격 대역으로 접어 넣으며 보관된 전체 집합으로 만들어지므로, 그려지는 선의 수가 제한되어도 온전하게 유지됩니다. 이 프로파일은 measure 설정과 무관하게 언제나 명목가치 기준으로 접힙니다. 아래쪽 창은 누적입니다. 선이 열린 열에서 더해지고 도달된 열에서 빠지므로, 가격이 레벨을 쓸어낼 때 계열이 올라가기만 하지 않고 다시 내려옵니다. 네 번째 패널은 그 프로파일의 롱 대 숏 불균형을 알려줍니다. 선 데이터 자체는 6천 개에서 멈추며 명목가치가 큰 것부터 남기고 응답에 그 사실을 표시하지만, 보고되는 열린 포지션 개수는 전체 값 그대로입니다.

실현 오버레이, 그리고 조회가 스스로 잘렸다고 알리는 때

실현 오버레이는 추정 영역 위에 그려지는 두 번째 반투명 레이어이며, 자체 색상표와 투명도를 가집니다. 해상도 조작 항목은 1m, 1h, 1d를 제공하고, 해상도를 고르면 오버레이도 함께 켜지므로 이 조작이 아무 일도 하지 않는 경우는 없습니다. 해상도는 오버레이에만 적용됩니다. 각 해상도는 뒤쪽 일정 기간만 실체화해 두는 연속 집계로 뒷받침됩니다. 1m은 약 3시간, 1h는 약 8일, 1d는 약 30일입니다. 계층의 보관 기간보다 넓은 요청은 오래된 구간을 조용히 빼놓으므로, 짧아진 격자를 온전한 것처럼 보여주는 대신 조회가 스스로 잘렸다고 알립니다.

1d 계층에는 하한도 있습니다. 이 계층의 구간은 UTC 자정에서 시작하는 반면 조회 필터는 현재 시각을 기준으로 하므로, 하루가 시작된 지 얼마 되지 않았을 때는 24시간 요청이 아무것도 반환하지 않을 수 있습니다. 그래서 48시간 미만의 요청도 표시가 붙습니다. 저장소의 행 상한에 도달해도 같은 표시가 붙습니다. 응답에는 실제로 기여한 거래소 목록과 함께, 실현 청산이 하한값이라는 안내가 담긴 커버리지 객체가 실립니다. 거래소 피드는 전송 빈도에 상한이 있고 연결된 거래소만 집계되기 때문입니다. 두 번째 문장은 기간을 좁혀야 할지 넓혀야 할지 알려줍니다.

추정 격자의 제한은 다릅니다. 선택할 수 있는 가장 넓은 기간이 7일인 데 비해 시간 단위 계층은 8일을 보관하므로, 기간 자체가 추정 조회를 자르는 일은 결코 없습니다. 자를 수 있는 것은 행 상한뿐입니다. 인터페이스에서는 격자 상태가 실시간에서 부분으로 바뀌며 경고 표시와 설명 제목이 붙고, Levels 뷰는 개수는 전체를 유지한 채 상위 선만 그렸다는 안내를 덧붙이며, 오버레이의 커버리지 상자는 하한값 안내를 그대로 반복합니다. 말없이 사라지는 것은 없습니다.

추정 레이어모델 기반 투사실현 레이어관측된 체결 기록입력open interest, 저장된 6개 거래소청산 기록, 연결된 피드방식레버리지 사다리, 한 단에 레벨 1개1m / 1h / 1d bucket으로 합산존속 기간가격이 통과할 때까지 유지기록되면 고정단위상대 강도, 0–100미국 달러, 하한값같은 격자, 다른 질문 — 한쪽을 다른 쪽의 검증으로 읽지 마세요.
추정 레이어는 각 열의 open interest 증가분을 레버리지 사다리에 걸쳐 레벨로 바꾸고, 가격이 그 레벨을 통과할 때까지 이어서 들고 가며, 상대 강도로 보고합니다. 실현 레이어는 실제 청산 기록을 같은 격자에 합산해 달러로 보고하지만 어디까지나 하한값입니다. 거래소 피드는 전송 빈도에 상한이 있고, 연결된 거래소만 집계되기 때문입니다. 두 레이어는 축을 공유할 뿐 단위를 공유하지는 않습니다. 그래서 위치는 비교할 수 있어도 서로 더할 수는 없습니다.

Liquidations 페이지와 히트맵의 차이

두 경로는 서로 다른 제품입니다. Liquidations 페이지는 탭으로 나뉜 대시보드로, 시간에 따른 실현 청산과 추정 군집, 멀티 거래소 맵, 청산 추정기, 그리고 전체 화면 히트맵으로 딥링크하는 실행 버튼을 제공합니다. 이 실행 버튼이 있는 이유는, 진짜 시간×가격 격자가 고급 차트 엔진을 함께 쓰는 전용 WebGL 경로이며 탭 패널 안에 넣을 수 없기 때문입니다. 두 화면은 서로 다른 권한 도메인으로 제한됩니다. 대시보드는 order flow, 히트맵은 derivatives입니다. 또한 대시보드 뒤의 멀티 거래소 통합은 BTC 전용이며, 히트맵에서 어떤 자산을 골랐든 위험 판독값에는 BTC라고 표시됩니다.

Liquidations 대시보드의 네 개 탭

첫 번째 탭인 Liquidations and Levels는 구간별 실현 롱·숏 청산 막대 차트와 레버리지 등급별 추정 군집 카드를 나란히 보여줍니다. 간격 조작 항목은 구간 크기와 요청하는 구간 개수를 함께 바꿉니다. 1시간이면 168개, 4시간이면 84개, 1일이면 30개입니다. 군집 카드에는 참고용이라는 표시가 분명히 붙어 있고 스스로의 가정을 함께 적어 둡니다. Binance USDT 마진 open interest, 롱과 숏이 반반이라는 가정, 그리고 고정된 개인 투자자 레버리지 분포입니다. 그래서 거래소 데이터로 오인될 일이 없습니다. 이 페이지의 자산 선택기는 BTC와 ETH만 제공합니다.

두 번째 탭은 멀티 거래소 맵입니다. 실시간 확산 요청으로 모은 가격 구간별 추정 청산 규모를 거래소별 분해, 군집 표, 실제 이벤트 오버레이와 함께 보여줍니다. 이 탭은 저장된 격자와 같은 자산별 가격 구간 폭을 씁니다. BTC는 50달러, ETH는 5달러, SOL은 0.5달러이며, 기준값이 없는 자산에는 가격에 비례하는 대체값을 씁니다. 그래서 두 표면이 같은 가격 격자 위에 놓입니다. 세 번째 탭은 BTC와 ETH를 위한 별도의 추정기로, Binance 선물 가격과 open interest에서 3배, 5배, 10배, 25배, 50배, 100배 구간을 계산하며 레버리지 대용값은 Bybit에서 가져오고 30초 캐시를 둡니다.

네 번째 탭은 히트맵을 전혀 그리지 않습니다. 시간×가격 격자는 고급 차트 엔진을 함께 쓰는 전체 화면 WebGL 경로여서 탭 패널 안에 올릴 수 없으므로, 이 탭은 선택한 자산을 딥링크에 담아 넘기는 실행 버튼 역할을 합니다. 활성화된 탭의 내용만 올라가므로 탭을 바꿔도 다른 탭의 폴링 루프가 시작되지 않습니다. 그 링크에서 공유되는 부분은 자산과 lookback이며, 해상도와 모드, 실현 오버레이 스위치는 세션 안에만 남고, 오래된 링크에 붙은 예전 해상도 파라미터는 제거됩니다.

열 간격, 행 상한, 갱신 주기

기간을 넓힌다고 열이 더 많아지지는 않습니다. 조회는 lookback에서 열 간격을 이끌어냅니다. 4시간까지는 60초, 하루까지는 300초, 4일까지는 900초, 그 이상은 1800초이며, 허용된 어떤 기간도 대략 400개 열을 넘지 않도록 크기를 잡습니다. 상시 조회와 Levels 조회는 이 간격의 하한을 5분 기본값으로 두는데, 그래서 짧은 기간은 익숙한 해상도를 유지하고 긴 기간만 넓어집니다. 축소 표본은 각 간격 창 안에서 가장 최신 열을 고르며 결코 열을 합산하지 않습니다. 표면이 계속 이어져 오기 때문에 합산하면 같은 상시 띠를 여러 번 세게 됩니다.

데이터 크기를 제한하는 상한이 세 가지 있으며, 각각 숨기지 않고 보고됩니다. 상시 격자는 50만 행에서 멈추고, 이를 넘으면 격자가 직사각형을 유지하고 현재 호가창 프로파일을 만드는 최신 열이 살아남도록 가장 오래된 열을 통째로 버립니다. Levels 데이터는 6천 개 선에서 멈춥니다. 실현 이벤트 조회는 기본 1천 행이며 절대 상한은 1만 행이고, 상한에 도달한 조회에는 과소 집계 표시가 붙습니다.

갱신은 폴링 방식이며 탭이 보이는지에 따라 제어되므로, 백그라운드 탭은 계속 요청을 보내지 않습니다. 열 격자와 Levels 뷰는 120초마다, Liquidations 대시보드의 이벤트 계열은 60초마다, 추정기는 30초마다 갱신됩니다. 자산이나 기간, 세분화 정도, measure를 바꾸면 다시 요청하기 전에 오래된 모델을 버리므로, 요청이 진행되는 동안 어떤 조작 항목이 다른 설정의 데이터를 잘못 표시하는 일이 없습니다.

문서로 명시된 한계

lookback은 서버에 고정된 허용 목록입니다. 1h, 4h, 12h, 24h, 7d이며, 그 밖의 값은 조용히 기본값으로 바뀌는 대신 거부됩니다. 드롭다운은 이 다섯 중 네 개를 제공하며, 1h는 API로만 닿을 수 있습니다. 추정 표면과 상시 표면은 시간 단위로만 저장되므로 다른 타임프레임은 거부됩니다. 1m, 1h, 1d로 실체화되는 것은 실현 오버레이뿐입니다. 각 실현 계층은 제한된 최근 기간만 보관하며(1m은 약 3시간, 1h는 약 8일, 1d는 약 30일), 1d 계층이 온전한 구간을 반환하려면 최소 48시간의 lookback이 필요합니다. 이 범위를 벗어난 요청은 잘림 표시와 함께 돌아오고, 인터페이스는 부분 데이터 경고를 보여줍니다. 실현 이벤트 조회의 기본 행 상한은 1,000이고 절대 상한은 10,000이며, 상한에 도달하면 과소 집계 안내로 드러납니다.

레이어해상도보관 기간보관 기간 밖 조회
실현1m약 3시간잘림으로 표시
실현1h약 8일잘림으로 표시
실현1d약 30일48시간 이상 요청 필요
추정시간 단위만열마다 저장행 상한만 적용
실현 오버레이는 보관 기간이 서로 다른 세 개의 연속 집계 계층을 읽습니다. 1d 계층은 추가로 최소 48시간 이상의 요청이 필요한데, 이 계층의 bucket이 UTC 자정에서 시작하는 반면 필터는 현재 시각을 기준으로 삼기 때문입니다. 추정 표면에는 해상도 선택 자체가 없습니다. 기록기가 시간 단위 라벨 아래에 60초마다 한 열씩 저장하며, 선택할 수 있는 가장 긴 기간이 7일인 데 비해 시간 단위 계층은 8일을 보관하므로, 잘림이 생긴다면 그것은 기간이 아니라 행 상한 때문입니다.