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

# スリッページとプライス・インパクト

> スリッページとプライス・インパクトの厳密な定義、Raydium SDK が minAmountOut と maxAmountIn を決定する仕組み、AMM タイプ間の違い、本番環境のルーティングにおける MEV の考慮事項。

<Info>
  **このページは AI による自動翻訳です。すべての内容は英語版を正とします。**

  [英語版を表示 →](/algorithms/slippage-and-price-impact)
</Info>

## 2 つの異なる概念

**プライス・インパクト**と**スリッページ**は UI では頻繁に混同されますが、別の概念です。

* **プライス・インパクト**は特定のプール状態に対するトレードの決定論的なプロパティです。`(Δin, reserves)` が与えられたとき、プライス・インパクトはトレード送信前に完全に計算可能です。

* **スリッページ**は見積時に*予期した*価格と実行時に*実際に得た*価格の実現差です。レイテンシー、並行トランザクション、ブロック包含順に依存します。プールの数学には依存しません。

それ以外はアイドル状態のプールに対する 1% の見積は、次のブロックで処理されれば 0% のスリッページです。その 1% はプライス・インパクトでした。別のトレードが最初にプールをヒットした場合、同じ見積は 0.2% 悪い結果になります。その追加の 0.2% はスリッページです。

## 正式な定義

### プライス・インパクト

```
p_before = pool.spot_price()
p_after  = pool.spot_price_if_trade(Δin) applied
impact   = (p_before − p_after) / p_before       // 符号付きの値
```

CPMM の場合：小さなトレードでは `impact ≈ 2 · Δin / reserve_in`。CLMM の場合：トレードが越えるティック数に依存します。現在のティック範囲内ではほぼフラットですが、各ティック交差で跳びます。

### 実現スリッページ

```
quoted_out = 見積時に計算された amount_out
actual_out = チェーン上で観測された amount_out
slippage   = (quoted_out − actual_out) / quoted_out
```

スリッページは常に非負です（またはゼロ）。見積が正直であると仮定します。負の値は見積より*多く*得たことを意味します。見積から実行までの間にプール状態があなたに有利に動いた場合に可能です。

## `minAmountOut` と `maxAmountIn` の設定

Raydium のすべてのスワップはスリッページ保護バウンドを取ります：

* `SwapBaseInput(amount_in, min_amount_out)` — 正確な入力、出力の下限。
* `SwapBaseOutput(max_amount_in, amount_out)` — 正確な出力、入力の上限。

SDK はこれらを以下のように計算します：

```ts theme={null}
const computed = raydium.<pool_type>.computeAmountOut({
  poolInfo,
  amountIn,
  mintIn,
  mintOut,
  slippage: 0.005,     // 0.5% 許容度
});

// computed.amountOut         — 「期待される」見積
// computed.minAmountOut      — amountOut × (1 − slippage)、オンチェーンバウンドとして使用
// computed.priceImpact       — 決定論的、プール状態のみ
// computed.fee               — 請求される総手数料（すべてのコンポーネントを合計）
```

スリッページ許容度はプライス・インパクト*自体*ではなく、プライス・インパクト*周辺のバッファ*です。0.5% の許容度は「見積より最大 0.5% 悪い結果を受け入れる」という意味です。プライス・インパクトが 0.01%（小さなトレード）であっても 2%（大きなトレード）であっても関係ありません。2% のプライス・インパクトのトレードで 0.5% の許容度の場合、`minAmountOut` はトレード前のスポット価格より 2.5% 下です。本質的にはインパクトと許容度の合計です。

## 推奨スリッページ許容度

単一の正しい値はありません。適切なバウンドは以下に依存します：

1. **ペアの安定性**。ステーブルコイン・ステーブルコイン プールは安全に 0.1% を使用できます。変動性の高いミーム・ペア プールはリライアブルに処理するために 3～5% が必要なことが多いです。
2. **トレードサイズ**。大きなトレードはより大きなプライス・インパクトを持つため、リバージョンを避けるために許容度をスケーリングする必要があります。このため SDK の自動スリッページデフォルトは `max(0.5%, 2 × price_impact)` 前後です。
3. **ブロック包含レイテンシー**。メモリプールに複数ブロック保持されるトランザクションは、より多くの並行トレードにさらされます。Jito バンドルと優先度手数料がこれを低減します。

経験則（Raydium UI デフォルト）：

| ペアタイプ                            | デフォルト許容度 |
| -------------------------------- | -------- |
| ステーブル・ステーブル（USDC-USDT、USDC-USDS） | 0.1%     |
| ステーブル・メジャー（USDC-SOL、USDC-BTC）    | 0.5%     |
| メジャー・メジャー（SOL-BTC、SOL-ETH）       | 1%       |
| 変動性高（ミームトークン、流動性低のロングテール）        | 3～5%     |

## AMM タイプ間の違い

### CPMM

プライス・インパクトは滑らかで連続的です（クローズドフォーム `2 · Δin / reserve_in`）。スリッページ許容度はトレードサイズに比例してスケーリングします。

### AMM v4

CPMM と同じカーブ数学ですが、「有効リザーブ」にはプールの OpenBook にポストされたリミット注文が含まれます。実際には以下を意味します：

