🐄 바이낸스 오르카 파산가격 청산 🐄
저번 원화상장 때, 간 적이 없는 가격에 청산된 이슈에 대해서 방송하면서, CS랑 8시간 동안 채팅 데이트 하면서 모든 문서를 읽고 대화해본 결과를 공유해드립니다!
이번 기회에 정확한 청산 알고리즘에 대해서 이해를 한 것 같아서 좋습니다.
제가 바이낸스 문서를 전부 다 읽은 결과 청산 알고리즘의 로직은 이렇습니다.
1️⃣ Mark Price 기준으로 유지증거금을 계산하고, 그렇기 때문에 청산가는 Mark Price로 청산이 진행됩니다.
2️⃣ 유지증거금 < 0일 경우 파산가격으로 파산처리를 합니다. 그게 아닐 경우에는 오더북을 통한 IOC 주문으로 청산가격에 포지션을 정리하고, IOC 주문으로 정리되지 않는 남은 취소 잔량은 파산가격으로 정리됩니다.
3️⃣ 청산가에 도달하면, 스마트 청산에 의해 한 번에 청산되는 걸 방지하기 위해 미체결 주문을 먼저 취소해서 유지증거금을 확보하고, 그 다음 포지션의 일부를 IOC 부분청산 주문으로 정리합니다. 만약 IOC 주문 이후 유지증거금이 부족하지 않다면 청산은 중단됩니다.
여기서 제가 청산당한 이유는,
그 당시 Last Price가 3.57일 때 Mark Price가 4.46으로, Last Price랑 Mark Price 사이에 심한 괴리가 있었고, 제 청산가는 4.1이라서 청산이 진행됐습니다.
제 포지션은 Last Price에서는 간 적도 없는 4.089달러에 평균값으로 정리되었습니다.
그 이유는 유지증거금이 부족해지면서, 부족한 금액을 17시 24분 49초에 IOC 주문으로 부분청산이 진행됐고, 25분 42초에 또 부분청산됐고, 26분 12초에 결국 유지증거금이 0보다 작아지면서 파산가격에 정리된 겁니다.
Last Price 기준으로 오더북에는 충분한 유동성이 있었는데도, Mark Price 기준으로 유지증거금이 0보다 더 낮게 계산되면서, 오더북과 상관없이 파산가격으로 파산처리 돼버려서 예상보다 훨씬 큰 손실을 보게 된 겁니다.
제가 이 로직을 완벽하게 이해하고 나서 느낀 건, 바이낸스의 청산 규칙이 유저에게 불공정하게 적용된다는 사실입니다.
Last Price 오더북 기준으로는 3.57~3.6 사이에서 충분히 포지션 정리가 가능한 유동성이 있었는데도, 파산가격으로 처리해버렸고, 이 파산가격으로 처리된 3.57 <-> 4.089의 차이는 반대 포지션에게 수익으로 돌아가는 게 아니라, 순전히 거래소가 가져가는 구조입니다.
제가 청산 규칙이 사용자에게 불공정하다고 느낀 이유는,
정상적인 케이스에서는 Mark Price 기준으로 유지증거금이 0 미만일 때 파산처리가 되는 게 맞지만, 이번처럼 Mark Price와 Last Price의 괴리가 비정상적으로 30% 이상 벌어진 특이 케이스에서는, 반대매매로 충분히 오더북을 통해 정리가 가능한 포지션인데도 Last Price와 괴리가 심한 Mark Price 기준으로 유지증거금을 체크해서 파산처리를 해버렸다는 겁니다.
Mark Price 기준으로 청산 트리거가 되는 건 당연하다고 생각하지만, 반대매매가 아닌 파산가격에 의한 처리를 할 경우에는 Last Price 기준으로도 유지증거금이 0 미만인지 한 번쯤 더 체크를 하고 파산처리를 했으면 이런 상황은 안 일어났을 것 같습니다.
굳이 사용자가 보지 않아도 되는 손실을, 반대 포지션이 수익을 본 것도 아니고 거래소가 파산처리 명목으로 가져간 거기 때문에, 저는 이건 굉장히 사용자에게 불공정한 규칙이라고 생각합니다.
이런 부분에 대해서는 바이낸스 피드백 창구에 피드백 요청을 진행했습니다.
* IOC 주문 : 즉시 주문 실행하고, 체결되지 않는 수량을 바로 취소하는 주문