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
Как состояние используется
- Pricing Engine переводит inventory_delta в ценовой множитель inventory_skew: избыток делает цену актива ниже, дефицит — выше (формула: Pricing Engine).
- Matching Layer проверяет available_balance перед исполнением фазы Release: продать актив из инвентаря можно только в пределах доступного остатка (см. Логика исполнения свапа).
- Risk Engine следит за величиной inventory_deviation и сигналит о перекосе позиции, ограничивая её неконтролируемый рост.
Изменение состояния
Каждая исполненная сделка меняет балансы обеих валют пары (покупка актива увеличивает его инвентарь и уменьшает запас расчётной валюты, продажа — наоборот). Пошаговые сценарии изменения балансов: Логика исполнения свапа.
См. также