
O Rei-guardião: Qualidade do Mercado
A saúde e maturidade de um mercado não podem ser estimadas apenas através de preço e volume. Seus atores e suas relações têm um…
O Rei-guardião: Qualidade do Mercado
Anteriormente apresentado no digest de novembro de 2020 da FTX
A saúde e maturidade de um mercado não podem ser estimadas apenas através de preço e volume. Seus atores e suas relações têm um impacto significativo na direção que uma indústria tende a tomar. Vamos considerar as exchanges, os principais formadores de mercado e os participantes comuns do mercado e como suas interações estão moldando os cripto-mercados.
Neste artigo, vamos abordar a limitação física dos motores de correspondência das exchanges, como isso impacta o mercado cripto mais amplo e algumas propostas que poderiam tornar as criptomoedas um mercado mais justo e eficiente.
Os limites físicos do trading
Durante milhares de anos, os humanos trabalharam para tornar seus mercados mais resilientes, eficientes e cada vez mais rápidos. Desde redes de logística até sistemas de processamento de pagamentos online, a busca pela redução de latência é tão antiga quanto os próprios mercados. O que acontece quando uma indústria enfrenta um obstáculo que não consegue superar? A descoberta do Silício e suas aplicações nos permitiram aumentar a velocidade de propagação da informação próxima à velocidade da luz. Não podemos torná-la mais rápida.
Tendo trabalhado no motor de correspondência da Euronext, adquiri uma compreensão de como tirar o máximo proveito dos limites físicos do hardware e desenvolver Motores de Correspondência (ME) mais rápidos.
O ME é o coração de qualquer exchange. Maratonistas altamente qualificados têm um batimento cardíaco lento, mas forte, que pode fazer muito; cada batimento é otimizado para oferecer a melhor eficiência e velocidade na entrega de nutrientes aos tecidos e músculos. Da mesma forma, o ME é responsável por resolver operações de trading de forma eficiente e rápida, enquanto garante que a informação resultante seja retransmitida para a parte correta das infraestruturas das Exchanges, de maneira confiável e resiliente. A latência do ME está diminuindo ano após ano, graças ao trabalho árduo das equipes das exchanges, enquanto alguns líderes antigos começam a se acomodar e a perder mais e mais clientes a cada dia.
“Se você não sobe, você desce”
Vamos descer para subir: Desmistificando a CPU 101:
Os anos 2000 marcaram o fim da era da lei de Moore, quando a atualização para hardware de maior frequência trazia melhorias automáticas de desempenho. Em vez disso, a indústria passou a um modelo onde os ganhos de desempenho vêm da adição de mais unidades de execução (núcleos). Mas aproveitar arquiteturas multicore requer esforços adicionais de desenvolvimento e testes, e uma abordagem ingênua de adicionar mais threads muitas vezes não atende às expectativas de escalabilidade. Por quê?
“Uma Unidade Central de Processamento (CPU) é realmente boa em uma tarefa, muitas CPUs não são boas como equipe por padrão”.
Uma CPU é composta por uma unidade de processamento e uma unidade de memória. Um núcleo de CPU é organizado para executar instruções em sua velocidade de frequência. Por exemplo, uma CPU de 3 GHz processa cada instrução em 0,333 ns (1 000 000 000 ns = 1 seg). A tecnologia semicondutora (em nanômetros) determina os limites físicos.
A realidade é muito mais complexa. Estamos assumindo que instruções e dados já estão armazenados nos registradores físicos da CPU que operam na mesma velocidade que a frequência da CPU. Na realidade, instruções e dados são armazenados em uma arquitetura de memória cache em múltiplas camadas (L1/L2/L3). Quanto mais próximo estiver da unidade de processamento da CPU FISICAMENTE NO CHIP, mais rápido e menor será. Assim, o cache L1 é o mais rápido e o menor. A Figura 1 mostra a microarquitetura da CPU multicore e o tamanho/velocidade correspondente de cada nível de cache.

