O livro
Cada instrumento tem o seu próprio livro, mantido em memória como três estruturas que cooperam entre si:Slab arena — uma região pré-alocada de slots de ordens
Níveis de preçomapa ordenado, preço → nívelo topo do livro alcança-se indo ao extremo, sem varrer
Índice de ordensid da ordem → slotcancelar e alterar: tempo constante
ordem
ordem
ordem
ordem
ordem
Cadeia duplamente ligada pela sequência de chegada: a prioridade dentro de um nível é posicional, não calculada.
A ordem de reutilização é fixaOs slots libertados são reutilizados por ordem fixa e o índice tem semente fixa. Não é escolha de desempenho: dois validadores a reutilizar slots por ordens diferentes divergiriam.
topo de cada nível
consulta direta
As ordens vivem numa slab arena — uma região pré-alocada com alocação e libertação em tempo constante. As operações sobre o livro de ordens não alocam, portanto, no caminho crítico, e os slots libertados são reutilizados segundo uma ordem fixa e não onde calhar ao alocador. Este último detalhe não é uma escolha de desempenho: se dois validadores reutilizassem slots segundo ordens diferentes, tudo o que observasse a disposição dos slots divergiria.
A mesma disciplina aplica-se ao índice de ordens, cuja semente é fixa e não aleatória. Um hash map com semente por processo é uma defesa habitual contra ataques de colisão; num caminho de execução por consenso é um fork.
Os preços são inteiros em todo o lado — unidades subtick, não decimais. Ver Precisão para saber como isso se relaciona com o que submete.
Prioridade
A prioridade é primeiro o preço, depois a posição na cadeia a esse preço. O «tempo» é a posição canónica da ordem na sequência confirmada do bloco, não o momento em que chegou a um nó. É isto que elimina a corrida à latência dentro de um bloco. Duas ordens no mesmo bloco têm uma precedência definida que todos os validadores calculam de forma idêntica, e nenhuma proximidade a um nó em particular a altera. Entre blocos, a chegada continua a contar — mas a unidade de competição é o bloco, não o microssegundo. A ordem das fases do kernel reforça isto: os cancelamentos executam antes das colocações agressivas dentro de um bloco, pelo que uma cotação colocada no livro não pode ser levada por uma ordem que chegou no mesmo bloco que o seu cancelamento.Cruzar uma ordem
Ordem que entra
Cruza o livro?
Consumir o melhor nível oposto
Emitir execução
Fim
A sobra fica no livro ou é rejeitada pela validadeGTC fica no livro · IOC cancela · FOK não executa nada se não executar tudo · post-only é rejeitada em vez de cruzar
sobra — consumir o nível seguinte
sem sobra
- GTC — a sobra fica no livro.
- IOC — a sobra é cancelada.
- FOK — se a ordem não puder ser executada na totalidade, nada executa.
- ALO — post-only (apenas maker): se a ordem fosse retirar liquidez, é rejeitada em vez de cruzar.
Prevenção de autonegociação
Quando uma ordem que entra cruzaria com liquidez do mesmo titular que está no livro, o cruzamento é suprimido em vez de executado. Qual dos lados cede é configurável:
Os makers cancelados desta forma são recolhidos durante o matching e removidos como parte do mesmo bloco, para que o livro não transporte uma ordem que já foi suprimida.
A titularidade para esta verificação é resolvida ao nível de conta que o livro acompanha. Ver Prevenção de autonegociação para a perspetiva do lado da negociação.
O que o matching não faz
Não calcula comissões, não realiza lucros e perdas, não ajusta posições nem verifica margem. Isso acontece depois do matching, na câmara de compensação, conduzido pelas execuções que o matching produziu. Também não decide se uma ordem podia sequer existir. A adequação da margem, os limites de ordens abertas, as restrições reduce-only (apenas redução) e a conversão de mercado para limitada são resolvidos antes de a ordem chegar ao livro. Quando o motor de matching vê uma ordem, a única questão é onde ela pertence no livro.Para onde ir a seguir
Câmara de compensação
O que acontece aos saldos e às posições depois de existirem execuções.
Tipos de ordem
A perspetiva do lado da negociação: o que pode submeter e como cada tipo se comporta.
Livro de ordens
Profundidade, níveis e como ler o livro enquanto trader.
IntentionKernel
Onde o matching se situa na execução do bloco.