pricetime
Livro de ofertas · determinístico

Um matching engine que você pode reproduzir.

Prioridade preço-tempo, determinístico até o bit, com os invariantes centrais provados por testes de propriedade. O mercado abaixo roda ao vivo no seu navegador e é reconstruído a partir de uma única seed.

O que você está vendo: um mercado simulado rodando ao vivo. Ofertas de compra e venda chegam a todo instante, o motor casa quem quer comprar com quem quer vender e gera negócios — tudo reproduzível a partir de uma seed. Passe o mouse (ou toque) nos rótulos marcados com ? para entender cada parte.

Taxa de matching
ordens/s
Negócios
fechados
Em repouso
ordens
Mid
preço

Livro de ofertas

preço · tamanho
spread

Último preço

Profundidade

tamanho acumulado

Negócios

preço · tamanho
aguardando negócios…

Enviar ordem

conta · você

Fica no livro esperando até casar no seu preço ou melhor.

Invariantes

checado ao vivo
  • Caixa conservado
    Σ caixa entre contas = 0
    ok
  • Ações conservadas
    Σ posição entre contas = 0
    ok
  • Livro não cruzado
    melhor bid < melhor ask
    ok
  • Tamanhos não-negativos
    todo tamanho em repouso > 0
    ok

Prioridade preço-tempo

Ordens limit, market, IOC, FOK e cancel/replace. A ordem que chega casa primeiro com o melhor preço do lado oposto, e com a ordem em repouso mais antiga dentro do nível. Todo fill sai no preço da ordem em repouso, então o taker nunca paga além do topo do livro.

Replay determinístico

O engine não tem relógio de parede nem aleatoriedade escondida — a prioridade temporal é uma sequência monotônica. O mesmo fluxo de comandos reproduz o mesmo livro bit a bit, e uma seed reconstrói um mercado inteiro no navegador, no servidor e no CI.

Invariantes, não asserções

O fast-check joga milhares de fluxos de ordens aleatórios contra o engine. Caixa e ações se conservam, o livro nunca cruza, os tamanhos em repouso ficam positivos e nenhum trade executa pior que o topo do livro.

Event sourcing

O matching emite um log de eventos append-only. Dobrar esse log reconstrói o livro e o saldo de cada conta sem acessar o interior do engine — a mesma projeção que sustenta a verificação do replay.

Medido, não afirmado

Um fluxo semeado de 1M ordens reproduzido contra um engine frio, casando em um único núcleo com aritmética só de inteiros. Reproduza com npm run bench.

2.47M/s
Throughput
1.3µs
Latência p99
0.3µs
Latência p50
win32/x64 · Node v24.18.0 · 714.897 negócios · invariantes válidos