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

# 成行注文とスリッページ保護

> 成行注文が上限価格付きの指値注文として送信される理由と、その上限が三つの独立した制約からどう導かれるのかです。

成行注文は、板が提示するものが何であれ即時の約定を求めます。これを文字どおりに受け取ると危険です。板が薄いとき、あるいは板が速く動いているとき、「板が提示するもの」は目にしていた価格から大きく離れることがあります。

Intentionは成行注文を文字どおりには送信しません。すべての成行注文は、送信時に計算された**保護用の価格上限を持つ指値注文**に変換されます。流動性を即座に取りにいく点は変わりませんが、際限なく板を食い上げるのではなく、ある価格で止まります。

<h2 id="three-bounds-strictest-wins">
  三つの上限、最も厳しいものが勝つ
</h2>

上限は、独立に導かれた三つの価格のうち最も保守的なものです。

<div className="dg" data-dg="market-order-bound">
  <div className="dg-c" style={{aspectRatio:"720 / 330"}}>
    <svg className="dg-w" viewBox="0 0 720 330" aria-hidden="true">
      <path className="dg-wire dg-soft" d="M 113.33 145.00 L 353.64 170.33" />

      <path className="dg-head" d="M 360.00 171.00 L 353.17 174.70 L 354.10 165.95 Z" />

      <path className="dg-wire dg-soft" d="M 360.00 145.00 L 360.00 164.60" />

      <path className="dg-head" d="M 360.00 171.00 L 355.60 164.60 L 364.40 164.60 Z" />

      <path className="dg-wire dg-soft" d="M 606.67 145.00 L 366.36 170.33" />

      <path className="dg-head" d="M 360.00 171.00 L 365.90 165.95 L 366.83 174.70 Z" />

      <path className="dg-wire dg--blue" d="M 360.00 226.00 L 360.00 235.60" />

      <path className="dg-head dg--blue" d="M 360.00 242.00 L 355.60 235.60 L 364.40 235.60 Z" />
    </svg>

    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"0.0000%",width:"31.4815%",height:"42.4242%"}}><span className="dg-t">スリッページ許容度</span><span className="dg-s">買いは最良売り気配 × (1 + s)、売りは最良買い気配 × (1 − s)</span><span className="dg-n">既定は10%、0.01%から10%で設定可能。自分で操作できる上限です。</span></div>
    <div className="dg-b dg--yellow" style={{left:"34.2593%",top:"0.0000%",width:"31.4815%",height:"42.4242%"}}><span className="dg-t">マーケットの価格バンド</span><span className="dg-s">その外側では板に載ることも約定もできない</span><span className="dg-n">守るのは自分ではなくマーケットです。ブロックのインデックス価格が得られない場合は、失効ではなく拒否です。</span></div>
    <div className="dg-b dg--orange" style={{left:"68.5185%",top:"0.0000%",width:"31.4815%",height:"42.4242%"}}><span className="dg-t">その数量が届く最悪の価格</span><span className="dg-s">注文が実際に消費する板の厚みから導く</span><span className="dg-n">最良気配の価格からは見えない上限です。</span></div>
    <div className="dg-b dg--brown dg-round" style={{left:"34.7222%",top:"53.3333%",width:"30.5556%",height:"13.9394%"}}><span className="dg-t">三つのうち最も厳しいもの</span></div>
    <div className="dg-b dg--blue" style={{left:"31.9444%",top:"74.5455%",width:"36.1111%",height:"21.2121%"}}><span className="dg-t">実際に送信される指値価格</span><span className="dg-s">買いは三つのうち最も低い、売りは最も高い</span></div>
  </div>
</div>

買いなら三つのうち最も**低い**価格が、売りなら最も**高い**価格が上限になります。それぞれが別々の穴を塞いでおり、単独で十分なものは一つもありません。

<h3 id="your-slippage-tolerance">
  スリッページ許容度
</h3>

$$
\text{買いの上限} = \text{最良売り気配} \times (1 + s) \qquad
\text{売りの下限} = \text{最良買い気配} \times (1 - s)
$$

許容度の既定値は10%で、0.01%から10%のあいだで設定できます。これは自分で操作できる上限であり、*最良気配からこれ以上不利な価格では約定させるな*という単純な指示を表します。

<h3 id="the-markets-price-band">
  マーケットの価格バンド
</h3>

どのマーケットも基準価格の周囲にバンドを設けており、その外側で注文が板に載ることも約定することもできません。これは成行注文にも適用されます。自分の許容度で、マーケットが誰にも許していない範囲まで約定を押し出すことはできません。

これは、自分ではなくマーケットを守るための上限です。これがなければ、空っぽの板に大きな成行注文を入れたときに成立した価格が、そのまま他のシステムへ流れ込んでいきます。

