> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 정밀도와 반올림

> 가격과 수량을 정수로 표현하는 방식, 그리고 각 항목이 지금과 같은 방향으로 반올림되는 이유.

결제 경로에 등장하는 모든 숫자는 정수입니다. 값이 잔고에 영향을 줄 수 있는 곳에는 부동소수점이 전혀 없습니다. 같은 부동소수점 식을 계산한 두 기계가 마지막 비트에서 갈릴 수 있고, 합의 실행 경로에서 마지막 비트의 불일치는 곧 포크이기 때문입니다.

그래서 가격과 수량은 고정된 정수 단위로 보관되며, 입력한 값과 프로토콜이 저장하는 값 사이의 모든 변환에는 정해진 반올림 방향이 있습니다.

<h2 id="tick-size-and-lot-size">
  호가 단위와 수량 단위
</h2>

| 제약        | 적용 대상 | 효과                  |
| --------- | ----- | ------------------- |
| **호가 단위** | 가격    | 가격은 이 단위의 정수배여야 합니다 |
| **수량 단위** | 수량    | 수량은 이 단위의 정수배여야 합니다 |

둘 다 마켓별로 정해지며 [계약 명세](/ko/trading/markets)에 공개됩니다. 규격에 맞지 않는 주문은 조용히 조정되지 않고 거부됩니다. 가격을 말없이 반올림하는 거래소는 알리지도 않고 주문을 바꾸는 셈이기 때문입니다.

<h2 id="rounding-is-a-risk-decision">
  반올림은 리스크 결정입니다
</h2>

반올림 방향은 표기 취향이 아닙니다. **모든 반올림 선택은 오차의 일부를 누군가에게 배분합니다**. 규칙은 일관됩니다. 오차가 리스크를 만드는 곳에서는 보수적으로 반올림하고, 오차가 체계적인 이전이 되는 곳에서는 공정하게 반올림합니다.

<h3 id="rounded-conservatively-against-the-account">
  계정에 불리한 쪽으로 보수적으로 반올림
</h3>

| 항목             | 방향     | 이유                          |
| -------------- | ------ | --------------------------- |
| 개시증거금          | **올림** | 증거금을 낮게 잡으면 리스크를 낮게 잡는 것입니다 |
| 유지증거금          | **올림** | 청산 임계값을 정하는 값이기 때문입니다       |
| 가용 담보          | **내림** | 감당 범위보다 조금 더 여는 것을 막습니다     |
| 출금 가능 잔고       | **내림** | 가용 금액을 넘겨 출금하는 것을 막습니다      |
| 최대 매수 또는 매도 수량 | **내림** | 실제 여력을 초과하는 것을 막습니다         |

패턴은 이렇습니다. *이 계정이 얼마나 더 떠안을 수 있는가*에 답하는 값은 모두 계정에 불리한 쪽으로 반올림합니다. 소수점 아래를 내림한 증거금 요건이 거래소의 모든 포지션에서 반복되면 리스크를 체계적으로 과소 계상하게 됩니다. 건별로는 작지만, 정확히 중요한 순간에만 드러나는 종류의 오차입니다.

<h3 id="rounded-fairly">
  공정하게 반올림
</h3>

| 항목          | 방향       | 이유                              |
| ----------- | -------- | ------------------------------- |
| 수수료와 펀딩 지급액 | **사사오입** | 거래소 쪽으로 기우는 체계적 편향은 정당화될 수 없습니다 |
| 리베이트와 리워드   | **사사오입** | 같은 논리, 반대 방향입니다                 |
| 실현 손익       | **사사오입** | 결제가 어느 쪽으로도 기울어서는 안 됩니다         |
| 표시 손익       | **사사오입** | 결제와의 일관성                        |

이런 항목에서 한 방향으로 일관되게 반올림하면 안전 여유가 아니라 이전이 됩니다. 항상 올림하는 수수료는 숨은 할증이고, 항상 내림하는 수수료는 보조금입니다. 사사오입은 어느 쪽도 체계적으로 앞서게 두지 않습니다.

**예외가 하나 있습니다.** 0으로 반올림될 수수료는 대신 **올림**합니다. 수수료를 전혀 내지 않는 거래는 표현 가능한 최소 금액을 내는 거래보다 나쁩니다.

<Note>
  포지션 가치, 증거금 사용량, 손익 표시가 직접 계산한 값과 최소 단위만큼 어긋날 수 있는 이유가 이것입니다. 그 차이는 오류가 아니라, 해당 항목에 의도적으로 적용된 반올림 규칙입니다.
</Note>

<h2 id="what-this-means-in-practice">
  실무에서 의미하는 것
</h2>

* **제출 전에 호가 단위와 수량 단위를 맞추십시오.** 규격에 맞지 않는 가격으로 인한 거부는 가장 흔하면서 피할 수 있는 주문 거부입니다.
* **마지막 한 단위까지 채워 주문하지 마십시오.** 가용 담보는 내림하고 증거금은 올림하므로, 가용 잔고에 딱 맞춘 주문은 거부될 수 있습니다. 오차 여유를 남겨 두십시오.
* **표시값의 작은 차이는 예상하십시오.** 어떤 값을 정확히 재현하려면 부동소수점으로 다시 계산할 것이 아니라, 동일한 정수 입력에 동일한 반올림 규칙을 적용해야 합니다.
* **정수에서 재구성하십시오.** 프로그램으로 대사한다면 프로토콜의 단위로 작업하십시오. 십진 타입으로 변환했다가 되돌리면, 정수가 없애려고 존재하는 바로 그 모호함이 다시 들어옵니다.

<h2 id="where-to-go-next">
  다음으로 읽을 문서
</h2>

<CardGroup cols={2}>
  <Card title="마켓" href="/ko/trading/markets">
    마켓별 호가 단위, 수량 단위, 계약 명세.
  </Card>

  <Card title="IntentionKernel" href="/ko/protocol/architecture/kernel">
    고정소수점 연산이 합의 요건인 이유.
  </Card>

  <Card title="증거금 모드" href="/ko/trading/margin-modes">
    보수적 반올림이 가용 잔고에 드러나는 지점.
  </Card>

  <Card title="거래 수수료" href="/ko/programs/fees">
    수수료를 계산하고 반올림하는 방식.
  </Card>
</CardGroup>
