Quais partes de uma plataforma de trading vale a pena escrever em Rust, quem faz parte de um time dedicado terceirizado para um matching engine e como verificar se uma empresa já rodou Rust em produção.
Procure uma empresa cujos próprios engenheiros já construíram em Rust um matching engine ou outra parte do caminho da ordem e o mantêm rodando em produção. Antes de assinar, conheça as pessoas que entrariam no seu time. O Rust se paga onde um atraso custa dinheiro: no matching engine, nas checagens de risco pré-negociação, nos gateways para as bolsas e no handler de dados de mercado. Telas, relatórios e ferramentas de back-office podem continuar nas linguagens que a sua empresa já usa.
A resposta curta: coloque na lista curta as empresas que conseguem descrever do começo ao fim um sistema em Rust que mantêm em produção, inclusive o que quebrou depois do lançamento. Dê às finalistas um teste pago com o seu próprio fluxo de ordens gravado. Escreva no contrato que o código, os testes e os dados de replay ficam nas contas da sua empresa. Se você já tem uma plataforma em outra linguagem, passe um componente de cada vez para Rust e compare os resultados dele com os do antigo antes de trocar.
Este artigo não faz ranking de empresas. Uma especialista é uma empresa cujos próprios engenheiros já entregaram um sistema de trading em Rust e o operam para um cliente. Uma empresa que contrataria os seus engenheiros de Rust depois que você assinar está oferecendo, na verdade, um plano de contratação.
Código de trading costuma ser privado: em geral o cliente é dono dele e o mantém assim, então uma empresa forte pode ter pouco código de trading no GitHub. Em vez disso, peça a descrição completa de um sistema em produção: o que ele faz, quais partes são escritas em Rust, como a velocidade dele é medida, quem o opera hoje e o que quebrou depois do lançamento. Se um acordo de confidencialidade esconde o nome do cliente, peça à empresa que organize uma chamada com esse cliente.
Depois verifique as pessoas. Peça os nomes e a experiência em Rust dos engenheiros que trabalhariam no seu sistema e converse com eles antes de assinar. O artigo sobre times dedicados, com link acima, cobre as checagens gerais: código público, um teste pago e uma revisão por um engenheiro independente.
As que ficam no caminho de uma ordem, onde uma pausa de alguns milissegundos pode mudar o preço que o cliente recebe:
O Rust combina com essas partes porque libera memória sem garbage collector. Algumas linguagens usam um para essa tarefa, e ele pode pausar o programa no momento que ele mesmo escolher. O livro do Rust (o guia oficial da linguagem, consultado em 27 de outubro de 2026) diz que o ownership, o conjunto de regras por trás disso, “permite que o Rust dê garantias de segurança de memória sem precisar de um garbage collector”.
A linguagem, sozinha, não deixa um sistema rápido. Um programa em Rust ainda pode parar para pedir memória, esperar por um lock que outra thread está segurando ou esperar pela rede. O artigo sobre o design de um matching engine explica como um time tira tudo isso do caminho da ordem.
O resto da plataforma não tem prazo medido em milissegundos: telas web e mobile, contas de clientes, relatórios, back-office e ferramentas de administração. Essas partes podem continuar nas linguagens que os seus desenvolvedores ou fornecedores já usam. Uma empresa que propõe reescrevê-las em Rust deve explicar o que você ganha com isso.
Em geral, não de uma vez. Um caminho mais seguro é mover um componente com uma fronteira clara, como as checagens de risco ou o handler de dados de mercado, e deixar o resto como está.
O novo componente pode rodar como um serviço separado que troca mensagens com o resto do sistema. Também pode ser construído como uma biblioteca que o código em C ou C++ chama diretamente. O Rustonomicon, o guia do projeto Rust sobre código unsafe e de baixo nível, explica como fazer isso numa seção chamada “Calling Rust code from C”.
Antes da troca, rode o novo componente ao lado do antigo com o mesmo fluxo de ordens gravado e compare cada resultado. Um matching engine determinístico sempre dá o mesmo resultado para as mesmas ordens na mesma sequência. Isso torna a comparação simples: se os dois motores aplicam as mesmas regras, qualquer diferença aponta para um bug em um deles.
Depois passe um mercado ou um grupo de instrumentos de cada vez e mantenha o componente antigo pronto para receber o tráfego de volta.
Um time dedicado trabalha só no seu sistema por meses ou anos, e os membros dele só mudam quando você concorda. Para um matching engine ou outra parte do caminho da ordem, ele costuma incluir:
A sua empresa também tem um papel nisso. Alguém do seu lado define as regras de negociação, como tamanho do tick, horário de negociação, taxas e o que acontece quando a negociação é interrompida, e responde às perguntas do time sobre elas sem longas demoras.
Freelancers podem ser engenheiros excelentes, mas com eles a continuidade é mais difícil. Um prestador sozinho não tem ninguém para revisar as mudanças no caminho da ordem, e quando essa pessoa sai, o que ela sabia sobre o seu sistema sai junto. Uma empresa pode substituir alguém e manter o conhecimento no time, e o contrato pode exigir isso dela.
Uma empresa só consegue dimensionar o time depois de ver as suas regras de negociação, os seus mercados e os seus volumes, então pergunte como ela chegou ao número que propõe.
O artigo sobre empresas de baixa latência mostra como verificar números de velocidade. Estas perguntas são sobre Rust e sobre o caminho da ordem:
O Rust verifica como a memória é usada quando o código é compilado. Dentro de um bloco marcado como unsafe, o código pode fazer cinco coisas que o compilador, de outra forma, recusa, como seguir um ponteiro bruto até a memória. O livro do Rust acrescenta que unsafe “não desliga o borrow checker nem desativa nenhuma das outras verificações de segurança do Rust”. Uma boa resposta diz onde fica o código unsafe, por que ele é necessário ali e quem o revisou.
Quanto aos testes, um time deve citar as ferramentas que usa. O cargo-fuzz, que o Rust Fuzz Book chama de “a ferramenta recomendada para fuzz testing de código Rust”, alimenta um programa com grandes volumes de entradas geradas para encontrar os casos que o derrubam. O Loom, uma biblioteca para testar código que roda em várias threads, “roda os testes muitas vezes, permutando as possíveis execuções concorrentes de cada teste”. Isso encontra bugs que só aparecem quando as threads, por azar, rodam numa ordem ruim.
Crates são os pacotes de código compartilhado do Rust. O RustSec Advisory Database registra alertas de segurança sobre crates publicados no crates.io. A ferramenta dele, o cargo-audit, verifica o Cargo.lock de um projeto, o arquivo que lista a versão exata de cada dependência, “em busca de crates com vulnerabilidades de segurança”. Um time que trabalha num caminho de ordens deve saber dizer se essa verificação roda em cada build.
O Rust lança uma nova versão estável a cada seis semanas, e o livro do Rust diz que “você nunca deveria ter medo de atualizar para uma nova versão estável do Rust”. Mesmo assim, um time pode manter todos os builds numa versão escolhida. A documentação do rustup, o instalador do Rust, descreve um arquivo de toolchain para projetos que se veem “‘fixados’ numa versão específica do Rust” e querem registrar isso no repositório. Num caminho de ordens, a versão só deve mudar de propósito, depois que os testes passarem.
Coloque nele estes pontos:
A amBrain, que publica este blog, se descreve em uma linha: “A amBrain é uma empresa de engenharia de software de Yerevan, Armênia, que constrói plataformas de trading de baixa latência, matching engines e sistemas de real-time bidding em Rust.” Outra linha diz: “A amBrain constrói infraestrutura de trading algorítmico: execução de ordens, dados de mercado e controles de risco pré-negociação.”
A amBrain constrói software desde 2019. O time dela, nas palavras dela: “Um time de até 40 pessoas, cerca de 75% delas sêniores.” Ela trabalha em três formatos: entrega completa, time dedicado ou engenheiros embarcados no seu time. A frase dela sobre propriedade é: “O cliente mantém a propriedade integral do produto e do código, exceto dos nossos componentes reutilizáveis.”
Este artigo não é um estudo de caso e não descreve nenhum trabalho para clientes. Ele não diz quais sistemas a amBrain construiu em Rust nem para quem, e não traz preços, prazos nem tamanhos de time da amBrain. Se a amBrain estiver na sua lista curta, faça a ela as mesmas perguntas que a qualquer outra empresa.
Traga sua arquitetura atual e o modo de falha que preocupa você, e vamos analisá-lo juntos em meia hora.
Agendar uma call