Figura 1: Microarquitetura da CPU Multicore
Para entender o que torna a latência longa e os ciclos desaparecem, precisamos entender os fundamentos da Lei Universal de Escalabilidade aplicada ao sistema de CPU multicore. Os principais parâmetros que impactam a escalabilidade são:
• Contenção de recursos do núcleo: devido ao hyperthreading, por exemplo. Vários threads de software querem acessar simultaneamente as mesmas unidades de execução, e assim o processamento é serializado e priorizado.
• Contenção de memória cache: ocorre quando há contenção do mesmo núcleo em sua memória cache privada (L1/L2) em caso de troca de contexto do sistema operacional, ou quando o tamanho do problema é grande demais para ser armazenado na memória cache privada. Esse fenômeno é chamado de cache thrashing. Em multicore, o cache thrashing ocorre no cache L3 compartilhado (ou LLC, cache de último nível) entre os núcleos. Assim, o impacto é de várias centenas de nanosegundos perdidos em latência. A solução deve ser um software inteligente que melhore a localidade dos dados no processamento em cache, a fim de também melhorar a utilização da largura de banda da memória, enquanto mantém o núcleo da CPU ocupado fazendo cálculos locais; esse é um problema muito difícil, e não há solução fácil hoje.
• Coerência de cache: é um mecanismo de hardware que permite uma comunicação sem costura entre núcleos sempre que há uma sincronização de software (mutex, barreira, etc…) ou acesso à mesma área de memória por ambos os núcleos. Uma simples coerência de cache (uma linha de cache) custa pelo menos 600 ciclos.
Carga experimentada pelos motores de correspondência
Levando em conta as limitações das CPUs, as exchanges têm que gerenciar suas operações. Primeiro, as exchanges precisam gerenciar as posições de seus traders. Isso as expõe a riscos de liquidez quando liquidações em massa ocorrem durante episódios de mercado altamente voláteis. As exchanges tendem a gerenciar a liquidação dessas posições de maneiras que evitem efeitos em cascata sobre outros participantes do mercado quando liquidações em massa acontecem. Elas também precisam impor regras de mercado e acumular negociações, para garantir a resiliência e consistência de seus serviços.
O percentil 99 representa os 1% mais altos valores de latência para consultas avaliadas dentro de um determinado intervalo de tempo para uma determinada tarefa. Um software resiliente e eficiente será considerado pelo percentil 99 que se tornará o limite de latência anunciado. Os motores de correspondência das exchanges, independentemente de quão bem codificados sejam, sempre estarão limitados por essas latências, limitando o total de transações processadas para seus usuários. Se uma exchange tem uma quantidade limitada de transações por segundo.

