Skip to main content
決済経路に現れる数値はすべて整数です。値が残高に影響しうる場所に浮動小数点は一切ありません。同じ浮動小数点式を計算した2台のマシンは最下位ビットで食い違うことがあり、コンセンサスの実行経路では最下位ビットの食い違いはフォークだからです。 そのため価格と数量は固定された整数単位で保持され、入力した値とプロトコルが保存する値との間のあらゆる変換には、定義された丸め方向があります。

ティックサイズとロットサイズ

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

丸めはリスクの判断

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

アカウントに不利な側へ保守的に丸めるもの

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

公平に丸めるもの

これらは、方向を一貫させることが安全余裕ではなく富の移転になってしまう項目です。常に切り上げる手数料は隠れた上乗せであり、常に切り捨てる手数料は補助金です。四捨五入なら、どちらの側も体系的に得をしません。 例外が1つあります。丸めるとゼロになる手数料は、代わりに切り上げられます。手数料をまったく払わない取引は、表現可能な最小額を払う取引より望ましくないからです。
ポジション評価額、証拠金使用率、損益の表示が、自分で計算した値と最小単位ぶんずれることがあるのはこのためです。この差は誤りではなく、その項目に定められた丸めルールを意図して適用した結果です。

実務上の意味

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

次に読む

マーケット

マーケットごとのティックサイズ、ロットサイズ、契約仕様です。

IntentionKernel

固定小数点演算がコンセンサスの要件である理由です。

マージンモード

保守的な丸めが利用可能残高のどこに現れるかです。

手数料

請求額がどう計算され、どう丸められるかです。