* 生のボルト残高から見積をとると、リザーブを*過小評価*するため、インパクトを*過大評価*します。
* SDK は `AmmInfo` をフェッチし、`vault + on_book.free + on_book.locked` を合計して正しい値を取得します。
* 古い OpenBook 状態（クランク がブロック）により、見積インパクトがオンチェーンの現実から乖離する可能性があります。アグリゲーターは大きな AMM-v4 トレード前に定期的にプレクランク（パーミッションレス `MonitorStep`）を実行します。

### CLMM

プライス・インパクトは**区分的**です。現在のティック範囲内では、インパクトは `Δin / L` にほぼ線形です。ティック境界を越えることで `L` が離散的に変わり、限界価格に突然の跳びが生じます。スパース人口のティックをいくつか越えるトレードは、`2 · Δin / reserve` の経験則が示唆するより、はるかに高いインパクトを持つことができます。

SDK の CLMM 見積はスワップステップを決定論的に反復し、正確な期待 `amountOut` を返すため、`minAmountOut = amountOut · (1 − slippage)` は正確です。ただし**priceImpact** リターン値は「トレード前スポットとトレード後スポット間のスプレッド」として解釈されるべきで、CLMM では `amount_out` のみを気にするユーザーのスワップ有効スリッページより、はるかに大きくなる可能性があります。

### LaunchLab カーブ

CPMM に似ていますが、非対称カーブ（二次またはバーチャルリザーブ）です。グラデュエーションに向かってカーブが急になるにつれて、後期の買い手のインパクトが加速します。プレバイヤー UI は、買いが 1 トランザクションで `quote_reserve_target` の約 5% 以上カーブをプッシュすることが予想される場合は警告するべきです。

## MEV の考慮事項

Solana では、スワップに対する MEV 抽出は主に**サンドウィッチ攻撃**の形で行われます：ボットはあなたのトランザクション後にトレードするバックラン トランザクション、および前にトレードするフロントラン トランザクションを同じスロットで配置します。あなたのトレードはサンドウィッチなしの場合より悪い価格で実行されます。バックランはこの差を取得します。

軽減策：

1. **タイト `minAmountOut`**。積極的なスリッページバウンドにより、被害トランザクションが大きくサンドウィッチされた場合リバージョンし、資金を保護します（ただしガスが浪費されます）。Solana ではこれが標準実務です。リジェクションは安いです。
2. **Jito バンドル**。Jito を通じてバンドルされたティップで送信することで、中仲介者がトランザクション再注文から除外されます。バンドルはアトミック ブロックとして着地します。
3. **優先度手数料**。高い優先度手数料はトレードが現在のリーダーのブロックに着地する可能性を増加させます。サンドウィッチャーが反応する前です。バンドルより堅牢性は劣りますが、より標準的です。
4. **プライベート RPC**。プライベート RPC（またはバリデーターの直接エンドポイント経由）で送信することで、メモリプール サンドウィッチャーがトランザクションを観察できるウィンドウを減らします。

Raydium SDK はバンドルしません。インテグレーターは通常 Jito をその上に層化します。パターンは [`integration-guides/routing-and-mev`](/ja/integration-guides/routing-and-mev) を参照してください。

## マルチホップ ルートのスリッページ

スワップが複数のプールをルーティングする場合（例：`USDC → SOL → RAY`）、スリッページ許容度はエンドツーエンドだけでなく、ホップごとに適用されるべきです：

```ts theme={null}
// 悪い例：0.5% はエンドでのみ適用されるため、仲介ホップの滑りは 2 番目のホップを失敗させます。
const finalMin = finalAmount * (1 - 0.005);

// より良い例：各ホップは独自のバウンドを適用します。
const hop1Min  = hop1Amount * (1 - 0.005);
const hop2Min  = hop2Amount * (1 - 0.005);
// エンドツーエンドではこれはより厳しい（複合）ですが、アトミックです。ホップのいずれかが低下すれば、トランザクションは早期にリバージョンします。
```

SDK のルーターは `raydium.trade.swap` を呼び出すときに自動的にホップごとのバウンドを適用します。カスタムルーターの場合、パターンを複製してください。

## ユーザーへのレポート

良いスワップ UI のための経験則：

* 期待されるプライス・インパクトとスリッページ許容度を**両方**別々に表示します。
* プライス・インパクトが \~2% を超えるときはハイライトします。「高インパクト」警告。
* プライス・インパクトが許容度を超えるときはハイライトします。トランザクションはほぼ確実にリバージョンします。
* 変動性の高いペアについて、バウンドを緩める「高スリッページ モード」を提供し、より強い警告を表示します。

## ポインター

* [`products/cpmm/math`](/ja/products/cpmm/math)、[`products/amm-v4/math`](/ja/products/amm-v4/math)、[`products/clmm/math`](/ja/products/clmm/math) — プールタイプごとのインパクト導出。
* [`integration-guides/routing-and-mev`](/ja/integration-guides/routing-and-mev) — マルチホップルーティング + MEV 防御。
* [`integration-guides/priority-fee-tuning`](/ja/integration-guides/priority-fee-tuning) — スリッページを減らすための優先度手数料のサイジング。

出典：

* Raydium SDK v2 スリッページ / インパクト実装。
* Solana 上の Flashbots / Jito MEV。
