November 3

Дневник. SDEX Market Maker - разбор 6 часов и критический баг

Проанализировал шестичасовой период работы маркет-мейкера. Картина получилась показательной: есть признаки рабочего ценового преимущества, но существенной чистой прибыли пока нет. И главное - обнаружен конкретный сбой защиты XLM, который важнее любой оптимизации доходности.

1. Качество данных

Сначала очистил статистику от дублей:

39 точных повторов в исполнениях и 8 в транзакциях. Без очистки статистика сильно искажалась бы (лишние 5,17 XLM продаж и 0,97 XLM покупок).

Есть и неполнота: CSV с исполнениями обрывается в 05:27 UTC, а журнал бота идёт до 09:24. Последние ~57 минут периода в файл не попали. Именно в конце этого окна произошёл заметный сдвиг балансов (XLM вырос, AQUA упал), которого нет в fills.

2. Качество исполнения

Средняя цена продажи выше средней цены покупки на 0,40 AQUA/XLM (~6,66 bps).

Ещё интереснее сравнение с предыдущим mid:

  • Покупки XLM исполнялись в среднем на +11,55 bps лучше предыдущего mid
  • Продажи XLM - на +8,28 bps лучше

Это хороший сигнал: котировки в целом дают ожидаемое ценовое преимущество. Пока нет оснований сужать или расширять спред 20 bps.

3. Финансовый результат

Оценка торгового капитала бота:

  • Начало периода: ≈ 7250,22 AQUA
  • Конец периода: ≈ 7252,91 AQUA
  • Изменение: +2,69 AQUA

Полная оценка портфеля по рынку даёт примерно от +1,84 до +4,96 AQUA на капитале ~19 142 AQUA. Это +0,01–0,03%.

Стратегия за эти шесть часов была близка к безубыточной. Есть качество исполнения, но пока нет убедительной чистой доходности.

4. Критический баг: пробит страховой пол XLM

Это главный вывод анализа.

В 09:08:47 бот выставил ASK на 3,9914 XLM.
Уже через 10 секунд расчёт показал:

Предупреждение было, но ASK оставался в рынке. Только через минуту бот решил отключить ASK, а к 09:10:11 фактический баланс уже составлял 17,70 XLM - ниже установленного минимума 18.

Ниже пола бот пробыл в семи подряд снимках.

Что нужно исправить
Проверка должна быть жёсткой и учитывать не только текущий баланс, но и весь открытый ASK:

Если условие нарушается — ASK нужно блокировать или немедленно сокращать. Одного предупреждения в логе недостаточно.

5. Перекос инвентаря

Доля XLM в торговом капитале снизилась с 65% до 58% - движение в сторону целевых 50%.
Но при полном исполнении всех открытых ордеров проекция уходит до 43% и ниже (в одном снимке даже до 37%).

Текущая защита 30–70% слишком широкая. Нужно лучше контролировать сценарий «если исполнятся все заявки».

6. Инфраструктура

За период:

  • 57 успешных перестановок
  • 5 неуспешных транзакций
  • Несколько переключений Horizon и две паузы из-за рассинхронизации снимков
  • Failover и реконсиляция отработали, бот не остановился

Работает, но идеальной стабильности ещё нет.

Приоритеты

  1. Обязательно - исправить защиту страхового остатка XLM (учитывать ASK liability).
  2. Усилить контроль сценария полного исполнения сетки относительно целевой доли 50%.
  3. Только после этого заново оценивать прибыльность на полных данных.

Параметры (спред 20 bps, cooldown 60 сек, три уровня) пока не трогаем.

Итог: ценовое преимущество есть, чистой прибыли пока почти нет, а вот дыра в защите XLM - реальная и требует немедленного закрытия.