Isso se soma a alguns milhares de operações por instrução de correspondência, para o ME gerenciar. Eles também têm restrições para consultas comerciais relacionadas a atender muitos instrumentos e lidar com milhões de mensagens por segundo.
Como alcançar escalabilidade e estabilidade do ponto de vista da arquitetura?
O ME é um perfil computacional de fluxo de trabalho altamente interconectado, combinando dados de várias fontes, onde a frequência de comunicação entre módulos e suas interdependências são altas e dinâmicas. A sincronização de threads e o agendamento precisam ser feitos de forma dinâmica e rápida.
O software reativo é uma filosofia de design e uma mudança de paradigma que engloba a construção de microserviços reativos em grande escala e aplicações reativas de grão fino (um processo). Baseado em design de passagem de mensagens assíncronas, existe uma infinidade de modelos de programação concorrente que permitem construir um software reativo do zero. O modelo de ator é um desses modos de programação comprovados em batalha.
Os atores são um conceito muito eficiente, apoiando todo o ciclo de desenvolvimento até a produção. Ao serem mapeados diretamente para conceitos funcionais, os atores encurtam a distância entre arquiteturas de negócios e funcionais; eles encapsulam a lógica em um nível granular o suficiente para dividir o trabalho entre desenvolvedores; são conceitos diretamente utilizáveis para testes; e permitem que os administradores decidam a topologia de forma dinâmica, com base no hardware disponível e na carga da aplicação.
O ME que recebe essas operações distribuirá os cálculos necessários entre os núcleos de CPU disponíveis. Se um núcleo estiver cheio, os dados são enviados para um nível de cache superior, para soquetes da placa-mãe, ou no pior caso, de volta para a RAM e enviados para recursos de hardware (isso tem o maior custo porque precisa alcançar outros componentes).
Toda vez que um núcleo precisa sincronizar para equilibrar a carga; eles pagam a “taxa de latência”. Quanto mais núcleos você adiciona, mais os dados podem ser espalhados, mas mais taxas de latência você pagará. Essa taxa aumenta exponencialmente. É por isso que as exchanges não podem simplesmente escalar comprando mais servidores, e também por que podem ser vítimas de seu próprio sucesso. O ponto crítico da latência atinge quando a entropia entra em cena, espalhando dados para muitos núcleos e eles apenas fazem promessas uns aos outros para esperar os dados para executar instruções.
A estratégia usada pelos engenheiros é dedicar cada núcleo a um papel específico e nunca fazer nada mais, garantindo que nunca recebam muitos dados ou instruções, e evitando o máximo possível qualquer sincronização e aleatoriedade das entradas. Para alcançar isso, eles terão que gastar dinheiro em pesquisa e/ou investir em software para gerenciar a alocação de memória e controle de núcleos. E especialmente ter engenheiros rigorosos que não desperdicem nenhum byte de tempo de CPU.
Dilema:
As exchanges e o mercado como um todo se encontram em um dilema: aumentar a carga à custa de tornar suas limitações de velocidade e latência mais aparentes.
Lado da venda:
Do ponto de vista do lado da venda (exchanges), você gasta muito dinheiro desenvolvendo soluções para lidar melhor com a entropia. Você precisa de desenvolvedores talentosos que entendam o dilema da latência, incluindo a entropia gerada por ter uma base de clientes crescente (software de trading, traders algorítmicos, formadores de mercado). Em algum momento, os limites de design são alcançados pelas regras da física. Considerando isso, qualquer erro se acumula e pode rapidamente se tornar doloroso, isso acaba limitando a capacidade de desenvolvimento até que a inovação seja morta devido ao medo de criar novos custos de latência. As exchanges eventualmente têm que reduzir o risco de falhas do ME devido ao que pode ser semelhante a um Ataque de Negação de Serviço Distribuído feito por participantes legítimos do mercado.
Para mitigar esses riscos, elas aplicam limites de taxa e priorizam quais instruções trazem as melhores oportunidades de negócios. CPU e latência são física e matemática. Pesquisa, rigor e noções de “justiça” estão a critério dos humanos. Se você desacelera todos, torna o mercado mais ineficiente para a maioria dos traders. Isso então dá uma vantagem àqueles com recursos (engenheiro de codificação de baixo nível, capital para implantar, equipe de pesquisa, volume). Outro ponto que vale a pena mencionar, cada operação, por razões legais, deve ser salva mesmo que seja para cancelar a ordem alguns milissegundos depois. Empresas de HFT (High Frequency Trading) colocam uma alta carga nas exchanges com recursos em grande parte desperdiçados ao custo da exchange.
Lado da compra
Do lado da compra (ponto de vista dos clientes), um ME ilimitado permite melhores estratégias, mais competição, mercados mais eficientes, melhores oportunidades de arbitragem entre exchanges e um mercado mais justo para traders de baixo volume que podem acessar liquidez no mesmo ritmo que todos os outros.
Quando o número de clientes aumenta, o ME desacelera e exclui a maioria dos traders. Comprar servidores na proximidade geográfica dos servidores das exchanges permite que certos participantes do mercado enviem padrões de preços específicos, o que é de particular interesse do ponto de vista regulatório e das exchanges. Durante períodos de alta volatilidade, o HFT consumirá principalmente a liquidez dos concorrentes e absorverá as ordens passivas de não-HFTs que conseguem passar pelo fluxo de ordens. Os tomadores tendem a agir como traders informados e seu fluxo de ordens pode ser considerado tóxico para outros participantes.
Um exemplo que a maioria dos traders já experimentou foi uma estratégia de HFT enviando ordens a uma taxa de 6.000 ordens colocadas e canceladas por segundo. Isso significa que cada cotação tem uma vida útil menor que 1,6 milionésimos de segundo — o tempo que a luz leva para percorrer cerca de 1.500 pés. Qualquer um que esteja a mais da metade dessa distância não tem chance de executar contra essas cotações. Esta é uma estratégia comumente usada chamada "quote stuffing", possível porque um participante do mercado está no mesmo datacenter que a exchange. Isso leva hoje a grandes spreads ocultos, criados quando ordens agressivas atingem a exchange.
Questões surgem sobre as regras do mercado que apenas o lado da venda pode aplicar com incentivo dos reguladores ou autorregulações para melhorar a qualidade de seus serviços. Os defensores do HFT dirão que eles melhoram a liquidez reduzindo o spread e a possibilidade de outras estratégias maliciosas, como spoofing, ocorrerem.
Outros dirão que tal velocidade é injusta. Não-HFTs se encontram sandwiched entre limites de taxa, estratégias de arbitragem estatística e cotações fantasmas, o que reduz a possibilidade de pequenos participantes vencerem. Além de participantes altamente qualificados, novos produtos como quantos de altcoins surgiram nos últimos anos e são os mais preocupantes no momento da redação deste artigo. A febre das ICOs e a maioria dos escritos e educações sobre a armadilha de liquidez do mercado de criptomoedas levaram os traders a preferirem produtos alavancados com liquidez aprimorada em vez de moedas/tokens spot de baixa liquidez, como detalhado no anterior digest da FTX de junho de Clarens Caraccio.
Estar longo em “Inverso” é mais arriscado do que estar “curto”. À medida que o preço cai, a posição acumula mais e mais delta e coloca o trader em um maior risco de liquidação. Uma nova onda de traders está se voltando para produtos altamente alavancados com a mesma baixa liquidez subjacente no spot, mas desta vez expostos a gamma negativa em posições “longas” ao usar colaterais não-USD.
Os formadores de mercado buscam posições neutras, suas taxas de ordens tomadoras dependem principalmente de seu inventário. Em maior volatilidade e sem incentivos adequados, eles não se incomodarão em executar uma liquidação ótima de seu inventário em livros de ordens limitadas fracas com intensidade controlada. Eles removem liquidez contra traders informados para evitar potenciais perdas. Participantes alavancados acabam tendo suas posições retiradas pelo motor de risco das exchanges apenas porque os livros de ordens do índice subjacente foram retirados.
Os mercados de Bitcoin e altcoins não são regulados por quaisquer “regras justas” genéricas em relação à latência, spreads, requisitos de colateral ou estrutura de taxas. Mas todas as exchanges aplicam limites de taxa baseados em volume. Esses limites são projetados principalmente para proteger os motores de correspondência contra a alta carga de demanda e fornecer um mercado eficiente de criptomoedas.
O surgimento de novas ferramentas para negociar rapidamente dentro desses limites e capturar a liquidez disponível permite que participantes não sistemáticos também capturem essas ineficiências com execução mais rápida para negociar contra formadores de mercado, mas isso entra diretamente em conflito com eles. O papel de cotar limites de liquidez baixa é um trabalho tedioso que precisa de incentivos, agora eles também são caçados, então reclamarão sobre a degradação do percentil 99 e usarão isso como um argumento para reclamar sobre a latência do motor de correspondência.
Algumas reflexões sobre como resolver esses dilemas
Um ponto sobre como as exchanges incentivam os formadores de mercado. Mercados legados que oferecem rebates excessivos foram o primeiro programa de incentivo da indústria para implementar um requisito de profundidade de livro. O volume executado de acordo com as regras de qualidade do mercado alinhará os interesses dos formadores de mercado e das exchanges, melhorando o ambiente geral de trading para investidores e todos os participantes nos mercados.
Sugerimos os seguintes pontos como formas de melhorar ainda mais a qualidade do mercado, a execução das exchanges e o desempenho de seus MEs.
O mercado sempre terá armadilhas semeadas por delicadezas, algumas criaram o mundo centralizado que conhecemos hoje e que estamos tentando disruptar, não vamos reproduzir erros do passado por ideologia e vamos tentar construir juntos o melhor do mundo com as melhores práticas em mente. Quanto maior a qualidade de um mercado, menores serão os custos explícitos para os investidores, garantindo assim uma melhor qualidade de execução.


