Дневник. SDEX Market Maker - SHADOW №1: логика подтверждена
Получили полноценный результат первого теневого эксперимента.
SHADOW №1 прошёл проверку логики NORMAL / REBALANCE.
Перед переносом в LIVE нужно дополнить систему учётом доступного инвентаря.
И главное: за этот период SPREAD25 показал результат лучше простого удержания портфеля.
1. InventoryMode — результат положительный
- При избытке XLM уменьшался именно BID
- ASK оставался на 100%
- При усилении перекоса ограничение становилось сильнее
- Возврат в NORMAL происходил без хаотичных переключений
Самый показательный эпизод: при 70.07% XLM размер BID упал до 49.6%, после восстановления доли до 56.97% модель спокойно вернулась в NORMAL.
PROTECT пока не проверен (максимум был 70.1%, порог — 75%).
2. Что реально сделал SPREAD25
Реальные исполнения на Stellar (не виртуальные решения):
Хороший результат исполнения: средняя цена продажи заметно выше средней цены покупки.
3. Изменение стоимости портфеля
+40.06 AQUA (+0.1433% mark-to-market)
Сравнение с пассивным удержанием:
- Преимущество над удержанием начальных количеств: +27.21 AQUA
- Дополнительные зачисления AQUA ≈ 5.20
- Преимущество после их исключения: ≈ +22.01 AQUA
Это предварительное преимущество торговой активности над Buy & Hold. Не окончательная доказанная реализованная прибыль, но уже сильный позитивный сигнал.
Балансовая сверка почти закрыта (остаток XLM −0.003 — скорее всего комиссии).
4. Важный архитектурный вывод
Существующий Fill Guard уже контролирует не только общую долю XLM, но и доступный инвентарь с учётом открытых ордеров.
Поэтому нельзя просто заменить старый Inventory Guard новым InventoryMode. Нужно чётко разделить слои:
- InventoryMode — экономическое направление (когда и насколько ограничивать покупки/продажи)
- Fill Guard — техническая безопасность (доступные остатки + прогноз полного исполнения)
- Execution Layer — формирует реальные размеры ордеров только после прохождения обеих проверок
Эти слои не должны отменять защиту друг друга.
Вердикт и следующий этап
Сохраняем фиксированный спред 25 bps и добавляем три механизма:
- Inventory Cost — учёт себестоимости XLM (новые покупки отдельно от старого остатка)
- Inventory Age — сколько времени каждая партия XLM находится в портфеле
- Markout — оценка качества исполнения через 1 / 5 / 15 минут после реальных сделок
Это позволит понять не только то, что бот покупает дешевле, чем продаёт, но и действительно ли он выбирает удачные моменты и сколько капитала «замораживается» из-за долгого удержания инвентаря.