> ## 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.

# 精度と丸め

> 価格と数量が整数としてどう表現されるか、各項目がなぜその方向に丸められるのかです。

決済経路に現れる数値はすべて整数です。値が残高に影響しうる場所に浮動小数点は一切ありません。同じ浮動小数点式を計算した2台のマシンは最下位ビットで食い違うことがあり、コンセンサスの実行経路では最下位ビットの食い違いはフォークだからです。

そのため価格と数量は固定された整数単位で保持され、入力した値とプロトコルが保存する値との間のあらゆる変換には、定義された丸め方向があります。

<h2 id="tick-size-and-lot-size">
  ティックサイズとロットサイズ
</h2>

| 制約          | 対象 | 効果                |
| ----------- | -- | ----------------- |
| **ティックサイズ** | 価格 | 価格はその整数倍でなければならない |
| **ロットサイズ**  | 数量 | 数量はその整数倍でなければならない |

どちらもマーケットごとに定められ、[契約仕様](/ja/trading/markets)で公開されています。適合しない注文は、黙って調整されるのではなく拒否されます。黙って価格を丸める取引所は、知らせないまま注文を書き換えていることになるからです。

<h2 id="rounding-is-a-risk-decision">
  丸めはリスクの判断
</h2>

丸めの方向は表示上の好みではありません。**どの丸めの選択も、端数の誤差を誰かに割り当てます**。ルールは一貫しています。誤差がリスクを生む場所では保守的に丸め、誤差が体系的な移転になる場所では公平に丸めます。

<h3 id="rounded-conservatively-against-the-account">
  アカウントに不利な側へ保守的に丸めるもの
</h3>

| 項目           | 方向       | 理由                     |
| ------------ | -------- | ---------------------- |
| 当初証拠金        | **切り上げ** | 証拠金を過小に見積もるとリスクを過小評価する |
| 維持証拠金        | **切り上げ** | 強制決済のしきい値を決めるため        |
| 利用可能な担保資産    | **切り捨て** | 裏付けをわずかに超えて建てるのを防ぐため   |
| 出金可能残高       | **切り捨て** | 利用可能額を超えて出金するのを防ぐため    |
| 最大の買い数量・売り数量 | **切り捨て** | 実際の許容量を超えるのを防ぐため       |

パターンははっきりしています。*このアカウントはどれだけ引き受けられるか*に答える値は、すべてアカウントに不利な側へ丸めます。必要証拠金を端数ぶん切り捨てる処理が取引所のすべてのポジションで繰り返されれば、それはリスクの体系的な過小評価です。1件あたりは小さく、しかも重要な局面になって初めて表に出てくる種類の誤差です。

<h3 id="rounded-fairly">
  公平に丸めるもの
</h3>

| 項目           | 方向       | 理由                      |
| ------------ | -------- | ----------------------- |
| 手数料と資金調達の支払い | **四捨五入** | 取引所側に体系的に偏らせることは正当化できない |
| リベートと報酬      | **四捨五入** | 同じ理屈を逆方向に適用したもの         |
| 実現損益         | **四捨五入** | 決済はどちらにも傾くべきではない        |
| 表示上の損益       | **四捨五入** | 決済との整合性のため              |

これらは、方向を一貫させることが安全余裕ではなく富の移転になってしまう項目です。常に切り上げる手数料は隠れた上乗せであり、常に切り捨てる手数料は補助金です。四捨五入なら、どちらの側も体系的に得をしません。

**例外が1つ**あります。丸めるとゼロになる手数料は、代わりに**切り上げ**られます。手数料をまったく払わない取引は、表現可能な最小額を払う取引より望ましくないからです。

<Note>
  ポジション評価額、証拠金使用率、損益の表示が、自分で計算した値と最小単位ぶんずれることがあるのはこのためです。この差は誤りではなく、その項目に定められた丸めルールを意図して適用した結果です。
</Note>

<h2 id="what-this-means-in-practice">
  実務上の意味
</h2>

* **送信前にティックサイズとロットサイズに合わせる**。適合しない価格による拒否は、避けられる注文拒否のうち最も多いものです。
* **最後の1単位まで使い切る数量にしない**。利用可能な担保資産は切り捨て、証拠金は切り上げられるため、利用可能残高ちょうどの数量の注文は拒否されることがあります。誤差の余裕を残してください。
* **表示のわずかな差は起こるものと考える**。値を正確に再現するには、同じ整数の入力に同じ丸めルールを適用する必要があります。浮動小数点で計算し直しても再現できません。
* **整数から再構成する**。プログラムで照合するなら、プロトコルの単位のまま扱ってください。小数型に変換して戻すと、整数が排除しているはずの曖昧さをそのまま呼び戻すことになります。

<h2 id="where-to-go-next">
  次に読む
</h2>

<CardGroup cols={2}>
  <Card title="マーケット" href="/ja/trading/markets">
    マーケットごとのティックサイズ、ロットサイズ、契約仕様です。
  </Card>

  <Card title="IntentionKernel" href="/ja/protocol/architecture/kernel">
    固定小数点演算がコンセンサスの要件である理由です。
  </Card>

  <Card title="マージンモード" href="/ja/trading/margin-modes">
    保守的な丸めが利用可能残高のどこに現れるかです。
  </Card>

  <Card title="手数料" href="/ja/programs/fees">
    請求額がどう計算され、どう丸められるかです。
  </Card>
</CardGroup>
