백테스트가 원하던 거래는 숏이었습니다. Mark는 11분 동안 약 8% 하락했습니다. 미실현 수익은 늘고 있었고, 유지 증거금도 여유로웠습니다. 그런데 거래소가 매수한 가격은 호가창에 찍힌 적이 없었고, 폭락의 나머지는 이미 포지션이 없는 계좌에서 이어졌습니다.
그 체결이 바로 자동 디레버리징입니다. 롱 포지션이 청산되며 파산 가격에 도달하고, 호가창이 물량을 받아내지 못하고, 보험기금으로도 손실을 메울 수 없을 때 거래소가 취하는 조치입니다. 엔진은 수익 중인 숏을 순위에 따라 정렬한 뒤 파산한 트레이더의 파산 가격으로 포지션을 청산하기 시작합니다. 내 청산은 별개의 사건입니다. 이 경우에는 증거금 비율이 아직 괜찮아 보일 때 포지션이 닫힙니다.
14:03에도 열려 있는 숏
격리 증거금, 25×. USDT 증거금 무기한 계약을 64,200에 2 BTC 매도했습니다. Mark 가격은 59,100입니다. 미실현 수익은 10,200 USDT입니다. 전략에 남은 주문은 65,400의 스톱 하나뿐이며, 아직 오지 않은 숏 스퀴즈에 대비하고 있습니다. 지갑 잔액은 최초 증거금 5,136 그대로입니다. 미실현 수익을 포함하면 자산은 15,336이고, 거래소도 그 수익을 반영합니다.
10,200이 분모에 들어가면서 실효 레버리지는 이미 25×에서 8× 쪽으로 낮아졌습니다. 시그널은 신경 쓰지 않습니다. 추세 숏은 잘 작동하고 있고, 백테스트는 다음에 무슨 가격이 찍히든 2 BTC를 계속 보유합니다.
제로를 넘어선 롱들
호가가 천천히 내려간 게 아닙니다. 가격이 갭으로 떨어졌습니다. 50× 레버리지로 60,600에 진입한 2 BTC 롱은 코인당 격리 증거금이 약 1,220 USDT였습니다. 계좌 자산은 59,390 부근에서 0이 됩니다. 청산 엔진은 먼저 매도 호가에 처분하려 합니다. 연쇄 청산 상황에서 매도 호가는 소문에 불과합니다. 포지션은 파산 상태가 됩니다. 손실이 증거금보다 커지고, 누군가는 차액을 내야 합니다.
평범한 오후라면 그 차액을 내는 쪽은 보험기금입니다. 보험기금은 파산 가격보다 유리하게 종료된 청산 포지션에서 남은 증거금이 쌓인 풀입니다. 시계열 데이터로는 볼 수 없는 풀입니다. 그 시간대 거래소의 비공개 잔액은 저도 알 수 없고, 여러분의 리서치 스택도 알 수 없습니다. 확인할 수 있는 것은 공개된 결과뿐입니다. 보험기금이 파산한 롱의 손실을 떠안았거나, 숏을 호출하기 시작했을 겁니다.
손실을 떠안기로 되어 있던 풀
Binance와 Bybit는 기금이 바닥났다고 수익 중인 모든 계좌를 비례 배분해 깎지 않습니다. 반대편 포지션에 순위를 매기고 손실을 메울 때까지 대기열 맨 위부터 청산합니다. Hyperliquid도 비슷한 방식을 씁니다. “청산되지 않았다”를 “거래를 계속 보유 중이다”로 처리하는 백테스트는 보험기금이 무한하다고 암묵적으로 가정한 셈입니다.
표시등 5개와 0.665
Binance는 순위 산정 방식을 공개합니다. PnL 비율은 미실현 수익을 절대 명목 가치로 나눈 값입니다. 실효 레버리지는 절대 명목 가치를 지갑 잔액과 미실현 수익의 합으로 나눈 값입니다. 수익 중인 포지션은 이 두 값의 곱이 점수가 됩니다. 손실 중인 포지션은 다른 공식을 쓰며 대기열 뒤쪽에 놓입니다.
14:03의 우리 숏: 명목 가치 118,200, 수익 10,200, 지갑 잔액 5,136. PnL 비율은 8.63%입니다. 실효 레버리지는 7.71×입니다. 점수는 0.665입니다.
| 계좌 | 숏 수량 | 지갑 잔액 | 점수 | 표시등 | ADL 처리 |
|---|---|---|---|---|---|
| 이 숏 | 2.0 BTC | 5,136 | 0.665 | 5 | 가장 먼저 전량 청산 |
| 같은 수량, 더 두둑한 지갑 | 2.0 BTC | 40,000 | 0.203 | 2 | 이번 차례에는 영향 없음 |
| 절반 수량의 숏 | 0.5 BTC | 12,000 | 0.175 | 2 | 이번 차례에는 영향 없음 |
잔액이 적은 수익 계좌가 거래소가 가장 먼저 부르는 이름입니다. 같은 2 BTC를 지갑 잔액 40,000으로 보유했다면 실효 레버리지는 2.5× 아래로, 점수는 0.22 아래로 내려갔을 겁니다. 담보를 추가했다면 대기열에서 순위가 낮아졌을 겁니다. 거래에는 문제가 없었으니 백테스트는 담보 추가를 고려하지 않았습니다.
예전에는 포지션 옆의 작은 표시등 5개를 장식처럼 여겼습니다. 고속도로에 나가고 나서야 엔진 경고등을 보는 것처럼 말입니다. 표시등은 유일한 경고지만, 보험기금에 돈이 남아 있는지는 알려주지 않습니다. 교차 증거금이었다면 점수도 낮아졌을 겁니다. 지갑 잔액 전체가 분모에 들어가기 때문입니다. 격리 증거금이었기에 우리가 대기열 맨 앞에 섰습니다.
59,390의 체결
ADL은 파산한 롱의 파산 가격인 59,390에 우리 2 BTC를 청산합니다. 그 순간 Mark 가격은 59,100입니다. 우리는 숏이므로 청산은 매수입니다. 59,390은 Mark 가격보다 불리한 매수가입니다. 실현 수익은 9,620 USDT입니다. 1초 전 평가손익은 10,200이었습니다. 580 USDT 차이는 배정 페널티입니다. 우리가 손실을 떠안는 역할을 맡았기에 마지막 체결 가격을 얻지 못합니다.
이 체결은 내가 내놓은 매도 호가에 상대가 거래한 것이 아니라, 파산한 롱의 손실을 떠안도록 배정된 것입니다. 대기열 순번도, post-only 설정도, 주문을 취소할 기회도 없습니다. 수수료 처리는 거래소마다 다르며 대체로 불리합니다. 65,400의 스톱은 여전히 작동 중이지만, 계좌에는 이제 그 수량이 없습니다. 트레이더가 체결 화면을 붙여넣고 “제가 누른 게 아닌데요”라고 적은 고객 지원 스크린샷을 본 적이 있습니다. 실제로 누른 적이 없었습니다.
백테스트가 숏을 계속 보유한 40분
Mark는 계속 내려갑니다. 한 시간 중 저점은 58,050입니다. 여전히 2 BTC 숏인 백테스트는 미실현 수익 2,680 USDT와 모의 계좌에는 없는 포지션의 펀딩 지급액을 추가로 기록합니다. 모의 계좌는 포지션이 없습니다. 전략이 추세 추종형이라면 58,050에서 다시 숏에 진입하고 싶을 수도 있습니다. 백테스트는 포지션을 청산한 적이 없으므로 재진입하지 않습니다. 이 시점부터 두 장부는 수량, 펀딩, 스톱, 그리고 다음 봉의 시그널이 “현재 포지션”을 어떻게 처리하는지에서 서로 달라집니다.
부분 ADL은 장부를 맞추기가 더 어렵습니다. 파산한 롱이 1.5 BTC였다면 계좌에는 0.5 BTC 숏이 남고 백테스트에는 2.0 BTC 숏이 남습니다. 이후의 모든 주문 수량은 잘못된 보유 수량을 기준으로 계산됩니다. 리서치 쪽 스톱은 여전히 살아 있지만, 존재하지 않는 수량을 커버하려 합니다.
장부에 추가해야 할 행
OHLCV만큼 정밀한 과거 보험기금 데이터는 구할 수 없습니다. 그래도 보험기금이 무한하다고 가정하지 않을 수 있습니다. 사유 코드, 파산 가격, 잔여 수량을 포함해 요청하지 않은 체결을 기록하세요. 리서치에서는 꼬리 위험을 스트레스 테스트하세요. 수익률과 청산 거래량이 함께 급증하면 점수가 가장 높은 격리 증거금 수익 포지션 일부를 강제 종료하고, 나머지 포지션은 이후 움직임을 계속 따라가지 못하게 하세요. 그리고 모든 숏이 봉의 저점까지 유지되는 경우의 자산 곡선과 비교하세요.
잘 나가는 숏은 반대편이 파산할 때 거래소가 가장 먼저 부르는 이름입니다. 백테스트가 그런 방식으로 손실을 입을 수 없다면, 표시등이 2개에서 5개로 바뀔 때 모의 계좌가 보유할 계약과 같은 계약을 보유하고 있는 게 아닙니다.
← 전체 글


