Исходные данные

Клиент WebSocket сначала получает полный снимок книги, а затем применяет изменения к отдельным ценовым уровням. Kalshi передаёт seq как счётчик сообщений в пределах подписки. Документация указывает проверять последовательность, чтобы заметить пропуск. Для восстановления можно запросить новый снимок через get_snapshot. Kalshi WebSocket order book documentation ↗

Как пропуск оставляет в книге ложный объём

Предположим, на уровне 0,42 доллара после снимка стоит 80 контрактов. Одно сообщение уменьшает уровень на 70, следующее добавляет 10. Верный итог равен 20. Если клиент пропустил уменьшение и применил только добавление, он покажет 90. Такая ошибка переживёт следующие изменения, пока книга не будет восстановлена по новому снимку.

Последовательность относится к подписке

Один поток может включать несколько рынков, а seq ведётся по подписке. Пропуск номера сам по себе не подсказывает, какой рынок затронут. Документация предлагает запросить снимки по всем подписанным рынкам либо отписаться, дождаться подтверждения и подписаться снова. Повторный вызов подписки для уже подключённого рынка сам по себе книгу не восстанавливает.

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