同じ10ETHを買うにしても、どのルートで執行するかによって最終的な取得単価は大きく変わります。本稿は“スリッページ予算(Slippage Budget)”という考え方で、AMM・オーダーブック・RFQを横断し、手数料・ガス・MEV影響まで含む実効コストを最小化する実務手順を解説します。再現可能な数式と手順・チェックリストを用意し、初心者でも今日から実装できます。
1. 実効コスト(Effective Trading Cost)の分解
実効コストとは、表示価格だけでなく取引に付随する全コストを加味した真の取得単価です。買いの場合の実効単価 EPU(Effective Purchase Unit)は次で定義します。
EPU = (Notional + Fees + Gas + Funding +/- PriceImpact +/- MEVImpact) / Quantity
各項目は以下の通りです。
- Fees:CEXのテイカー/メーカー手数料、DEXプール手数料(例:0.05%)。
- Gas:オンチェーン実行のガス代(ETH建て→基軸通貨換算)。
- Funding:パーペチュアルで保有中に発生する資金調達コスト(建玉ホールド時のみ)。
- PriceImpact:板の厚みやAMM曲線による価格滑り。
- MEVImpact:サンドイッチ等でオーダーが悪化する潜在的影響(RFQ/シールド取引で低減)。
2. AMMの価格影響を瞬時に見積もる
定数積型AMM(x*y=k)で、トークンXをqだけ買うときの滑りはプール準備金Xに対してqがどれだけ大きいかで決まります。小さい取引では近似的に次が使えます。
相対価格影響 ≈ q / X (q ≪ X のとき)
正確には、約定後の価格は p' = (Y - ΔY) / (X + q)
で、ΔY
は曲線上で求まります。実務では、「q/X が 0.1% を超えたら分割」のように閾値で自動分割(TWAP/VWAP)すると過度な滑りを防げます。
3. オーダーブックの深さを“コスト曲線”に変換する
CEXの板では、上から順に食っていくと数量ごとに平均約定単価が上がります。板の各レベル(価格、数量)を統合し、数量→平均約定単価の関数(コスト曲線)に変換すれば、AMMとの定量比較が可能です。
実務Tip:板の厚いステーブルコイン建て(USDT/USDC)、日中の流動性ピーク時間を選ぶと平均約定単価が安定します。
4. RFQ/インテント系(CoW Swap・1inch Fusion)を混ぜる理由
メタトランザクションやインテント方式では、ソルバーが最適ルートで約定を肩代わりし、MEV耐性と一括見積りのメリットが得られます。大口一発より、「RFQで半分+AMMでTWAP分割」のようなハイブリッドが効く場面が多いです。
5. スリッページ予算(Tolerance)を“固定%”から“動的%”へ
従来の固定スリッページ許容(例:0.5%)は、相場のボラ・プール深度・ガス混雑に鈍感です。推奨は以下の動的設計です。
SlippageTolerance = max(基準値, f(ボラ, q/X, 直近失敗率, ガス混雑))
基準値は0.2〜0.5%程度、q/Xや失敗率が上がれば許容幅を自動で広げ、取りこぼし(失効)を減らします。RFQなら許容幅は小さく設定可能です。
6. ケーススタディ:10 ETHを最安で買う
前提(仮数値):
- スポット基準価格:ETH = 3,000 USDC
- 目標数量:10 ETH(想定ノーション 30,000 USDC)
- ルートA(CEXテイカー):手数料0.10%、板食いで平均+0.05%
- ルートB(DEX AMM 0.05%):q/Xに基づく滑り0.15%、ガス6 USDC相当
- ルートC(RFQ CoW):見積り価格+0.06%、手数料込み、MEV影響ほぼゼロ
各ルートの実効単価を計算します(Fundingはスポットなので0)。
数量 = 10 ETH
基準ノーション = 3,000 × 10 = 30,000 USDC
A:CEX
Fees = 30,000 × 0.001 = 30
PriceImpact ≈ 30,000 × 0.0005 = 15
Gas = 0
EPU_A = (30,000 + 30 + 15) / 10 = 3,004.5 USDC/ETH
B:DEX(AMM 0.05%)
Fees = 30,000 × 0.0005 = 15
PriceImpact ≈ 30,000 × 0.0015 = 45
Gas ≈ 6
EPU_B = (30,000 + 15 + 45 + 6) / 10 = 3,006.6 USDC/ETH
C:RFQ(CoW)
見積り上乗せ ≈ 30,000 × 0.0006 = 18
手数料・ガス込み(見積り内包)と仮定
EPU_C = (30,000 + 18) / 10 = 3,001.8 USDC/ETH
この仮条件では RFQ(C)が最安です。ただし、AMMは分割すれば滑りが逓減します。例えば5ETH×2回のTWAPにすると、BのPriceImpactは概ね半減し、
EPU_B_TWAP ≈ (30,000 + 15 + 22.5 + 6) / 10 = 3,003.45
結果は RFQ単発(C)≈ 3,001.8、AMM分割(B_TWAP)≈ 3,003.45、CEX(A)≈ 3,004.5。このように、「RFQ中心+AMM分割のハイブリッド」が多くの場面で優位になりやすいことが分かります。
7. 実装レシピ(チェックリスト)
前準備
(1)対象ペアのCEX板厚・手数料テーブル、主要DEXのプール深度と手数料、RFQ見積もり可否をメモ化。(2)自分の基軸通貨でのガス換算(ETH→USDC等)をスプレッドシート化。(3)許容できるスリッページ予算を金額ベースでも定義(例:今回の取引で許容できる追加コストは最大20 USDC)。
執行手順
- RFQ(CoW/1inch Fusion等)で固定見積りを取得。
- 同時にAMMでq/X閾値に基づき分割プランを作成(例:5ETH×2回、3分間隔)。
- CEXの板を確認し、平均約定単価の推定を更新。
- 3ルートのEPUを瞬時計算し、最小EPUを選択。
- ガス急騰や失敗率上昇時は、許容幅と分割間隔を自動調整。
- 約定後に実績EPUを記録し、次回の閾値・分割ロジックを学習更新。
8. どこで“やられる”か(失敗パターン)
- 小口の一発決済:AMMでq/Xが小さいのに固定0.5%許容→過大スリッページで損。
- ガス見落とし:ガスが高止まりの日に小分割しすぎて総ガスが肥大化。
- MEV被弾:公開メンプールに大口を流し、前後にサンドイッチ。RFQ/プライベートルートで回避。
- 板薄時間の強行:CEX夜間や週末の板薄でテイカー約定が割高化。
9. スリッページで“稼ぐ”側に回る(応用)
流動性提供(LP)では、他者のスリッページがあなたの手数料収入源です。短期イベント前後のボラ高・流動性薄で適切な手数料ティアのプールに提供すれば、表面利回りが上振れします。ただし、インパーマネントロスと価格偏移を常に観測し、必要ならデルタヘッジを検討してください。
10. ミニ実装(数式と擬似コード)
// 入力: q(数量), price(基準価格), fee_rate, gas_cost, q_over_X, rfq_uplift, book_impact
EPU_cex = (price*q + price*q*fee_rate + price*q*book_impact) / q
EPU_amm = (price*q + price*q*0.0005 + price*q*(q_over_X*1.5) + gas_cost) / q // 例
EPU_rfq = (price*q + price*q*rfq_uplift) / q
best = min(EPU_cex, EPU_amm, EPU_rfq)
実運用では、q_over_Xの推定と分割最適化(TWAP)が鍵になります。
11. まとめ
「どこで買うか」ではなく「総コストが最小になる買い方」を選ぶのが肝です。RFQでMEVを抑え、AMMは分割、CEXは板厚時間帯を狙う——この三点をEPUという共通指標で評価すれば、余計な“見えないコスト”を削ってパフォーマンスを一段押し上げられます。
コメント