VIZANIXРазработка торгового ПО
Механика рынкаМаркет-мейкинг8 мин чтения

Маркет-мейкинг: инвентарь, skew и нахождение не на той стороне каждой сделки

Маркет-мейкер зарабатывает спред и платит за информацию. Каждое ваше исполнение — это исполнение, которого кто-то хотел, и вся дисциплина сводится к выживанию в этой асимметрии.

Инженеры Vizanix · об авторе

МАТЕРИАЛ
8 минвремя чтения
РАЗДЕЛ
Механика рынка
ОПУБЛИКОВАНО
2026-08-28
ГЛАВ
6
ЧИТАТЬ ДАЛЬШЕ
3
ЯЗЫК
написано на русском
Инженерный разбор, а не пересказ документации.
QUOTINGINVENTORY SKEWADVERSE SELECTIONCANCELS

Маркет-мейкинг звучит как арбитраж на комиссиях: котируй обе стороны, забирай спред, повторяй. Причина, по которой это трудно, умещается в одно наблюдение: вы не выбираете, какая сторона исполнится. Выбирает рынок — и выбирает ту сторону, которая вот-вот окажется правой.

Adverse selection и есть бизнес

Ваш бид снимают, когда кто-то хочет продать. Иногда это человек, которому нужна ликвидность, и вы заработали половину спреда. Иногда это человек, который что-то знает, и вы только что купили вершину движения.

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

Инвентарь — это переменная состояния

Позиция маркет-мейкера — не мнение, а следствие того, кто с вами торговал. Предоставленная сама себе, она накапливается: падающий рынок раз за разом наливает ваши биды, и вы оказываетесь в лонге в слабость.

Стандартная поправка — skew. По мере роста длинного инвентаря смещайте обе котировки вниз: бид становится менее привлекательным для продавцов, аск — более привлекательным для покупателей, и сам поток ордеров возвращает вас к нулю.

python
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:

  1. Батчить. Где площадка поддерживает пакетные отмену и amend — пользуйтесь. Худший момент превращается из сорока запросов в несколько.
  2. Приоритизировать. Отмены важнее обновления котировок, всегда. Устаревшая котировка, которую нельзя снять, — это обязательство; необновлённая котировка — всего лишь упущенная возможность.
  3. Котировать меньше уровней. Самый дешёвый способ снизить нагрузку отмен — иметь меньше висящих ордеров. Большинство движков котирует больше глубины, чем оправдывает их преимущество.

Коридор риска должен быть жёстким

Skew — мягкий механизм: он делает неправильную сторону менее вероятной, но не невозможной. За ним должны стоять лимиты, с которыми котировальный цикл не может спорить:

  • Абсолютный потолок инвентаря, за которым одна сторона перестаёт котироваться совсем.
  • Лимит убытка на сессию, снимающий все котировки при пробитии.
  • Стоп по adverse selection: если реализованный P&L на исполнение ухудшается за окно ниже порога — остановиться и дать посмотреть человеку.
  • Kill switch, снимающий всё и закрывающий позиции, проверенный и достижимый одной командой.

Третий пункт заслуживает внимания, потому что ловит отказ, который лимиты инвентаря не ловят: маркет-мейкер во флэте, в пределах лимитов, теряющий деньги на каждом круге, потому что поток стал информированным.

Что измерять

МетрикаО чём говорит
Доля исполнений по сторонамРаботает ли skew
Время в коридоре инвентаряКак часто вы у лимита
Mark-out после исполнения (1 с, 10 с, 60 с)Adverse selection, измеренный напрямую
Реализованный захват спреда за кругПокрывает ли спред стоимость отбора
Задержка отмены, p99Успеваете ли вы убраться с дороги
Доля времени с активными котировкамиСколько сессии вы реально были на рынке

Mark-out — самая честная. Если цена стабильно уходит против вас в секунды после исполнений, вас отбирают, и никакое расширение спреда не чинит структурное информационное отставание — оно лишь подсказывает, сколько за него брать и стоит ли вообще быть на этом рынке.

Статья описывает инженерную практику. Это не инвестиционная рекомендация. Vizanix разрабатывает программное обеспечение и не обещает торговую доходность.

Блог

Читать дальше

Хотите такое у себя?

Мы пишем о том, что строим. Если нужно построить — напишите, разбор бесплатный.

Бриф

Получить оценку проекта

Четыре вопроса и контакт. Предоплата для разговора не нужна — если задача не наша, скажем сразу.

01Что вам нужно
02Биржа
03Рынок
04Стратегия
05Контакты

Проще написать напрямую? Telegram @vx_ceo

Обсудить систему