- 「Price impact too high」とは?
- 「Price impact too high」の原因と対策
- 「Slippage(スリッページ)」とは?
- 「Slippage(スリッページ)」の原因と対策
分散型取引所でスワップを行うと次の2つの要因で困ることがあります。
- 「Price impact too high」と表示されてスワップできない
- 「Slippage(スリッページ)」が設定できるがよく分からない

「Price impact too high」とは、流動性プール内の仮想通貨の枚数に対してあなたの取引量が大きいため、価格が大きく変わってしまい取引すべきではない状態になっていることを指します。
「Slippage(スリッページ)」とは、あなたが取引の注文を出してから実際に取引が実行されるまでの時間に発生したあなた以外の取引による価格変化のことを指します。
Price impactとSlippageは分散型取引所を支える根っこの仕組みとなっており、理解していないとスワップで大きく損することにも繋がります。
この記事を読むことで、Price ImpactとSlippageの仕組みと押さえておくべき注意点が分かります。

分散型取引所を始めたばかり、難しいことは苦手!という方でも理解できる内容になっているので、よく分からずモヤモヤしたまま利用したくないという方は是非最後までご覧下さい!
この記事は以下の公式文献を参考に作成しています。
本記事でご紹介している内容では、分散型取引所UniswapのV2と呼ばれるバーションの「Price Impact」と「Slippage」の概要・仕組みです。
多くの分散型取引所で採用されている仕組みですが、特にPrice Impactの計算方法は新ルールのV3とは少し異なっているので、その点だけご了承ください。



基本的な考え方・注意点は同じです!
Price impact too highは大きい取引で発生


「Price impact too high」とは、分散型取引所の流動性プール内の仮想通貨の枚数に対してあなたの取引量が大きいため、価格が大きく変わってしまい取引すべきではない状態になっていることを指します。
コインチェックやバイナンスといった中央集権取引所(CEX)で例えると、出されている売り注文が少ないにも関わらず、あなたが大量に買い注文を出したため、価格が上がり過ぎてしまうようなイメージです。
価格影響が大きいと表示価格で取引不可
分散型取引所はスワップが画面で表示されている価格で必ずしも取引できるとは限りません。



その1つの要因がPrice Impact(プライスインパクト、価格影響)です。何故Price Impactが発生するのか分かりやすく説明していきます!
分散型取引所で購入する仮想通貨の価格は、板取引のように人間が出した注文価格によって決まっている訳ではありません。
流動性プールの中の仮想通貨枚数の単純な割り算で機械的に価格は決まります。(これをAMM,Automated Market Makersと呼びます)
そして、それぞれの流動性プール毎に仮想通貨の価格は決まっています。


あなたの取引によって流動性プール内の仮想通貨の枚数が変わることで、この流動性プールの価格も変わります。
流動性プール内のそれぞれの仮想通貨の枚数をX,Yとすると、あなたのスワップによってXとYは次の式に従って変化するようにプログラムされています。
\(XY=k\)
kの値は流動性プールに提供されている仮想通貨の枚数の掛け算で、新しく流動性プールに追加で仮想通貨が提供されるまで変わりません。(スワップでも変わらず、流動性プールに提供された/解除された時のみ再計算)
XとYの掛け算であるkで流動性プール内の仮想通貨の枚数の変化の仕方が決まるので、Constant Product AMMと呼ばれることがあります。(直訳すると定積によるAMM)



具体的な例を挙げてイメージしてみましょう!
分散型取引所に次のような流動性プールがありました。
- USDT=40,000枚(USDTの流動性枚数をX)
- BTC=2枚(BTCの流動性枚数をY)
- AMM:XY=80,000
ビットコインの価格は1枚20,000USDTになりますね。(40,000÷2)
kである80,000の値はずっと変わりません。(実際には流動性が追加で提供されたり解除されたりすると変わりますが、今回の例では追加で提供しないので変わりません。)
あなたはこの流動性プールで10,000USDTを使ってビットコインを購入しました。



