Slippage и price impact: понятное объяснение

·7 мин. чтения·Автор: SSP Editorial Team
Схема, сравнивающая котировку swap и итоговую цену исполнения после price impact и slippage.

Slippage и price impact: понятное объяснение

Вы видите котировку: 1 ETH за 3 200 USDC. Подтверждаете swap. Через несколько секунд транзакция исполняется — и вы получаете 3 187 USDC вместо ожидаемой суммы. Никто вас не взломал, никто не «переставлял» правила: вы просто столкнулись с двумя самыми непонятыми механиками on-chain торговли — price impact (влиянием на цену) и slippage (отклонением фактической цены от ожидаемой).

В этой статье мы разбираем оба понятия для пользователей самостоятельного хранения. К концу вы будете понимать, почему число, которое вы видели, не всегда совпадает с тем, что вы получаете, что на самом деле делает настройка «slippage tolerance», и как думать о ней при swap из SSP Wallet или из какого-либо dApp.

Почему котировка — это всего лишь котировка

Большинство on-chain swaps не идут через классическую книгу заявок. Они идут через Automated Market Maker (AMM): smart contract, который держит два актива в liquidity pool и оценивает их по формуле. Самая распространённая формула — правило постоянного произведения, обычно записываемое как x * y = k:

  • x — количество токена A в пуле.
  • y — количество токена B.
  • k — константа, которую пул старается сохранять.

Когда вы меняете токен A на токен B, вы нарушаете соотношение x и y. Пул автоматически переоценивает их так, чтобы k оставалось примерно постоянным. Эта переоценка и есть источник price impact.

Котировка — это снимок состояния пула на конкретный момент. К тому моменту, когда ваша транзакция попадёт в блок, пул, как правило, уже изменится: другие swaps его задели, прошли блоки, и ваш собственный трейд вот-вот сдвинет его ещё немного. То число, которое вы видели, не лгало. Оно просто не было обещанием.

Price impact: цена вашего собственного трейда

Price impact — это изменение цены, вызванное исключительно вашим трейдом, при условии, что ничего больше не меняется между котировкой и исполнением. Эта величина механична, предсказуема и полностью определяется глубиной пула.

Мысленный эксперимент. Представьте ETH/USDC пул со 100 ETH и 320 000 USDC. Маржинальная цена — около 3 200 USDC за ETH. Теперь:

  • Меняете 1 ETH. Вы забираете крошечную долю резервов пула. Цена едва сдвигается. Вы получите около 3 200 USDC за вычетом комиссии пула. Price impact мал — может быть, несколько базисных пунктов.
  • Меняете 10 ETH. Вы существенно сместили соотношение. Средняя фактическая цена будет заметно ниже 3 200 USDC за ETH. Price impact уже несколько процентов.
  • Меняете 50 ETH. Вы потребляете треть ликвидности пула. Цена исполнения проваливается. Price impact может достичь десятков процентов.

Урок: больший трейд относительно глубины пула — больше price impact. Удвоив трейд, вы получаете более чем удвоенную стоимость, потому что каждая следующая единица бьёт по всё худшей кривой. Кошельки и агрегаторы обычно показывают это в процентах прямо на экране swap. Всё, что выше нескольких процентов, нужно воспринимать как предупреждение, а не как сноску.

Price impact — это не комиссия в чью-то пользу, а цена того, что вы становитесь своим же контрагентом против кривой.

Slippage: разрыв между котировкой и исполнением

Slippage — это разница между ожидаемой ценой и ценой, по которой ваш swap реально исполнился. Slippage включает в себя price impact, но также и всё остальное, что происходит между моментом, когда вы увидели котировку, и моментом, когда транзакция попадёт on-chain:

  • Другие трейды, бьющие в тот же пул. Любой, кто делает swap в том же блоке или в блоках между вашей котировкой и подтверждением, сдвигает состояние пула.
  • Время между котировкой и исполнением. Даже несколько секунд достаточно для того, чтобы пул сдвинулся — особенно на волатильных активах.
  • Ваш собственный price impact. Как уже сказано: трейд сам по себе сдвигает цену, против которой он будет исполнен.
  • MEV. Searcher’ы могут «обернуть» ваш ожидающий swap своими сделками непосредственно до и после него. Подробнее в статье MEV, frontrunning и sandwich-атаки.

Price impact можно смоделировать. Slippage — то, что произошло по факту.

Настройка slippage tolerance

Поскольку сеть не может гарантировать точную цену между котировкой и исполнением, swap-интерфейсы дают вам выставить slippage tolerance: максимально допустимое отклонение от котируемой цены. Если фактическое исполнение окажется хуже, чем котировка - tolerance, smart contract откатит swap.

