Когда вы входите и выходите из позиции на фьючерсах (фьючах) с крупным размером, превышающим доступную ликвидность в стакане (order book), это вызывает значительное влияние на рынок. Это называется “market impact” или “воздействие на рынок”, и ключевой эффект — slippage (проскальзывание), когда ордер исполняется по худшей цене, чем ожидалось, из-за “выкупа” (sweeping) нескольких уровней стакана. В неликвидных рынках (с низкой глубиной стакана) это особенно заметно: цена может резко сдвинуться, а объемы ликвидности быстро исчерпаются.
Я смоделирую это на основе простого симулятора стакана, используя Python (результаты из инструмента code_execution). Предположим, текущая цена — 100.0 (best bid/ask). Стакан асков (продаж) для покупки и бидов (покупок) для продажи симметричный. Я рассмотрю два сценария: нормальную ликвидность (общий объем 800) и неликвид (общий объем 80). Ордер — маркет (немедленное исполнение), крупный бай (вход в лонг) или селл (выход).
Симуляция входа в позицию (крупный бай-маркет ордер)
При покупке крупного размера вы “выкупаете” аски сверху вниз, начиная с лучшей цены. Если размер > ликвидности на уровне, ордер переходит на следующий уровень, сдвигая цену вверх. Объемы убираются пропорционально заполнению.
Нормальная ликвидность (глубокий стакан: уровни 100@100.0, 200@100.1, 150@100.2, 50@100.3, 300@100.4):
| Размер позиции | Исполнено | Средняя цена исполнения | Финальная цена (где остановилась) | Уровни выкуплено | Объемы убрано (по уровням) |
| 50 | 50 | 100.00 | 100.0 | 1 | [50] |
| 200 | 200 | 100.05 | 100.1 | 2 | [100, 100] |
| 500 | 500 | 100.13 | 100.3 | 4 | [100, 200, 150, 50] |
| 800 | 800 | 100.23 | 100.4 | 5 | [100, 200, 150, 50, 300] |
- Что меняется от объема: Малый размер (50) — минимальный impact, цена не двигается, убирается только часть первого уровня. Крупный (500+) — выкупает 4+ уровня, цена растет на 0.3-0.4 пункта, slippage растет (средняя цена хуже ожидаемой 100.0). При 800 цена останавливается на последнем уровне (100.4), весь стакан опустошен.
- Реакция цены: Цена сразу прыгает к уровню, где закончилось исполнение (финальная цена). Это временный impact: цена может частично откатиться, если маркетмейкеры пополнят ликвидность.
Неликвидный рынок (浅кий стакан: 10@100.0, 20@100.1, 15@100.2, 5@100.3, 30@100.4):
| Размер позиции | Исполнено | Средняя цена исполнения | Финальная цена (где остановилась) | Уровни выкуплено | Объемы убрано (по уровням) |
| 50 | 50 | 100.13 | 100.3 | 4 | [10, 20, 15, 5] |
| 200 | 80 | 100.23 | 100.4 | 5 | [10, 20, 15, 5, 30] |
| 500 | 80 | 100.23 | 100.4 | 5 | [10, 20, 15, 5, 30] |
| 800 | 80 | 100.23 | 100.4 | 5 | [10, 20, 15, 5, 30] |
- Выкуп 2-3 уровней в неликвиде: Для размера 45-50 выкупаете 3-4 уровня (например, 10+20+15=45, цена до 100.2). Объемы убираются полностью на этих уровнях. Если размер > общей ликвидности (80), ордер исполняется частично, цена останавливается на максимуме (100.4), стакан пустой — рынок “замерзает” до пополнения.
- Влияние на рынок: В неликвиде даже средний размер (50) вызывает сильный slippage (цена +0.3), выкупает 4 уровня. Цена останавливается на уровне, где ликвидность кончилась, и может “застрять” там, если нет новых ордеров. Это приводит к волатильности: спред расширяется, торговля замедляется.
Симуляция выхода из позиции (крупный селл-маркет ордер)
После входа (цена выросла, скажем, до 100.3), выход — селл, выкупающий биды вниз. Цена падает.
Нормальная ликвидность (биды: 100@99.9, 200@99.8, etc.):
| Размер позиции | Исполнено | Средняя цена исполнения | Финальная цена (где остановилась) | Уровни выкуплено | Объемы убрано (по уровням) |
| 50 | 50 | 99.90 | 99.9 | 1 | [50] |
| 200 | 200 | 99.85 | 99.8 | 2 | [100, 100] |
| 500 | 500 | 99.77 | 99.6 | 4 | [100, 200, 150, 50] |
| 800 | 800 | 99.67 | 99.5 | 5 | [100, 200, 150, 50, 300] |
- Реакция после закрытия: Цена падает к финальному уровню (например, с 100.3 до 99.6 для 500). Если вход/выход быстрый, цена может вернуться ближе к исходной (99.9-100.0), но с потерями на slippage. Общий impact зависит от объема: крупнее — больше сдвиг.
Неликвид:
| Размер позиции | Исполнено | Средняя цена исполнения | Финальная цена (где остановилась) | Уровни выкуплено | Объемы убрано (по уровням) |
| 50 | 50 | 99.77 | 99.6 | 4 | [10, 20, 15, 5] |
| 200 | 80 | 99.67 | 99.5 | 5 | [10, 20, 15, 5, 30] |
| 500 | 80 | 99.67 | 99.5 | 5 | [10, 20, 15, 5, 30] |
| 800 | 80 | 99.67 | 99.5 | 5 | [10, 20, 15, 5, 30] |
- В неликвиде выход даже 50 вызывает падение на 0.4 пункта, выкупает 4 уровня.
Реакция алгоритмов и маркетмейкеров (MM)
Маркетмейкеры: Они предоставляют ликвидность, зарабатывая на спреде. При крупном ордере MM могут:
- Расширить спред (увеличить разницу bid/ask), чтобы защититься от убытков.
- Пулл квоты (убрать ордера), если видят “токсичный флоу” (крупный агрессивный ордер), — цена “улетает” дальше.
- Пополнить стакан после sweep: добавляют новые ордера на новых уровнях, помогая цене стабилизироваться. В неликвиде это медленнее, цена может “висеть” на экстремальных уровнях.
Алгоритмы (HFT, алго-трейдеры): Реагируют за миллисекунды.
- Фронт-раннинг: Если алгоритм “учуял” крупный ордер (по паттерну), может купить впереди и продать вам дороже, усиливая slippage.
- Моментум-трейдинг: Алго присоединяются к движению (покупают после вашего бая, толкая цену выше), или фейд (продают против, ожидая отката).
- В неликвиде алго осторожны: избегают, если риски высоки, или “грабят ликвидность” (liquidity grabs) — провоцируют стопы/ордера на уровнях, чтобы заполнить свои позиции.
- Общий эффект: Увеличивают волатильность, но могут добавить ликвидность, если видят профит.
Как действует “крупняк” (whales, институционалы)
Крупные игроки редко кидают полный размер маркетом — это дорого из-за impact. Вместо:
- Разбивают на мелкие (child orders) с помощью алго (TWAP/VWAP — time/volume weighted average price), чтобы минимизировать slippage.
- Используют iceberg orders (скрытые, показывают только часть).
- Ищут “темные пулы” или OTC для крупных сделок без публичного стакана.
- В неликвиде: Ждут накопления ликвидности или провоцируют (например, мелкими ордерами “тестируют” стакан).
- Цель: Минимизировать permanent impact (долгосрочный сдвиг цены) и temporary (временный). По моделям (Almgren-Chriss), impact ~ sqrt(размера), но в реальности тяжелее в неликвиде.
В реальности impact зависит от рынка (crypto фьючи более неликвидны, чем CME), времени (волатильность) и других трейдеров. Это упрощенная модель — в живом рынке добавляются случайные ордера. Если нужно углубить симуляцию (добавить MM-реакцию), дай знать!