今ビットコインは1枚20,000USDTだから、10,000USDTを使って半分の0.5BTC分はこのスワップで買いたいよね・・・
この時、あなたのスワップによって流動性プール内のそれぞれの仮想通貨の枚数はXY=kに従って次のように変わります。
- まず変化後のXをAMMの式に入れる:(40,000+10,000)Y=80,000
- Yを計算する:Y=80,000÷50,000=1.6
あなたが10,000USDTを流動性プールに入れてスワップしようとすることでXは50,000になり、それに対応するようにYが定まることがポイントです。
Y=1.6になり、スワップ前に流動性プールの中に元々あったBTC2枚との差分0.4枚があなた受け取れるビットコインです。



0.5枚受け取れると思ったんだけど、0.1枚減ってる!これがPrice Impactだね!


このようにあなたのスワップによって、流動性プールの中の仮想通貨の枚数はXY=kに従って変わり、あなたが受け取れる仮想通貨の枚数は流動性プールの変化の差分になります。



じゃあ分散型取引所ってすごい損する仕組みじゃない?もう使いたくないんだけど・・・
今回はPrice Impactが発生しやすいように流動性プールの中の枚数を少なくしましたが、実際には流動性プールの中にはもっとたくさんの仮想通貨が提供されていてPrice Impactはここまで激しく起きません。
特に今回例に挙げたビットコインとステーブルコインといった取引量が多い流動性プールでは、提供した側に発生する報酬の総量も多くなるので、たくさんの流動性が自然と集まります。





今度は上の画像に挙げたような総量がとても大きい流動性プールをイメージしてみましょう!
- USDT=20,000,000枚(USDTの流動性枚数をX)
- BTC=1000枚(BTCの流動性枚数をY)
- AMM:XY=20,000,000,000
ビットコインの価格は同じように1枚20,000USDTになりますね。(20,000,000÷1000)
kである20,000,000,000値はずっと変わりません。
あなたはこの流動性プールで10,000USDTを使ってビットコインを購入しました。



今ビットコインは1枚20,000USDTだから、今度こそ半分の0.5枚分はこのスワップで買いたい・・・!
この時、流動性プール内のそれぞれの仮想通貨の枚数はXY=kに従って次のように変わります。
- 変化後のXを式に入れる:(20.000,000+10,000)Y=20,000,000,000
- Yを計算する:Y=20,000,000,000÷20,010,000=999.5002…
Yの値はほぼ999.5になり、スワップ前に流動性プールの中にあったBTC1000枚との差分0.5枚があなた受け取れるビットコインです。



今度はほとんどPrice Impactが起きてないね!
Price Impactが発生しなかった理由は、あなたの10,000USDTのスワップが流動性プールに対して十分に小さく、価格へ影響(Price Impact)を及ぼすことにならないからです。
このように、XYを掛けたkの大きさ(流動性プールの大きさ)でプール内の仮想通貨のスワップ効率に違いが出てくることが分かります。
- XY=kが小さい(流動性プールが少ない):Price Impactが起きやすい
- XY=kが大きい(流動性プールが大きい):Price Impactが起きにくい



下のグラフを見るとイメージがしやすいですね。XY=80000とXY=2000000の比較です!


このようにXY=kの値が大きいとき、Price Impactが起きにくいという結論を数学的に考えてみましょう。



もっと理論的に知りたい方はご覧下さい!
先程と同じように以下の流動性プールをイメージしてみます。
- USDT=20,000,000枚(USDTの流動性枚数をX)
- BTC=1000枚(BTCの流動性枚数をY)
- AMM:XY=20,000,000,000
このとき、あなたが10000USDTをBTCにスワップしようとしても、下のように変化はほとんどグラフ上では表現されません。
10000USDTという取引量が流動性プール全体に対して小さすぎるからです。


そこで、もう少し拡大してみましょう!
拡大すると、下のグラフのようにほとんど直線になっており(右に10000動かすと下に0.5動く直線)、0.5BTC分をスワップで受け取れることが分かります。(Price Impactはほぼなし)


このように、流動性プールが十分大きい場合に少量のスワップを行っても、XとYの動きはグラフ上ではとても小さくなることが分かります。
そして、取引量が流動性プールに対して十分に小さい場合、スワップによる流動性プール内の仮想通貨の枚数の変化の仕方は、現在の流動性プールを表す点の接線の傾きと同じになります。
XY=kのグラフの接線の傾きは、以下のようにXY=kを微分することで求められます。
\(XY=k\)
\(Y=k/X\)
\(Y=kX^{-1}\)
\(Y’=-kX^{-2}\)
\(Y’=-k/X^2\)



今回の例では傾きが-1/20000になりますね。この傾きの動き方は現在の流動性プールの価格と同じです。つまり、流動性プールに対して取引量が小さいとき、現在の価格で取引ができることを意味しています!(Price Impactが発生しない)



なるほど!だから表示価格のまま取引ができたんだね!


ちなみに、このAMMの計算過程で「価格」の考え方は実は一切出てきませんでした。
使った考え方は流動性プールの枚数とXY=kだけです。
しかし、XY=kを使うことで需要が増えると価格が上がって取引しづらくなり、供給が増えると価格が下がって取引しやすくなる「需要と供給の法則」をしっかり表せていることが分かります。
流動性プール(供給)に対してあなたの取引(需要)が大きいと、Price Impactが発生する仕組みになっているからです。



XY=kっていうシンプルな式で需要と供給の法則が表現されているのはすごい・・・!
Price Impactが大きく、スワップした時に大きく損をしてしまう時「Price impact too high」と表示されてスワップが制限されるようになっています。


流動性プールが枯渇しないようにし、利用者が大きく損することを防ぐ目的です。
本記事で紹介したXY=kですが、実はステーブルコイン同士のスワップでは例外的なルールを設けている分散型取引所がほとんどです。(USDTとUSDT、USDTとBUSDなど)
どのステーブルコインもドルや日本円といった法定通貨に連動しているため、分散型取引所だけXY=kに従ってステーブルコイン同士の流動性プールでPrice Impactが発生することはなるべく避けたいからです。



確かにステーブルコイン同士だったらPrice Impactなしでまったく同じ枚数同士でスワップしたいね・・・でもどうすればいいの?
この場合、StableSwap AMMという別のルールが使われます。
StableSwap AMMでは著しく流動性プール内の枚数に変化が起きない限り、同じ枚数同士でスワップされるようになるAMMです。



流動性プールに対してそこそこ大きい取引でもPrice Impactが発生しないように工夫しているということですね!
こちらの記事でStableSwap AMMについて解説しているので、気になる方は是非ご覧ください!
次にPrice Impactを気を付ける必要がある2つのケースとその対策方法を見ていきましょう。
※読みたい所にジャンプできます。
要注意ケース①:流動性プールが少ない
流動性プールの中の仮想通貨が少ない場合、Price Impactが発生しやすいので注意しましょう。
マイナー仮想通貨は流動性プールの中身が少ないことが多いです。
Price Impactを抑える方法は次の3つです。
- 流動性が多い他の分散型取引所を見つける
- 他の分散型取引所の流動性プールと組み合わせてスワップ
- 板が厚い中央集権取引所を探す
普段使いする分散型取引所の流動性だけ偶然少ない可能性もあるため、他の取引所の流動性プールを確認し、多い方を利用したり、組み合わせたりすることでPrice Impactを抑えることができます。



Dexscreenerと呼ばれるツールを利用すると、全分散型取引所の流動性を一覧で表示し、どこの取引所の流動性が一番多いか確認できます!


例えば、本記事で例に挙げたビットコインとUSDTの場合、ほぼ全ての分散型取引所で流動性プールがあります。
Price Impactが発生してしまった場合、他の流動性プールも確認してみましょう。
要注意ケース②:あなたの取引が大きい
あなた個人の取引量が多い場合もPrice Impactが発生しやすいので注意しましょう。
Price Impactを抑える方法はこちらも同様です。
- 流動性が多い他の分散型取引所を見つける
- 他の分散型取引所の流動性プールと組み合わせてスワップ
- 板が厚い中央集権取引所を探す
Slippageは取引実行までの時間差で発生


