Маркет-мейкинг: инвентарь, skew и нахождение не на той стороне каждой сделки
Маркет-мейкер зарабатывает спред и платит за информацию. Каждое ваше исполнение — это исполнение, которого кто-то хотел, и вся дисциплина сводится к выживанию в этой асимметрии.
Инженеры Vizanix · об авторе
- РАЗДЕЛ
- Механика рынка
- ОПУБЛИКОВАНО
- 2026-08-28
- ГЛАВ
- 6
- ЧИТАТЬ ДАЛЬШЕ
- 3
- ЯЗЫК
- написано на русском
Маркет-мейкинг звучит как арбитраж на комиссиях: котируй обе стороны, забирай спред, повторяй. Причина, по которой это трудно, умещается в одно наблюдение: вы не выбираете, какая сторона исполнится. Выбирает рынок — и выбирает ту сторону, которая вот-вот окажется правой.
Adverse selection и есть бизнес
Ваш бид снимают, когда кто-то хочет продать. Иногда это человек, которому нужна ликвидность, и вы заработали половину спреда. Иногда это человек, который что-то знает, и вы только что купили вершину движения.
В момент исполнения различить нельзя. На множестве исполнений соотношение определяет, работает ли стратегия. Всё нижеследующее — механика для смещения этого соотношения или для выживания, когда оно смещается против вас.
Инвентарь — это переменная состояния
Позиция маркет-мейкера — не мнение, а следствие того, кто с вами торговал. Предоставленная сама себе, она накапливается: падающий рынок раз за разом наливает ваши биды, и вы оказываетесь в лонге в слабость.
Стандартная поправка — skew. По мере роста длинного инвентаря смещайте обе котировки вниз: бид становится менее привлекательным для продавцов, аск — более привлекательным для покупателей, и сам поток ордеров возвращает вас к нулю.
def quotes(mid, spread, inventory, max_inventory, skew_k):
# отношение в [-1, 1]: насколько инвентарь далёк от нуля
r = max(-1.0, min(1.0, inventory / max_inventory))
centre = mid - skew_k * r * spread # длинный инвентарь -> обе котировки вниз
return centre - spread / 2, centre + spread / 2
# Возле лимита вообще перестаём добавлять не на ту сторону.
def sizes(inventory, max_inventory, base):
r = inventory / max_inventory
bid = base * max(0.0, 1.0 - max(0.0, r))
ask = base * max(0.0, 1.0 + min(0.0, r))
return bid, askВторая функция важна не меньше первой. Смещение цены помогает; отказ добавлять объём на сторону, которая уже слишком велика, — вот что реально останавливает накопление.
Расширяйтесь, когда вы неинформированы
Спред — это цена вашей неопределённости. Он не должен быть постоянным:
- Волатильность выше — спред шире. Больше движения за единицу времени означает больший шанс, что середина уйдёт против вас раньше, чем вы переставите котировку.
- Тонкий стакан — спред шире. Меньше глубины означает большее влияние на цену при выходе из инвентаря.
- Возле запланированного события — шире или снять котировки. Стоять узко перед публикацией — значит добровольно подставляться под отбор.
- Устаревшие данные — снять котировки полностью. Если ваше состояние рынка старше порога, вы котируетесь против стакана, которого может уже не быть.
Отмены — узкое место
Котировальный движок тратит основную часть бюджета запросов на amend и cancel, и нужны они ему сильнее всего ровно в тот момент, когда бюджета меньше всего — когда рынок сдвинулся и сорок котировок неверны одновременно.
Пережить это позволяют три вещи, и все три разобраны в лимитах Bybit:
- Батчить. Где площадка поддерживает пакетные отмену и amend — пользуйтесь. Худший момент превращается из сорока запросов в несколько.
- Приоритизировать. Отмены важнее обновления котировок, всегда. Устаревшая котировка, которую нельзя снять, — это обязательство; необновлённая котировка — всего лишь упущенная возможность.
- Котировать меньше уровней. Самый дешёвый способ снизить нагрузку отмен — иметь меньше висящих ордеров. Большинство движков котирует больше глубины, чем оправдывает их преимущество.
Коридор риска должен быть жёстким
Skew — мягкий механизм: он делает неправильную сторону менее вероятной, но не невозможной. За ним должны стоять лимиты, с которыми котировальный цикл не может спорить:
- Абсолютный потолок инвентаря, за которым одна сторона перестаёт котироваться совсем.
- Лимит убытка на сессию, снимающий все котировки при пробитии.
- Стоп по adverse selection: если реализованный P&L на исполнение ухудшается за окно ниже порога — остановиться и дать посмотреть человеку.
- Kill switch, снимающий всё и закрывающий позиции, проверенный и достижимый одной командой.
Третий пункт заслуживает внимания, потому что ловит отказ, который лимиты инвентаря не ловят: маркет-мейкер во флэте, в пределах лимитов, теряющий деньги на каждом круге, потому что поток стал информированным.
Что измерять
| Метрика | О чём говорит |
|---|---|
| Доля исполнений по сторонам | Работает ли skew |
| Время в коридоре инвентаря | Как часто вы у лимита |
| Mark-out после исполнения (1 с, 10 с, 60 с) | Adverse selection, измеренный напрямую |
| Реализованный захват спреда за круг | Покрывает ли спред стоимость отбора |
| Задержка отмены, p99 | Успеваете ли вы убраться с дороги |
| Доля времени с активными котировками | Сколько сессии вы реально были на рынке |
Mark-out — самая честная. Если цена стабильно уходит против вас в секунды после исполнений, вас отбирают, и никакое расширение спреда не чинит структурное информационное отставание — оно лишь подсказывает, сколько за него брать и стоит ли вообще быть на этом рынке.
Статья описывает инженерную практику. Это не инвестиционная рекомендация. Vizanix разрабатывает программное обеспечение и не обещает торговую доходность.