Skip to main content
Por vezes um trader olha para uma ordem executada e acha que o preço de execução está errado, ou olha para a linha de P&L e acha que o número não bate certo com uma conta feita à mão. Esta página explica as origens habituais das discrepâncias aparentes e o que nos enviar se, depois de a ler, continuar convencido de que há mesmo um bug.

Como funciona o matching, em traços gerais

As ordens na Intention são cruzadas dentro do IntentionKernel contra um livro de ordens central, com prioridade estrita de preço e tempo. A sequenciação é determinista: todas as réplicas da cadeia reproduzem a mesma ordenação de mensagens e, portanto, a mesma sequência de execuções. A descrição completa está na página Dispatcher de transações de ordem, e a vista de máquina de estados está na página IntentionKernel. Para efeitos de um ticket sobre execuções, a propriedade importante é que não há vantagem de fluxo de ordens privado nem motor de matching off-chain; tanto a sua ordem como a ordem que a executou ficam registadas no fluxo canónico de blocos.

Porque o preço de execução pode diferir do preço no ecrã

O número que estava no ecrã quando clicou em «comprar» não é o número a que a ordem é executada, e isso é normal.
  • Slippage. Uma ordem de mercado — ou uma ordem limitada executável — percorre o livro até preencher todo o tamanho ou atingir o limite de preço. Se o topo do livro (os melhores preços de compra e venda) estava fino, a média efetiva pode ser bastante pior do que a melhor cotação vista momentos antes.
  • Execuções pelo meio. As ordens de outros participantes podem cair no mesmo bloco, ou no bloco entre a última atualização da interface e o bloco que inclui a ordem. Essas execuções consomem liquidez e deslocam o preço efetivo da sua.
  • Latência entre a fotografia e a submissão. O preço no ecrã é uma fotografia; quando a ordem é sequenciada e cruzada, o livro já pode ter mudado. Não é um bug no motor de matching; é uma consequência do tempo de viagem finito entre si e a cadeia.

P&L não realizado vs. realizado

  • O P&L não realizado reflete o valor da posição aberta a preços de mercado, ao preço de marcação atual. Move-se continuamente à medida que a marcação se move, e é uma estimativa corrente, não um valor definitivo.
  • O P&L realizado é o resultado acumulado das posições já fechadas. Não se move com a marcação. Só muda quando reduz ou fecha uma posição.
Confundir um com o outro é a origem mais comum dos relatos de «o meu P&L está errado». Se o número em causa estava a mudar enquanto olhava para ele, é quase de certeza não realizado.

Preço de marcação vs. preço da última transação

O preço de marcação não é o preço da última transação. É uma referência suavizada, usada na contabilidade de margem, no P&L não realizado, no funding e nas liquidações, construída para resistir à manipulação de uma única impressão de preço. A página Preço de marcação descreve como é construído. O preço da última transação é simplesmente aquele a que a execução mais recente ocorreu. Podem divergir, sobretudo em mercados rápidos, e essa divergência é intencional — usar a última impressão para a margem tornaria as liquidações trivialmente manipuláveis. Os pagamentos de funding também são calculados contra a marcação; ver Funding se a linha de P&L realizado contiver fluxos de funding inesperados.

Ler a atribuição por execução

Cada execução é emitida com um identificador, um preço, uma quantidade, uma comissão e uma posição de sequenciação. Estes dados podem ser obtidos pela API ou pelo fluxo de execução. Os registos por execução são a resposta canónica para «o que aconteceu à minha ordem»; o resumo na interface é apenas uma apresentação conveniente desses registos.

O que nos enviar se continuar a parecer errado

Envie um email para contact@intention.xyz com:
  • O ID da ordem e, se existir, o ID da execução.
  • O preço e tamanho esperados e a base dessa expectativa.
  • O preço e tamanho observados na aplicação ou na API.
  • A altura do bloco ou a data/hora UTC em que a execução foi liquidada.
  • Uma descrição de uma linha da discrepância.
Reproduzimos o passo de matching a partir do bloco e explicamos o que o motor fez de facto.