Slippage(スリッページ)とは、あなたが取引の注文を出してから実際に取引が実行されるまでの時間に発生したあなた以外の取引による価格変化のことです。
スワップが実行されるまで価格は動く
あなたが注文を出してから実際に取引が実行されるまでには時間があります。
サーバーを経由する時間やAMMで実際に処理されるまでの時間です。
その間にあなた以外の取引によって価格が変化した場合、変化後の価格であなたの取引は処理されます。
この価格変化のことをSlippage(スリッページ)と呼びます。
スリッページは許容するパーセンテージを事前に設定することができ、許容パーセンテージを超えるスリッページが発生した場合、取引が自動でキャンセルされる仕組みになっています。



キャンセルされた場合でもガス代は発生してしまうので、設定の仕方が重要です!
オススメの許容スリッページ設定とは
結論、次の2パターンで分けて許容スリッページを設定し、キャンセルされた場合都度調整するのがオススメです。
- BTC&USDTやETH&USDCといった流動性が安定しているプール:0.5%前後
- マイナーな仮想通貨で流動性が少ないプール:5%前後
スリッページは流動性プールが少なく、取引量が多い場合に発生しやすいです。



イメージしやすい例は仮想通貨を稼げるNFTゲーム・ブロックチェーンゲームです。
NFTゲーム・ブロックチェーンゲームで遊んで稼いだ仮想通貨$SLPや$BOMBといった独自の仮想通貨となっており、分散型取引所の流動性プールで他の仮想通貨にスワップする必要があります。
大きなプロジェクトではないことも多く、最初に流動性プールが運営や投資家から十分に用意されていないケースがあります。
この状態で仮想通貨の売り買いが流動性プールで発生すると、大きく流動性プールが変動し、スリッページが発生しやすくなります。
従って、NFTゲーム・ブロックチェーンゲーム発行の仮想通貨は5%~10%の許容スリッページで設定しないとスワップが成功しないことが多いです。
スワップがキャンセルされたら焦らずに設定した許容スリッページを見直すようにしましょう。


Slippageを広くするメリット/デメリット
許容スリッページを広く設定するメリット・デメリットは次の通りです。
- 取引が成功しやすい
- ガス代の無駄払いが減る
- 不利な価格でスワップされる可能性がある
Slippageを狭くするメリット/デメリット
許容スリッページを狭く設定するメリット・デメリットは次の通りです。
- 不利な価格でスワップされなくなる
- 取引が失敗しやすくなる
- ガス代の無駄払いが発生しやすい
まとめ:スワップ見積もりを確認しよう!


分散型取引所でスワップを行うとき、次の2つの要因で表示された価格で取引できない場合があります。
- Price Impact(プライスインパクト)
- Slippage(スリッページ)
Price impactが大きい状態「Price impact too high」は流動性プール内の仮想通貨の枚数に対して、あなたの取引量が大きいために発生する価格変化の影響により、取引すべきではない状態になっていることを指します。
Slippage(スリッページ)とは、あなたが取引の注文を出してから実際に取引が実行されるまでの時間に発生したあなた以外の取引による価格変化のことを指します。



仕組みまで詳しく理解する必要はありませんが、それぞれ次のことは押さえてから分散型取引所を利用しましょう!
スワップ画面の見積もりのPrice Impactを確認して、不利な価格で取引することにならないか確認する。
基本は0.5%前後で設定、マイナーな流動性プールは5%前後で設定する。
どちらも各分散型取引所のスワップ画面で簡単に確認できます。




この記事は以下の公式文献を参考に作成しました。
本記事でご紹介している内容では、分散型取引所UniswapのV2と呼ばれるバーションの「Price Impact」と「Slippage」の概要・仕組みです。
多くの分散型取引所で採用されている仕組みですが、特にPrice Impactの計算方法は新ルールのV3とは少し異なっているので、その点だけご了承ください。



基本的な考え方・注意点は同じです!
コメント