청산
청산은 더 이상 증거금 의무를 이행할 수 없는 계정으로부터 시스템을 보호합니다. 계정의 자산(equity)이 유지증거금 요건 아래로 떨어지면, 청산 프로세스가 포지션을 지급 능력이 있는 상대방에게 이전합니다.
트리거 조건
계정이 언더워터(underwater) 상태가 되면 청산이 트리거됩니다:
포트폴리오 증거금:
표준 증거금:
여기서 유지증거금 = 자산 - 필요 MM입니다.
시스템은 포지션이 있는 모든 계정을 지속적으로 폴링하여 건전성을 확인합니다.
상태 머신
계정은 네 가지 청산 상태를 거칩니다:
| 상태 | 설명 | 주문 제한 |
|---|---|---|
| Healthy | 자산 > 필요 MM | 없음 |
| PreLiquidation | 자산 < MM, 유예 기간 활성 | 위험 증가 주문 차단 |
| InLiquidation | 경매 진행 중 | 모든 주문 차단 |
| Liquidated | 경매 완료 | 계정 정리 완료 |
상태 전이
- Healthy → PreLiquidation: 계정이 MM 임계값 아래로 하락
- PreLiquidation → Healthy: 계정이 MM 이상으로 회복 (사용자가 자금을 추가하거나 포지션을 청산한 경우)
- PreLiquidation → InLiquidation: 회복 없이 유예 기간 만료
- InLiquidation → Liquidated: 경매가 성공적으로 완료
사전 청산 유예 기간
계정이 사전 청산(pre-liquidation) 상태에 진입하면:
- 위험을 증가시키는 주문이 즉시 차단됩니다
- 위험을 감소시키는 주문(포지션 종료)은 계속 허용됩니다
- 60초 유예 기간이 시작됩니다
- 유예 기간 만료 전에 계정이 회복되면(자산 > MM) Healthy 상태로 돌아갑니다
- 유예 기간 이후에도 언더워터 상태이면 청산 경매가 시작됩니다
유예 기간은 사용자에게 다음을 할 시간을 제공합니다:
- 추가 담보 입금
- 증거금 요건을 낮추기 위한 포지션 종료
- 급격한 시장 변동에 대응
청산 경매
유예 기간이 만료되면 더치 옥션(Dutch auction)이 시작됩니다:
지급 가능 경매 (자산 > 0)
시작 가격 = 자산 × (1 - 페널티)이며, 시간이 지남에 따라 감소합니다.
청산자(liquidator)는 다음을 대가로 계정의 포지션을 인수하기 위해 입찰합니다:
- 계정 자산 (페널티 차감)
- 모든 포지션에 대한 책임
페널티는 청산자의 참여 유인을 만듭니다.
지급 불능 경매 (자산 < 0)
계정이 지급 불능 상태(자산이 음수)인 경우, 보험 기금이 보너스를 제공하여 청산자가 언더워터 포지션을 흡수하도록 유도합니다.
포지션 이전
청산이 완료되면:
- 모든 포지션이 청산된 계정에서 청산자에게 이전됩니다
- 청산자는 결제 가치를 수령(지급 가능)하거나 지급(지급 불능 시 보너스 수령)합니다
- 증거금 루트가 온체인에서 업데이트됩니다
- 계정 상태가
Liquidated로 전이됩니다
부분 청산 vs 전체 청산
| 유형 | 조건 | 동작 |
|---|---|---|
| 부분 | ≤ 5개 포지션 | MM이 회복될 때까지 특정 포지션 청산 |
| 전체 | > 5개 포지션 | 계정 전체 청산 |
부분 청산은 결정론적입니다:
- 포지션은 일관된 알고리즘에 따라 정렬됩니다 (무작위가 아님)
- 청산자는 정의된 순서대로 포지션을 수령합니다
- 계정이 건전한 상태로 돌아오면 프로세스가 중단됩니다
지급 불능 워터폴
청산으로 전체 가치를 회수할 수 없는 경우, 손실은 다음 순서로 흡수됩니다:
- 계정 자산: 청산된 사용자가 자산 한도 내에서 손실 흡수
- 보험 기금: 자산이 부족한 경우 부족분 충당
- ADL (자동 디레버리징): 보험 기금이 고갈된 경우, 수익 중인 상대방이 비례적으로 디레버리징됨
- 손실 사회화: 최종 안전장치 (현재 미구현)
보험 기금
보험 기금은:
- 청산 페널티에서 적립됩니다
- 지급 불능 청산을 충당합니다
- 거래 수수료와 페널티를 통해 보충됩니다
- 최소 준비금 목표가 있습니다
ADL (자동 디레버리징)
보험 기금이 손실을 충당할 수 없는 경우:
- 수익 중인 포지션을 가진 상대방이 선택됩니다
- 포지션이 마크 가격에서 강제로 종료됩니다
- 수익과 레버리지가 가장 높은 순으로 우선 선택됩니다
- 영향을 받는 사용자는 알림을 받습니다
API 엔드포인트
청산 상태 조회
GET /liquidation/status?wallet=0x...
응답:
{
"success": true,
"data": {
"wallet": "0x...",
"state": "pre_liquidation",
"margin_mode": "portfolio",
"equity": "4500.00",
"mm_required": "5000.00",
"maintenance_margin": "-500.00",
"entered_pre_liq_at": 1737312000000,
"mm_shortfall": "500.00",
"auction_id": null
}
}
청산 이력 조회
GET /liquidation/history?wallet=0x...&limit=20
계정의 상태 전이 이력을 반환합니다.
공개 청산 이력 조회
GET /liquidations?limit=50
전체 지갑에 걸친 청산 전이 이력을 최신순으로 반환합니다. 이 엔드포인트는 공개되어 있으며 청산자 봇과 모니터링 도구를 위한 커서 페이지네이션을 사용합니다.
쿼리 파라미터
cursor: 이전 페이지에서 반환된 불투명(opaque) 커서.limit: 페이지 크기, 기본값50, 최대100.wallet: 선택적 지갑 필터.status또는state: 선택적 청산 전이 상태 필터. 허용 값은healthy,pre_liquidation,in_liquidation,liquidated입니다.margin_mode: 선택적 증거금 모드 필터. 허용 값은standard,portfolio입니다.liquidation_mode: 선택적 청산 모드 필터. 허용 값은partial,full입니다.
응답: 청산 전이 항목과 다음 요청을 위한 page.next_cursor가 포함된 PublicLiquidationsResponse.
경매 상세 조회
GET /liquidation/auction/{auction_id}
경매 상태, 포지션, 결제 상세 정보를 반환합니다.
WebSocket 알림
청산 상태 변경은 liquidation 채널에서 브로드캐스트됩니다:
{
"type": "LiquidationStateChange",
"wallet": "0x...",
"previous_state": "healthy",
"new_state": "pre_liquidation",
"equity": "4500.00",
"mm_required": "5000.00",
"shortfall": "500.00",
"auction_id": null,
"timestamp": 1737312000000
}
지갑에 대한 실시간 업데이트를 받으려면 구독하세요.
파라미터
| 파라미터 | 값 | 설명 |
|---|---|---|
poll_interval | 5초 | 건전성 확인 주기 |
grace_period | 60초 | 경매 시작 전 시간 |
min_shortfall_threshold | 0 | 사전 청산을 트리거하는 최소 부족액 |
partial_liquidation_threshold | 5개 포지션 | 이 미만이면 부분 청산 적용 |
모범 사례
트레이더를 위한 안내
- 증거금 비율 모니터링: 자산을 MM보다 충분히 높게 유지하세요 (2배 버퍼 권장)
- 알림 설정: WebSocket을 사용하여 사전 청산을 조기에 감지하세요
- 여유 자금 준비: 입금 가능한 여분의 담보를 준비해 두세요
- 손절매 활용: 청산 전에 포지션 축소를 자동화하세요
건전성 조회
증거금 상태를 정기적으로 확인하세요:
# Portfolio margin
curl "https://api.hypercall.xyz/portfolio?wallet=0x..."
# Look for:
# - equity vs maintenance_margin_required
# - margin_ratio (equity / IM)
유예 기간 중 회복
사전 청산에 진입한 경우:
- 자금 입금 플로우를 통해 담보 입금
- 증거금 요건을 낮추기 위해 포지션 종료
- 위험을 증가시키는 미체결 주문 취소
위험을 감소시키는 조치는 사전 청산 상태에서도 항상 허용됩니다.
온체인 vs 오프체인
| 구성 요소 | 위치 | 비고 |
|---|---|---|
| 건전성 모니터링 | 오프체인 | 5초 폴링 |
| 상태 전이 | 오프체인 | 로깅 및 영속화 |
| 유예 기간 타이머 | 오프체인 | 구성 가능 |
| 경매 실행 | 온체인 | Controller 컨트랙트에서 포지션 이전 |
| 결제 | 온체인 | 가치 이전 및 증거금 루트 업데이트 |
오프체인 엔진은 감지와 조율을 담당하며, 온체인 실행은 결제의 최종성을 보장합니다.
참고 자료: