Skip to main content
Трейдеры иногда смотрят на исполненный ордер и думают, что цена исполнения не та, или смотрят на строку PnL и видят число, которое не сходится с расчётом на бумаге. Эта страница разбирает обычные причины таких расхождений и объясняет, что прислать нам, если после прочтения вы всё ещё уверены, что это баг.

Как устроено сопоставление в общих чертах

Ордера в Intention сопоставляются внутри IntentionKernel в центральном стакане лимитных заявок по строгому приоритету «цена — время». Упорядочивание детерминировано: каждая реплика блокчейна воспроизводит тот же порядок сообщений и, значит, ту же последовательность исполнений. Полное описание — на странице Диспетчер ордерных транзакций, взгляд со стороны машины состояний — на странице IntentionKernel. Для обращения об исполнении важно вот что: приватного преимущества по потоку ордеров нет, офчейн-движка сопоставления нет; и ваш ордер, и ордер, который его исполнил, записаны в каноническом потоке блоков.

Почему цена исполнения отличается от цены на экране

Число, которое было на экране в момент нажатия «buy» (купить), — это не то число, по которому вас исполнят, и это нормально.
  • Проскальзывание. Рыночный или пересекающий стакан лимитный ордер идёт по стакану, пока не наберёт весь объём или не упрётся в предельную цену. Если вершина стакана была тонкой, средняя цена может оказаться заметно хуже лучшей котировки, которую вы видели секунду назад.
  • Чужие исполнения в промежутке. Ордера других участников могут попасть в тот же блок или в блок между последним обновлением интерфейса и блоком с вашим ордером. Они съедают ликвидность и сдвигают вашу эффективную цену.
  • Задержка между снимком и отправкой. Цена на экране — это снимок; к моменту, когда ваш ордер упорядочат и сопоставят, стакан уже может сдвинуться. Это не баг движка сопоставления, а следствие того, что сигналу между вами и блокчейном нужно время.

Нереализованный и реализованный PnL

  • Нереализованный PnL отражает переоценку открытой позиции по текущей маркировочной цене. Он двигается непрерывно вслед за маркировочной ценой; это текущая оценка, а не окончательная величина.
  • Реализованный PnL — накопленный результат уже закрытых позиций. За маркировочной ценой он не идёт. Меняется он только тогда, когда вы уменьшаете или закрываете позицию.
Путаница между ними — самый частый источник сообщений «у меня неправильный PnL». Если число менялось прямо у вас на глазах, это почти наверняка нереализованный.

Маркировочная цена и цена последней сделки

Маркировочная цена — это не цена последней сделки. Это сглаженный ориентир для учёта маржи, нереализованного PnL, финансирования и ликвидаций, построенный так, чтобы его нельзя было сдвинуть одной сделкой. Как он строится, описано на странице Маркировочная цена. Цена последней сделки — это просто цена, по которой прошло последнее исполнение. Они могут расходиться, особенно на быстрых рынках, и это расхождение заложено в дизайн: если считать маржу по последней сделке, манипулировать ликвидациями станет проще простого. Платежи финансирования тоже считаются по маркировочной цене; см. Финансирование, если в строке реализованного PnL оказались неожиданные потоки финансирования.

Как читать атрибуцию по каждому исполнению

Каждое исполнение публикуется с идентификатором, ценой, количеством, комиссией и позицией в последовательности. Их можно получить через API или из потока исполнения. Записи по каждому исполнению — канонический ответ на вопрос «что случилось с моим ордером»; сводка в интерфейсе лишь удобно их отображает.

Что прислать, если всё равно выглядит неверно

Напишите на contact@intention.xyz и приложите:
  • Идентификатор ордера и, если он есть, идентификатор исполнения.
  • Ожидаемые цену и объём и то, на чём основано ожидание.
  • Фактические цену и объём из приложения или API.
  • Высоту блока или отметку времени в UTC, когда прошло исполнение.
  • Одно предложение с описанием расхождения.
Мы воспроизведём шаг сопоставления из блока и разберём с вами, что движок сделал на самом деле.