Перейти к содержимому
← Назад к документации

Inventory Model: балансы и состояние инвентаря

Inventory Manager ведёт учёт активов по каждой валюте, участвующей в модуле. Состояние инвентаря — это база для решений Matching Layer (исполнять ли из инвентаря) и Pricing Engine (как корректировать цену).

Структура балансов

Для каждой валюты хранится набор полей:

total_balance        # общий баланс валюты в системе
reserved_balance     # зарезервировано под активные заявки
available_balance    # доступно для новых сделок
inventory_target     # целевой уровень инвентаря
inventory_deviation  # текущее отклонение от целевого уровня
Базовое соотношение:

available_balance = total_balance – reserved_balance

  • total_balance — все средства валюты под контролем системы (накопленный инвентарь плюс рабочие остатки).
  • reserved_balance — суммы, заблокированные под заявки в работе (ожидающие выплаты, встречные ноги свапов).
  • available_balance — свободный остаток, из которого можно исполнять новые сделки фазы Release.
  • inventory_target — целевой уровень позиции, который система стремится поддерживать.
  • inventory_deviation — расчётное отклонение фактического баланса от целевого (см. формулу ниже).

Состояние инвентаря

Ключевая метрика состояния — inventory_delta:

inventory_delta = current_balance – target_balance
Интерпретация:

Значение Состояние Действие системы
inventory_delta > 0 Избыток актива Нужно продавать: стимулируем покупку актива клиентами
inventory_delta < 0 Дефицит актива Нужно покупать: стимулируем продажу актива клиентами
inventory_delta ≈ 0 Баланс Позиция соответствует целевому уровню

 

Пример для BTC-инвентаря:

current_balance = 3.2 BTC
target_balance  = 2.5 BTC
inventory_delta = 3.2 – 2.5 = 0.7 BTC   # избыток: система заинтересована продавать BTC

Как состояние используется

  1. Pricing Engine переводит inventory_delta в ценовой множитель inventory_skew: избыток делает цену актива ниже, дефицит — выше (формула: Pricing Engine).
  2. Matching Layer проверяет available_balance перед исполнением фазы Release: продать актив из инвентаря можно только в пределах доступного остатка (см. Логика исполнения свапа).
  3. Risk Engine следит за величиной inventory_deviation и сигналит о перекосе позиции, ограничивая её неконтролируемый рост.

Изменение состояния

Каждая исполненная сделка меняет балансы обеих валют пары (покупка актива увеличивает его инвентарь и уменьшает запас расчётной валюты, продажа — наоборот). Пошаговые сценарии изменения балансов: Логика исполнения свапа.

См. также