Звучит аккуратно, но это реальный компромисс:

  • Слишком низкая. Транзакция откатывается, потому что пул сдвинулся за ваш лимит. Откат всё равно стоит gas — вы платите за неудачную попытку и уходите с пустыми руками. В шумные дни на волатильных активах можно собрать несколько неудачных swaps подряд, прежде чем какой-то пройдёт.
  • Слишком высокая. Транзакция почти гарантированно исполнится — даже там, где MEV-боты намеренно двигают цену против вас. Tolerance в 5% на популярном токене — зелёный свет для sandwich-атак. Вы получите худшую цену, которую ваша tolerance позволяет.

Универсально правильного значения нет. Tolerance 0,1% на глубокой паре стейблкоинов — разумно. Та же цифра на тонкой паре в разгар новостей — гарантированный откат. Прагматичный путь — начать с малого и подстраивать: если swap откатывается, чуть поднимите tolerance; если вас сэндвичат — снизьте её и подумайте о другом маршруте или меньших порциях.

Как это выглядит в SSP

SSP даёт вам два способа делать swap, и они по-разному вас exposуют к slippage:

  • Встроенный агрегатор кошелька (поверхность buy/sell/swap внутри SSP). Агрегатор подбирает маршрут между площадками и показывает вам единственную итоговую котировку выхода. Большая часть slippage уровня маршрута обрабатывается внутри этого процесса; вы подтверждаете или отменяете на основе финального числа. Общий UX этих потоков мы разобрали в материале swap криптовалют из SSP.
  • Swap в dApp через WalletConnect. Когда вы подключаете SSP напрямую к какому-то DEX, swap-интерфейс принадлежит этому dApp — включая настройку slippage tolerance. Вы задаёте число, вы и расплачиваетесь за последствия. SSP только сопоставляет подпись к транзакции, которую запрашивает dApp, после того как вы одобряете её в расширении и подтверждаете на SSP Key. Внимательно читайте экран swap в dApp.

Природа 2-of-2 multisig SSP не меняет математику AMM, но означает, что каждый swap требует подтверждения на двух устройствах. Это добавляет несколько секунд между «я нажал подтвердить» и «tx ушла в mempool» — ещё одна причина, по которой котировка и финальное исполнение не всегда совпадают.

Практические советы

Короткий чек-лист, который работает на большинстве сетей и DEX:

  1. Тестируйте сначала мелкой суммой. Прежде чем swap-нуть крупную позицию, прогоните маленькую сумму по тому же маршруту. Если price impact уже тревожит на маленьком трейде, на крупном будет намного хуже.
  2. Смотрите на процент price impact. Если кошелёк его показывает, всё, что выше 1–2% для трейдов обычного размера, — красный флаг. Агрегаторы и более глубокие пулы обычно это решают.
  3. Смотрите на итоговую стоимость, а не только на курс. Комиссии gas в Ethereum — это дополнительная стоимость сверх price impact и slippage. Механика комиссий разобрана в материале комиссии gas в Ethereum для пользователей самостоятельного хранения. EIP-1559 означает, что комиссия может измениться между моментом подписи и моментом, когда блок появится, — ещё одна причина, по которой «цена поехала, пока я подтверждал».
  4. Предпочитайте глубокие пулы. Ликвидность — друг price impact. Пара с $50 млн ликвидности впитывает ваш трейд гораздо лучше, чем пара с $500k.
  5. Tolerance ставьте осознанно. Не принимайте дефолт вслепую. Не накручивайте её до 5% только ради того, чтобы провалившийся swap прошёл, — этот провал часто что-то вам говорит.
  6. Если вас сэндвичат раз за разом — меняйте маршрут. Меньшие порции, другой агрегатор или MEV-aware RPC могут изменить результат.

Главное

Price impact — это неизбежная математика торговли против пула: он растёт с размером трейда и уменьшается с ликвидностью. Slippage — это сырая реальность исполнения в публичном mempool, где другие транзакции, время и ваш собственный трейд двигают цену. Ваш slippage tolerance — это рычаг, который решает, что вероятнее: откат вашей tx или то, что её сэндвичат. Используйте его осознанно.

Когда вы делаете swap в SSP, одна и та же физика работает и через встроенный агрегатор, и через dApp по WalletConnect. Разница в том, кто задаёт tolerance — и, поняв, что именно вы задаёте, вы можете спокойно держать оба варианта в арсенале.

Дополнительное чтение

Поделиться статьёй

Похожие статьи