업비트 API 수수료 문의 답변 안내

업비트 API 수수료

업비트 API 수수료 문의에 대한 답변입니다~
매수수량 0.00129146 / 매도수량 0.00129145

매수금액, 매도금액

매수단가 3,949,000 / 매도단가 3,953,000 이며, 매수금액 5,100 / 매도금액 5,105 입니다.

수수료

매수수수료 2.54 / 매도수수료 2.55
매수정산금액 5,103 / 매도정산금액 5,102
왜 1원이 손해일까, 계산상으로는 이득이었는데 말입니다.

수수료 계산이 궁금하여 업비트에 문의하였습니다. 문의 제목은 'API를 통해 단가를 4,000원 높게 매도했는데 손실입니다. 정확한 확인 좀 부탁해요.'

2022년 1월 18일 00시 32분 거래 => 매수 => 수량 : 0.00129146, 단가 3,949,000, 거래금액 5,100krw, 수수료 2.54krw, 정산금액 5,103krw
    예상 거래금액 : 5,099.97554 (0.00129146*3949000)
    예상 수수료 : 2.54998777 (0.00129146*3949000*0.0005)
    예상 정산금액 : 5,102.52552777 (0.00129146*3949000*(1 + 0.0005))
   
2022년 1월 18일 00시 38분 거래 => 매도 => 수량 : 0.00129145, 단가 3,953,000, 거래금액 5,105krw, 수수료 2.55krw, 정산금액 5,102krw
    예상 거래금액 : 5,105.10185 (0.00129145*3953000)
    예상 수수료 : 2.552550925 (0.00129145*3953000*0.0005)
    예상 정산금액 : 5,102.549299075 (0.00129145*3953000*(1 - 0.0005))

* 예상 정산금액 = 매도예상정산금액-매수예상정산금액 = 5,102.549299075 - 5,102.52552777 = 0.023771305
일 줄 알았는데 업비트 화면을 보니 매도는 5,102원이고 매수는 5,103원이네요. 표시상의 문제인가요, 아니면 제가 실제로 손해를 본 건가요? 0.02377원 이득 봐야 하는 거 아닌지요?

* 정확한 매수/매도 수수료 측정 소수점 처리 방법을 알고 싶습니다.
    [변수설정]
    _sellVol := 예상매도수량
    _sellPri := 예상매도단가
    _sellFeeRat := 예상매도수수료율
    _buyVol := 예상매수수량
    _buyPri := 예상매수단가
    _buyFeeRat := 예상매수수수료율
    [수익시점 측정]
    수익시점 예상 => (_sellVol * _sellPri * (1 - _sellFeeRat)) - (_buyVol * _buyPri * (1 + _buyFeeRat)) 값이 0보다 클 때인 줄 알았는데 업비트화면이 정확한 금액표시라면 정확한 수수료 좀 알려주세요.
   
    실제 매도/매수수량 소수점 어떻게 되는지 알려주세요.
    수수료를 측정할 때 ( volume * price ) 결과에 대해 소수점 몇 째자리까지 수수료를 측정하는지,
    위의 공식처럼 1(100%) 에서 매도수수료율(0.05%)만큼 뺀 다음 계산하는 건지 => ( volume * price ) * (0.9995) <이 경우 업비트의 표시상 문제로 실제로는 수익으로 판단>
    수량 * 단가 를 소수점 어느 구간에서 정리한 다음에 최종 금액을 빼는 건지 => ROUND(volume * price) * (0.9995)
    단가를 정리한 다음에 계산하는 건지 => ( ROUND(volume) * price ) * (0.9995)
    아니면 둘 다 소수점처리를 하는 건지 => ROUND ( ROUND (volume) * price )
    그리고 이 수수료 적용이 매수쪽이랑 매도쪽이랑 다르게 적용되는지 동일하게 적용되는지 궁금합니다.
    올림인지, 버림인지, 반올림인지, 몇째자리에서 하는지 좀 알려주세요.

[알고 싶은 점]
1. 실제로 손해를 본 건지, 단순 표시상의 문제인지 알고 싶어요. 기껏 하루종일 테스트 했더니 손실이면 좀 억울하네요...
2. 정확한 수수료 측정 공식 문의
[2-1] 수량처리 소수처리 어떻게 하는지 > 몇 째자리에서 올림/반올림/버림
[2-2] 소수처리를 최초 수량에 하는지, 정산금액(수량 * 단가)에도 소수처리를 하는지

정확히 좀 부탁드려요~~!!! 어제 하루 종일 테스트 해봤는데 결과가 손실이라 안타깝네요...

업비트 답변은 다음과 같습니다.

안녕하세요,
업비트 Open API를 이용해주셔서 감사드립니다.

우선 매수, 매도 주문 모두 계산하신 방식이 맞습니다.
매수 정산 금액은 5,102.52552777, 매도 정산 금액은 5,102.549299075 입니다.

업비트 웹/앱에서는 KRW 화폐의 경우 매수 주문은 반올림, 매도 주문은 반내림 처리를 하고 있습니다.
따라서 웹/앱의 표기상에만 매수 5103, 매도 5102로 표기된 것이며 실제 잔고는 계산하신 값만큼 증가하였습니다.
(소수점 아래까지의 정확한 값은 주문 내역 API를 통해 확인하실 수 있습니다.)

또한 수수료는 소수점 아래 20자리까지 계산되며 이를 넘어가는 값은 버림 처리됩니다.
그러나 현재는 최소 가격이 0.00000001, 최소 수량이 0.00000001, 수수료율이 0.05% 이므로 이론적으로 20자리를 넘어가는 경우는 발생하지 않습니다.
만약 추후 최소 단위가 변경되어 소수점 처리가 필요한 경우가 발생한다면, 정산 금액을 먼저 계산한 후 버림 처리가 이루어집니다.

서비스 이용에 참고 부탁드리며,
더 궁금하신 점이 있으신 경우 이 메일에 회신 부탁드립니다.

감사합니다.
업비트 개발자 센터

댓글