バンドはマーク価格とインデックス価格の両方に対して評価されます。バンドが設定されているマーケットで、そのブロックのインデックス価格が得られない場合は、**フォールバックではなく拒否**になります。設定された保護が黙って失効することは許されていません。

バンドの幅はマーケットごとの設定で、`price_limit_ppm`が保持し、`price_limit_x_ppm`と`price_limit_y_ppm`が二区間の細分を与えます。このページからではなく契約仕様から読み取ってください。

<h3 id="a-worked-example">
  計算例
</h3>

次の板に対して、ETHを4,000 USDC分だけ成行で買う注文を出したとします。

| 価格帯 |     価格 |   数量 | 取り切るのに必要な額 |
| --: | -----: | ---: | ---------: |
|   1 | 50,000 | 0.02 |      1,000 |
|   2 | 50,100 | 0.03 |      1,503 |
|   3 | 50,200 | 0.04 |      2,008 |

エンジンは板を下へたどり、予算が尽きるまで使っていきます。

* 価格帯1で1,000を使い、残りは**3,000**になります。
* 価格帯2で1,503を使い、残りは**1,497**になります。
* 価格帯3には2,008分の厚みがありますが、残りは1,497しかないため、**一部約定**になります。1,497 ÷ 50,200 = **0.0298207 ETH**です。

手元に残るのは**0.0798207 ETH、平均価格は50,112.30**です。板の先頭にあった50,000ではありません。この差がスリッページであり、手数料ではなく、この厚みに対する自分の数量が決めるものです。

エンジンが導く上限は、たどり着いた最も深い価格帯の価格です。これが、成行注文をその価格の指値注文に変えます。

<h3 id="the-worst-price-your-size-would-reach">
  その数量が届く最悪の価格
</h3>

送信前に、注文数量が食い潰す深さまで板をたどります。そこで到達した最も深い価格帯の価格が上限になります。

これが最も分かりにくい上限であり、他の二つが取りこぼすケースを埋めます。許容度は最良気配からの距離で測られますが、その近辺で約定させるだけの厚みが板にあるかどうかについては何も言いません。実際の数量まで板をたどることで、*最良気配からどれだけ離れるか*という問いが、*この注文が実際にどこへ着地するか*という問いに変わります。

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

**注文が全量約定しないことがあります**。上限の内側で板の流動性が尽きた場合、残りはより不利な価格で約定するのではなく取り消されます。成行注文の一部約定は、失敗ではなく保護が働いた結果です。

**許容度を狭めるほど、約定しない注文は増えます**。値動きの激しいマーケットで0.01%に設定すれば、一部約定か、まったく約定しないという結果が頻繁に返ってきます。既定の10%が緩いのは、数bpsのスリッページより約定しないことのほうが悪い場合が多いからです。ただしこれは確かに緩く、薄いマーケットでの10%は実額として無視できません。

**許容度よりも数量のほうが効きます**。三つ目の上限は数量から導かれるため、許容度をどれだけ緩くしても、大きな注文は板の実際の厚みで縛られます。大きな注文を分割することが、影響を減らす確実な方法です。[TWAP](/ja/trading/twap)と[スケール注文](/ja/trading/scale-orders)を参照してください。

<Note>
  この変換は送信時に、その時点の板を使って行われます。送信から執行までのあいだに板は動き得ます。上限が守ってくれるのは、そもそも存在しなかった厚みを食い上げてしまう事態からであって、マーケットを凍結してくれるわけではありません。
</Note>

<h2 id="checking-before-you-submit">
  送信前の確認
</h2>

上限は公開データから計算できるため、クライアントは発注を確定する前に、想定約定価格と最悪ケースを表示できます。板に見えている厚みに対して大きい注文であれば、これを確認する価値があります。最良気配と到達しうる最悪の価格との差は、まさに成行注文が隠している数値だからです。

<Warning>
  スリッページ保護が縛るのは価格であって、結果ではありません。急変動では、余裕をもって約定していたはずの注文が一部約定か空振りで返ってきて、最も欲しかった瞬間に狙ったポジションを持てないままになることがあります。保護が目的であれば、許容度を広く取った成行注文よりも、明示的なトリガーを持つ[条件付き注文](/ja/trading/conditional-orders)のほうが適しています。
</Warning>

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

<CardGroup cols={2}>
  <Card title="注文タイプ" href="/ja/trading/order-types">
    指値注文、有効期間、未約定の残数量の扱いです。
  </Card>

  <Card title="板" href="/ja/trading/order-book">
    板の厚みの読み方と、最良気配が約定価格ではない理由です。
  </Card>

  <Card title="TWAP" href="/ja/trading/twap">
    大きな注文を時間で分割し、マーケットへの影響を減らします。
  </Card>

  <Card title="マーケット" href="/ja/trading/markets">
    マーケットごとの価格バンドとティックサイズを掲載しています。
  </Card>
</CardGroup>
