Three Lines That Saved a Position: Liquidation Risk Alerts on Hyperliquid
By @CoinMarketMan - 01-Sep-2026
포지션을 살린 코드 세 줄: Hyperliquid 청산 위험 알림
8월 27일, HYPE는 시가총액 약 $18.9 billion을 기록하며 신고점 $86.71에 도달했습니다. 같은 기간, Hyperliquid에서 24시간 동안 발생한 롱 포지션 청산 규모는 $21.88 million에 달했습니다. 랠리를 타고 있던 레버리지 롱 포지션들이 장중 급격한 되돌림에 휩쓸렸기 때문입니다. 미결제약정(OI)은 $19.63 billion 시가총액 대비 $3.47 billion으로, 레버리지 익스포저가 시가총액의 약 17.7%에 달했습니다.
이 수치들이 말해주는 것이 있습니다. 시장 과열 극점에서 상당한 규모의 미결제약정이 강제 청산 직전까지 내몰려 있었다는 점입니다. 청산 위험 알림을 미리 설정해둔 트레이더들은 청산 폭탄이 터지기 몇 시간 전부터 압력이 쌓이는 것을 감지했습니다. 그렇지 않은 트레이더들은 포지션이 사라진 뒤에야 상황을 알았습니다.
이 글에서는 HyperTracker API를 활용해 Hyperliquid 청산 위험 알림을 실제로 구축하는 방법을 단계별로 다룹니다. 동작하는 Python 코드, 코호트 심각도에 따라 라우팅하는 계층형 알림 구조, 그리고 개별 급등과 광범위한 디레버리징 이벤트를 구분하는 다중 자산 상관관계 감지기까지 제공합니다.
청산 위험 엔드포인트가 반환하는 데이터
HyperTracker의 청산 위험 엔드포인트는 GET /api/external/{segmentId}/assets/liquidation-risk입니다. 16개 코호트 세그먼트 ID 중 하나를 전달하면, 해당 코호트가 오픈 포지션을 보유한 모든 자산을 위험 익스포저 순으로 정렬하여 반환합니다. 각 항목에는 세 가지 필드가 포함됩니다.
totalValue: 해당 코호트의 자산별 총 미결제약정riskValue: 청산 임계값의 75% 이내에 있는 포지션의 달러 금액percentRisk: 위험 노출 금액과 총 익스포저의 비율
16개 코호트는 두 축으로 나뉩니다. 8개는 퍼프 에쿼티 기준으로 지갑을 분류하며(Shrimp부터 Leviathan까지), 나머지 8개는 누적 PnL 기준으로 분류합니다(Money Printer부터 Giga-Rekt까지). Leviathan의 percentRisk가 ETH에서 급등하면, 강제 청산 물량만으로도 시장을 움직일 수 있습니다. Shrimp 코호트가 급등하면 그냥 노이즈입니다. 이 비대칭성 때문에 모든 코호트를 단순 평균하는 방식은 알림 용도로 쓸모가 없고, 계층형 라우팅이 필요합니다.
코호트 시장 영향력 기준 계층형 알림 구축
가장 단순한 청산 위험 모니터는 모든 코호트를 동등하게 취급합니다. 이는 잘못된 접근입니다. Leviathan 청산과 Fish 청산의 시장 파급력은 몇 자릿수나 차이가 나기 때문입니다. 더 나은 방법은 각 코호트의 명목 익스포저를 기준으로 등급을 부여한 다음, 등급별로 다르게 알림을 라우팅하는 것입니다.
Tier 1: 핵심 코호트
Leviathan(세그먼트 ID 7), Tidal Whale(ID 6), Money Printer(ID 8). 플랫폼에서 가장 큰 지갑과 가장 수익성 높은 트레이더들을 대표합니다. 이들의 포지션이 청산 직전에 집중되면, 강제 매도 물량이 연쇄 가격 하락을 촉발할 수 있습니다. 즉시 알림을 발송하고 자동 포지션 축소를 검토하세요.
Tier 2: 경고 코호트
Whale(ID 5), Small Whale(ID 4), Smart Money(ID 9). 상당한 자본이지만, 단독으로 연쇄 청산을 일으킬 가능성은 낮습니다. 수동 검토와 스탑 관리 강화를 위한 알림을 발송하세요.
Tier 3: 참고용
그 외 모두: Apex Predator(ID 3), Dolphin(ID 2), Fish(ID 1), Shrimp(ID 16), 나머지 PnL 코호트(ID 10-15). 백테스팅과 리서치를 위해 시계열 데이터베이스에 기록하되, 알림 채널에는 전송하지 마세요. 모든 것에 반응하는 알림 시스템은 결국 아무도 신경 쓰지 않는 시스템이 됩니다.
아래는 Python 구현 코드입니다. 각 Tier의 코호트를 폴링하고, 가중 점수를 계산한 뒤, 해당 알림 채널로 라우팅합니다.
import requests, time
API_BASE = "https://ht-api.coinmarketman.com/api/external"
TOKEN = "YOUR_JWT_TOKEN"
HEADERS = {"Authorization": f"Bearer {TOKEN}"}
# Tier definitions: cohort_id -> (name, weight)
TIER_1 = {7: ("Leviathan", 2.0), 6: ("Tidal Whale", 1.5), 8: ("Money Printer", 1.3)}
TIER_2 = {5: ("Whale", 1.0), 4: ("Small Whale", 0.8), 9: ("Smart Money", 1.2)}
TIER_3_IDS = [3, 2, 1, 16, 10, 11, 12, 13, 14, 15]
def get_risk(segment_id):
url = f"{API_BASE}/{segment_id}/assets/liquidation-risk"
resp = requests.get(url, headers=HEADERS)
resp.raise_for_status()
return resp.json()["items"]
def weighted_score(coin, tier):
total_w, w_sum = 0, 0
for seg_id, (name, weight) in tier.items():
assets = get_risk(seg_id)
match = next((a for a in assets if a["coin"] == coin), None)
if match:
w_sum += match["percentRisk"] * weight
total_w += weight
return w_sum / total_w if total_w else 0
def scan():
all_assets = get_risk(7) # use Leviathan as asset index
for asset in all_assets:
coin = asset["coin"]
t1 = weighted_score(coin, TIER_1)
t2 = weighted_score(coin, TIER_2)
if t1 >= YOUR_CRITICAL_THRESHOLD:
send_critical_alert(coin, t1)
elif t2 >= YOUR_WARNING_THRESHOLD:
send_warning_alert(coin, t2)
while True:
scan()
time.sleep(300) # 5-min poll matches API refresh
임계값과 가중치에 대한 참고사항. 위의 Tier 배정과 가중치는 출발점을 예시한 것입니다. HyperTracker는 지갑을 코호트로 분류합니다. 특정 알림 임계값, 포지션 사이징 규칙, 리스크 관리 파라미터를 지정하지는 않습니다. 임계값과 가중치 모두 본인의 리스크 허용 범위와 백테스팅 결과에 맞게 조정하세요.
다중 자산 상관관계 급등 감지
단일 자산의 개별적인 급등은 별개의 문제입니다. 동일 코호트에서 BTC, ETH, SOL의 청산 위험이 동시에 상승할 때, 이는 광범위한 디레버리징 신호입니다. 상관관계 급등은 강제 매도가 포트폴리오 내 여러 포지션에 동시에 타격을 줘 피해를 복합적으로 키우기 때문에 구분이 중요합니다.
감지 로직은 단순합니다. 각 자산의 가중 위험 점수를 계산한 뒤, 임계값을 초과한 자산이 동시에 몇 개인지 셉니다. 그 수가 두 번째 임계값을 넘으면(예를 들어, 세 개 이상의 자산이 동시에 상승 상태일 때) 알림 심각도를 높입니다.
def detect_correlation(tier, threshold):
"""Count assets above threshold in a given tier."""
all_assets = get_risk(list(tier.keys())[0])
elevated = []
for asset in all_assets:
score = weighted_score(asset["coin"], tier)
if score >= threshold:
elevated.append((asset["coin"], score))
return elevated
elevated = detect_correlation(TIER_1, YOUR_CRITICAL_THRESHOLD)
if len(elevated) >= 3: # example threshold - calibrate to your model
send_correlated_alert(elevated) # highest severity
왜 이것이 중요할까요? 2026년 8월 말 랠리를 생각해보세요. HYPE가 신고점을 기록하는 동안 롱 청산이 모든 타임프레임을 지배했습니다. 알림 시스템이 개별 자산만 감시했다면, BTC, ETH, HYPE 각각에 대해 별도로 알림이 발송되었을 것이고, 각각은 일상적인 급등으로 분류되었을 것입니다. 상관관계 감지기라면 세 자산에서 나타나는 패턴을 인식하고 단일 고심각도 알림으로 격상했을 것입니다. "전체 포트폴리오에 걸쳐 롱 청산 압력이 광범위하게 쌓이고 있음."
위험 점수와 코호트 바이어스 결합
청산 위험은 압력이 쌓이고 있다는 사실을 알려줍니다. 어느 방향인지는 알려주지 않습니다. 바로 이 지점에서 바이어스 엔드포인트가 필요합니다. HyperTracker의 GET /api/external/{segmentId}/bias는 특정 자산에 대해 해당 코호트가 순 롱인지 순 숏인지를 반환합니다. 두 엔드포인트를 결합하면 알림 시스템에 방향성 맥락이 추가됩니다.
- 높은 청산 위험 + 코호트가 롱 편향 = 청산이 발생하면 강제 매도가 가격을 하락시킴
- 높은 청산 위험 + 코호트가 숏 편향 = 강제 매수(숏 스퀴즈)가 가격을 상승시킴
이 구분은 대응 방식을 바꿉니다. 롱 포지션을 보유 중인데 Leviathan 코호트도 대규모 롱 상태에서 청산 위험이 높다면, 당신은 잠재적 연쇄 청산과 같은 편에 서 있는 것입니다. 줄여야 한다는 신호입니다. 반면 Leviathan이 대규모 숏 상태에서 위험이 높다면, 숏 스퀴즈가 오히려 당신의 롱 포지션에 유리하게 작용할 수 있습니다.
def get_bias(segment_id, coin):
url = f"{API_BASE}/{segment_id}/bias"
resp = requests.get(url, headers=HEADERS)
data = resp.json()
match = next((a for a in data["items"] if a["coin"] == coin), None)
return match["bias"] if match else "neutral"
# In your alert handler:
coin, score = "ETH", weighted_score("ETH", TIER_1)
if score >= YOUR_CRITICAL_THRESHOLD:
bias = get_bias(7, coin) # Leviathan bias
msg = f"ALERT: {coin} risk={score:.1f}%, Leviathan bias={bias}"
send_critical_alert(msg)
폴링에서 웹훅으로의 업그레이드 경로
위의 코드 예시는 모두 5분 루프 REST 폴링을 사용하며, 이는 HyperTracker의 데이터 갱신 주기와 일치합니다. Pulse 등급 계정($179/mo)에서는 이 구조가 적합합니다. 데이터를 가져오고, 점수를 매기고, 필요하면 알림을 보내고, 대기하다가 반복합니다.
하지만 폴링에는 구조적 약점이 있습니다. 알림 지연 시간이 폴링 간격에 처리 시간을 더한 값과 같다는 것입니다. 마지막 폴링 직후에 위험 급등이 발생하면, 최대 5분 동안 감지할 수 없습니다. 대부분의 위험 관리 용도에서는 허용 가능한 수준입니다. 자동화된 포지션 사이징이나 고빈도 전략에서는 그렇지 않습니다.
업그레이드 경로는 웹훅 전달로, Flow 등급($799/mo) 이상에서 사용 가능합니다. 웹훅을 사용하면 HyperTracker가 데이터를 갱신하는 즉시 위험 데이터를 당신의 엔드포인트로 푸시하여 폴링 루프 자체가 필요 없어집니다. 코드가 단순해지고(스케줄러, 슬립 사이클 불필요), 지연 시간이 네트워크 전송 시간으로 줄어듭니다.
Stream 등급($1,999/mo)에서는 WebSocket 연결을 통해 지속적인 업데이트를 제공합니다. 패턴이 요청-응답에서 이벤트 기반으로 전환됩니다. 위험 변화를 구독하고, 발생하는 즉시 처리하여, 거의 실시간으로 알림을 발송합니다.
폴링으로 시작하고, 필요할 때 업그레이드하세요. Pulse 등급 $179/mo는 동작하는 알림 파이프라인을 구축하는 데 필요한 모든 것을 제공합니다. 5분마다 폴링하는 것은 대부분의 위험 모니터링에 충분합니다. 웹훅이나 WebSocket으로 전환하는 시점은 더 낮은 지연 시간이 필요할 때, 즉 사람보다 빠른 속도로 포지션을 자동으로 조정해야 할 때입니다.
임계값 캘리브레이션: 과거 데이터로 백테스팅
어떤 알림 시스템에서든 코드보다 어려운 것이 있습니다. 바로 임계값입니다. 너무 낮게 설정하면 오탐에 묻힙니다. 너무 높게 설정하면 중요한 연쇄 청산을 놓칩니다.
HyperTracker는 약 4주간의 과거 코호트 지표 데이터를 제공하며, 최근 시장 상황에 맞춰 임계값을 백테스팅하기에 충분합니다. 접근 방식은 과거 위험 점수를 가져와 가격 데이터와 오버레이하고, 유의미한 가격 변동 이전에 나타난 percentRisk 값을 찾는 것입니다.
실용적인 캘리브레이션 워크플로우:
- Tier 1 코호트의 BTC, ETH, 주요 거래 자산에 대해 4주간의 일별 위험 스냅샷을 가져옵니다
- 큰 낙폭이 발생한 날짜를 표시합니다(24시간 이내 10% 이상 하락)
- 각 낙폭 직전 폴링 구간에서 가중
percentRisk가 어느 수준이었는지 측정합니다 - 일상적인 변동에는 매일 발동하지 않으면서 대부분의 낙폭 이전에 발동했을 수준으로 알림 임계값을 설정합니다
이것은 한 번으로 끝나는 작업이 아닙니다. 시장 구조는 변하고, 레버리지 선호는 심리에 따라 이동합니다. 8월 초 신중한 조정 이후 기간(HYPE가 30일간 약 20% 하락했을 때)에서 효과적이었던 임계값이, 같은 달 후반 HYPE를 신고점으로 끌어올린 과열 랠리 기간에는 반드시 효과적이라고 할 수 없습니다. 최소 매달 캘리브레이션을 재검토하세요.
프로덕션 배포
동작하는 알림 파이프라인에는 핵심 점수 로직 외에 몇 가지가 더 필요합니다.
- 영속 상태 저장: 임계값 이하일 때도 계산한 모든 위험 점수를 저장하세요. 과거 점수는 캘리브레이션 데이터셋입니다. 간단한 시계열 데이터베이스(InfluxDB, TimescaleDB, 또는 프로토타이핑에는 SQLite도 충분)가 적합합니다.
- 중복 제거: 특정 코인이 연속 세 번의 폴링 동안 임계값을 초과하면, 동일한 알림을 세 번 보내는 대신 "여전히 상승 상태" 플래그와 함께 한 번만 보내세요. 알림 피로는 모든 모니터링 시스템의 유용성을 갉아먹습니다.
- 쿨다운 로직: 알림이 발송되고 트레이더가 조치를 취한 후, 설정 가능한 쿨다운 기간 동안 동일 자산에 대한 재알림을 억제하세요. 그렇지 않으면 이미 대응한 위험에 대해 시스템이 계속 잔소리를 합니다.
- 대시보드 오버레이: 위험 점수를 가격 데이터와 함께 Grafana나 Retool에 시각화하세요. 시각적 패턴 인식은 로그 출력을 읽는 것보다 빠르고, 임계값 캘리브레이션도 직관적으로 만들어줍니다.
청산 위험 알림 파이프라인 구축하기
HyperTracker API는 16개 행동 코호트 전반에 걸쳐 사전 계산된 청산 위험 점수를 제공합니다. 코호트당 REST 호출 한 번, 5분마다 갱신됩니다. 무료 등급으로 탐색을 시작하고, 프로덕션 알림을 위해 Pulse($179/mo)로 확장하세요.
청산 연쇄는 일정을 미리 알려주지 않습니다. 연휴 주말, 오라클 오작동, 그리고 레버리지가 과밀해진 바로 그 순간에 찾아옵니다. 이를 꾸준히 버텨내는 트레이더들에게는 한 가지 공통점이 있습니다. 가격이 움직이기 전에 이미 압력이 쌓이고 있다는 것을 알고 있었다는 것입니다. 올바른 엔드포인트를 폴링하고, 올바른 코호트로 가중치를 부여하고, 올바른 채널로 라우팅하는 코드 몇 줄. 그것이 휴대폰 알림과 받은편지함의 청산 영수증 사이의 차이입니다.