この記事から分かること
- プライスインパクトとは
- Price impact too highの対策
- スリッページとは
- スリッページの対策
※本記事へのコメント・質問等は私のX(旧ツイッター)にDMで送っていただいても大丈夫です。丁寧に回答させていただきます。
「Price impact(プライスインパクト)」とは、分散型取引所においてあなた自身の取引が市場価格にどのくらいの影響を与えるかを示す指標のことで、このパーセンテージ分だけ不利な価格で取引する必要があります。
流動性が少ない状況で大量のスワップを行うと発生します。
「Slippage(スリッページ)」とは、分散型取引所であなたが注文してから実際に取引が処理されるまでに発生する、市場全体による価格変化のことを指します。
膨大な取引が発生する中であなたの取引がどのような順番で処理されるかは「ブロックチェーン」の仕組みや「バリデーター(シーケンサー)」が決めます。
従って、あなたが注文を行った時点から実際に取引が処理されるまで、必ず多くの取引が前に割り込むことになるため、市場全体の価格変化の影響を受けてしまいます。
これは多くの分散型取引所で採用されている共通の仕組みです。
本記事を読むことで分散型取引所のプライスインパクトとスリッページが発生する原因・仕組みと押さえておくべき注意点が分かります。
この記事は以下の公式文献を参考に作成しています。
本記事でご紹介している内容では、多くの分散型取引所が採用するUniswapV2の「Price Impact」と「Slippage」の概要・仕組みです。
プライスインパクト(Price Impact)とは
プライスインパクトが大きく発生すると「価格影響が大きすぎます」や「Price impact too high」が表示され、仮想通貨のスワップが行えなくなります。
「Price impact too high」とは、分散型取引所の流動性プール内の仮想通貨の枚数に対してあなたの取引量が大きいため、価格が大きく変わってしまい取引すべきではない状態になっていることを指します。
コインチェックやバイナンスといった中央集権取引所(CEX)で例えると、出されている売り注文が少ないにも関わらず、あなたが大量に買い注文を出したため、価格が大きく上がるイメージです。
プライスインパクトが発生する仕組み
分散型取引所は、スワップが画面で表示されている価格で必ずしも取引できるとは限りません。
その1つの要因がPrice Impact(プライスインパクト、価格影響)です。何故Price Impactが発生するのか解説していきます。
分散型取引所の仮想通貨の価格は、板取引のように人間が出した注文価格では決まりません。
流動性プールの中の仮想通貨枚数の単純な割り算で機械的に価格は決まります。(これをAMM, Automated Market Makersと呼びます)
それぞれの流動性プール毎に仮想通貨の価格は決まっています。
あなたの取引によって流動性プール内の仮想通貨の枚数が変わることで、流動性プールの価格も変わります。
流動性プール内のそれぞれの仮想通貨の枚数をX,Yとすると、あなたのスワップによってXとYは次の式に従って変化するようにプログラムされています。
\(XY=k\)
※最も一般的なUniswap V2タイプの場合の式
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枚減った0.4枚となっており、この減った0.1枚分がPrice Impactの影響です。
このように、スワップによって流動性プールの中の仮想通貨の枚数はXY=kに従って変わり、あなたが受け取れる仮想通貨の枚数は流動性プールの変化の差分になります。
今回はプライスインパクトが発生しやすいように流動性プールの中の枚数を少なくしましたが、実際には流動性プールの中には膨大な枚数の仮想通貨が提供されているため、ここまで激しく起きません。
特に今回例に挙げたビットコインとステーブルコインといったスワップで利用されやすい流動性プールでは、提供した側に発生する報酬の総量も多くなるので、自然と多くの流動性が集まります。
今度は上の画像に挙げたような流動性の総量が大きい流動性プールをイメージしてみましょう。
- 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だから、Price Impact抜きで考えると、半分の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 too high」と表示されてスワップが制限されます。
流動性プールが枯渇しないようにし、利用者が大きく損することを事前に防ぐ目的です。
【補足】ステーブルコイン同士のスワップは例外
本記事で紹介したXY=kですが、ステーブルコイン同士のスワップでは例外的なルールを設けている分散型取引所がほとんどです。(USDTとUSDT、USDTとBUSDなど)
ステーブルコイン同士は価値が等しいため、XY=kに従ってプライスインパクトが発生して価格が変化すると実態と乖離してしまうからです。
そこで多くの分散型取引所では特別に「StableSwap AMM」を採用しています。
StableSwap AMMでは著しく流動性プール内の枚数に変化が起きない限り、プライスインパクトほぼゼロで同じ枚数同士でスワップされるAMMです。
下の記事で仕組みと概要を詳しく解説しています。
次にプライスインパクトの対策について、次の2つのケースに分けて解説します。
要注意ケース①:流動性プールが少ない
流動性プールの中の仮想通貨が少ない場合、Price Impactが発生しやすくなります。
特に上場したばかりの「ミームコイン」のようなマイナーな仮想通貨は流動性プールの中身が少ないです。
プライスインパクトを抑える方法は、次の3つです。
- 流動性が多い他の分散型取引所を見つける
- 他の流動性プールと組み合わせてスワップ
- 中央集権取引所で探す
利用している分散型取引所の流動性が偶然少ない可能性があるため、まずは他の分散型取引所の流動性プールも確認しましょう。
多い方を利用したり、組み合わせたりしてスワップすることでプライスインパクトを抑えられます。
例えば、「Dexscreener」と呼ばれるツールを利用すると全分散型取引所の流動性を一覧で表示し、どこの取引所の流動性が一番多いか確認できます。
プライスインパクトが発生しない流動性プールがない場合は、中央集権取引所で取り扱いがないか探しましょう。
要注意ケース②:あなたの取引量が大きい
取引量が多い場合もプライスインパクトが発生しやすくなります。
プライスインパクトを抑える方法はこちらも同様です。
- 流動性が多い他の分散型取引所を見つける
- 他の流動性プールと組み合わせてスワップ
- 板が厚い中央集権取引所を探す
特に流動性プールに対して膨大な量のスワップをする場合、可能な限り流動性プールを分散させるのがポイントです。
一か所でスワップすると損をする可能性が高いです。
スリッページ(Slippage)とは
「スリッページ(Slippage)」とは、取引が成立するまでに発生する市場全体による価格変化です。
プライスインパクトがあなた自身が引き起こす価格変化であることに対し、スリッページはあなた以外の取引によって発生します。
スワップが実行されるまで価格は動く
あなたが注文を出してから実際にスワップ取引が実行されるまでには、時間があります。
サーバーを経由する時間やブロックチェーンで実際に処理されるまでの時間です。
膨大な取引が発生する中であなたの取引がどのような順番で処理されるかは「ブロックチェーン」の仕組みや「バリデーター(シーケンサー)」が決めます。
したがって、あなたが注文を行った時点から実際に取引が処理されるまで、必ずいくつかの取引が割り込みます。
他の人の取引により価格が変化した場合、変化後の価格であなたの取引は処理されることになり、これによる価格変化のことを「Slippage(スリッページ)」と呼びます。
スリッページは許容するパーセンテージを事前に設定することができ、許容パーセンテージを超えるスリッページが発生した場合、取引が自動でキャンセルされる仕組みになっています。
許容し過ぎると不利な価格で取引することになり、許容しなさ過ぎると取引が失敗してガス代が無駄になります。
オススメの許容スリッページ設定とは
結論、次の2パターンで分けて許容スリッページを設定してキャンセルされた場合に都度調整するのがオススメです。
- BTC&USDT等の価格が安定しているプール:0.5%前後
- マイナーな仮想通貨で流動性が少ないプール:5%前後
スリッページは流動性プールが少なく、取引量が多い場合に発生しやすいです。
「ミームコイン」や「ブロックチェーンゲーム」関係のプロジェクト等は、特に最初は流動性プールが運営や投資家から十分に用意されていないケースがあります。
この状態で仮想通貨の売り買いが流動性プールで大量に発生すると、スリッページが発生しやすくなります。
スリッページが発生しやすい通貨のスワップでは、まず5%ぐらいで様子を見るのがオススメです。
スワップがキャンセルされたら焦らずに設定した許容スリッページを見直すようにしましょう。
スリッページ設定のメリット/デメリット
許容スリッページ設定のメリット・デメリットは次の通りです。
- 取引が成功しやすい
- ガス代の無駄払いが減る
- 不利な価格でスワップされる可能性がある
高くし過ぎると不利な価格でスワップが成立してしまう可能性があるため、マイナーな仮想通貨のスワップでなければ初期設定のままにしておきましょう。
- 取引が失敗しやすい
- ガス代の無駄に発生する
- 適正なスワップ価格で取引しやすい
低くすると適正価格でスワップしやすくなりますが、取引が失敗しやすくガス代が無駄になる可能性があるため、初期設定以上に下げることはおすすめしません。
Price ImpactとSlippageの違い
Price ImpactとSlippageの違いは、分散型取引所Uniswapの公式記事でも取り上げられています。
Price Impact and Price Slippage are two common terms used to describe the outcome of a change in price when swapping cryptocurrency.
It is important to note that these terms do not mean the same thing.
Price impact is the change in token price caused by your own trade, while price slippage is the change in token price caused by the total movement of the market.
UNISWAP HELP CENTER「Price Impact vs Price Slippage」
Price ImpactとSlippageは同じ意味を持つ訳ではなく、Price Impactはあなた自身の取引によって引き起こされるトークン価格の変化を指し、Slippageは市場全体の現在の動きによって引き起こされるトークン価格の変化である旨が書かれています。
Slippageがあなた自身の取引を含む市場全体の取引による価格変化の影響を指す一方、Price Impactはあなたのみの取引による価格変化を指す点がポイントです。
この記事は以下のUniswapの公式文献を参考に作成しました。
コメント