Qual problema o LSAMM resolve?
Mercados com order book sofrem em mercados de previsão de cauda longa. Simplesmente não há compradores e vendedores simultâneos suficientes para manter o book profundo, especialmente para perguntas de nicho que mercados de previsão estão unicamente equipados para responder — coisas como "O Banco Central do Brasil vai cortar juros duas vezes no T3?" ou "A OpenAI vai lançar o GPT-6 antes de dezembro?". Market makers automatizados (AMMs) resolvem isso atuando como contraparte sempre disponível para cada trade.
LSAMM (Logarithmic Scoring Automated Market Maker) é um descendente moderno do LMSR de Robin Hanson. Ele preserva toda propriedade desejável do LMSR — perda limitada para o operador, subsídios aditivos, precificação suave — e adiciona liquidez dinâmica para que o mercado se expanda conforme o volume cresce. O resultado é um AMM que cota preços úteis desde o primeiro trade e ainda se comporta racionalmente quando o volume diário chega a milhões de dólares.
O modelo mental mais limpo é este: LSAMM é softmax para mercados de previsão, com uma temperatura que escala com o tamanho do mercado.
Essa frase está fazendo bastante trabalho pesado. No final deste artigo você vai ver exatamente por que ela é verdade, como a implementação se parece, e onde o LSAMM vence — e perde — para suas alternativas. Se você é novo no cenário mais amplo, comece pela nossa introdução aos mercados de previsão antes de continuar.
Recap rápido do LMSR
O Logarithmic Market Scoring Rule original do Hanson define uma função custo:
C(q1, q2, ..., qn) = b * ln(Σ exp(qi / b))
Onde qi é o número de ações em aberto do resultado i e b é um parâmetro fixo de liquidez. O preço do resultado i é a derivada parcial ∂C/∂qi, que simplifica para:
p_i = exp(qi / b) / Σ exp(qj / b)
Isso é apenas um softmax sobre quantidades de ações. A perda máxima do operador é b * ln(n) para n resultados, então escolher b equivale a orçar quanto subsídio você está disposto a comprometer com o mercado.
O LMSR é elegante, provadamente limitado, e foi implantado em produção por duas décadas. Mas tem uma limitação importante: b é fixo na criação do mercado. Escolha baixo demais e os preços oscilam violentamente em pequenos trades. Escolha alto demais e você subsidia menos trades do que gostaria — e pior, participantes tardios pagam quase o mesmo slippage que o primeiro trader. O LSAMM resolve exatamente isso.
A função custo do LSAMM
O LSAMM é construído em torno de uma única função custo:
C(q1, q2, ..., qn) = L_dynamic * (q_max / L_dynamic + ln(Σ exp((qi - q_max) / L_dynamic)))
Onde:
qi— quantidade efetiva do resultado i (ações reais + reserva de liquidez virtual)q_max— quantidade máxima entre todos os resultadosL_dynamic = α × Σ qi— liquidez que escala com o tamanho total do mercadoα— coeficiente de liquidez (calibrado por mercado)
Um trader comprando Δq do resultado i paga exatamente C(depois) − C(antes). O mercado nunca cota preço negativo e nunca soma a uma probabilidade acima de 1. O deslocamento por q_max antes da exponenciação é um truque de estabilidade numérica emprestado direto das implementações de softmax em frameworks modernos de deep learning.
Se você acha a forma algébrica intimidante, aqui está a mesma ideia em pseudocódigo:
def lsamm_cost(quantidades, alpha):
q_max = max(quantidades)
L = alpha * sum(quantidades)
if L <= 1e-12:
return 0.0
estab = [(q - q_max) / L for q in quantidades]
return L * (q_max / L + math.log(sum(math.exp(s) for s in estab)))
A função é monotônica, convexa e contínua. Isso basta para garantir uma cotação bem comportada em qualquer estado do mercado.
Por que o logaritmo?
O logaritmo dá ao LSAMM duas superpotências, ambas saídas do cálculo básico.
Convexidade protege contra baleias
Comprar mais ações custa progressivamente mais, o que impede um único ator bem capitalizado de "cornerar" um resultado barato. O custo marginal cresce com a quantidade, então um atacante tentando empurrar o preço de 50¢ para 90¢ paga exponencialmente mais do que o shift implícito de probabilidade sugeriria. É a mesma propriedade que mantém mercados com order book estáveis quando uma ordem grande come o livro.
Estabilidade numérica em volumes extremos
Ao subtrair q_max antes da exponenciação, você evita overflow em exp(gigante) mesmo para trilhões de ações. Aritmética de ponto flutuante em IEEE-754 começa a falhar em torno de exp(709), então sem o deslocamento, qualquer mercado com quantidades acima de ~700 quebraria. Com o deslocamento, você roda um mercado com quantidades efetivas na casa dos quadrilhões sem overflow. É o mesmo truque usado em softmax para redes neurais e na cross-entropy loss do PyTorch.
Preço marginal = probabilidade de mercado
O preço marginal do resultado i é a derivada parcial da função custo. Para resultados não-máximos simplifica lindamente:
∂C / ∂qi = exp((qi - q_max) / L_dynamic) / Σ exp((qj - q_max) / L_dynamic)
Isso é literalmente o softmax das quantidades efetivas. Preços marginais sempre somam 1 entre os resultados — uma distribuição de probabilidade limpa por construção. Todo trader que compra o resultado i empurra seu preço para cima e o preço dos demais para baixo, e o sistema permanece sempre um simplex de probabilidade válido.
Essa é a propriedade que permite ler um preço de mercado de previsão como uma probabilidade sem matemática extra. É também por que um mercado LSAMM é uma ferramenta de agregação de informação estritamente melhor que uma casa de aposta cobrando vig, onde os preços são distorcidos pelo objetivo de balanceamento de risco do bookmaker. Para um comparativo mais profundo entre engines, veja comparando modelos de liquidez em AMMs.
Liquidez dinâmica na prática
No LMSR, o parâmetro de liquidez b é fixo na criação. O LSAMM amarra a liquidez à quantidade total apostada:
L_dynamic = α × Q_total
O resultado é um mercado auto-regulador que se comporta corretamente ao longo de todo o ciclo de vida da pergunta.
| Fase | Q_total | Comportamento de preço | Por que é bom |
|---|---|---|---|
| Cold start | Pequeno | Muito responsivo | Informação inicial move o mercado rapidamente em direção à verdade. |
| Maduro | Grande | Estabiliza em torno do consenso | Traders tardios veem spreads mais apertados e menos slippage. |
| Choque de notícia | Pico | Reprecificação suave | Convexidade cresce com tamanho, bloqueando manipuladores. |
| Dia de resolução | Frequentemente máximo | Assintoticamente apertado | Preço final reflete o maior pool de capital. |
Essa é a diferença que torna o LSAMM production-ready. Um LMSR com b = 100 cota o mesmo slippage no 10.000º trade e no 1º trade. Um LSAMM com α = 0,05 se comporta como um LMSR com b = 100 quando o mercado está vazio e como um LMSR com b = 10.000 quando agregou US$ 200k em volume — sem intervenção do operador.
Escolhendo o coeficiente de liquidez α
α é o único parâmetro tunável, e determina duas coisas ao mesmo tempo: o orçamento de subsídio e a curva de slippage. Faixa default razoável: 0,02 ≤ α ≤ 0,10. Valores menores produzem preços mais responsivos e orçamento de subsídio menor; valores maiores produzem preços mais suaves e exigem mais capital inicial do operador.
Loop prático de calibração:
- Estime o notional diário esperado no mercado.
- Defina o slippage de ida-e-volta aceitável em, digamos, 1% do notional diário.
- Resolva numericamente o
αque entrega esse slippage comQ_totaligual ao inventário médio. - Faça backtest com tape histórica de mercados similares — seus próprios, ou order books públicos na Polymarket.
Sem dados históricos, comece com α = 0,05 e ajuste após os primeiros 10 mercados.
Truques de estabilidade que o código de produção precisa cuidar
Quando você de fato implanta o LSAMM, vários casos extremos precisam ser tratados. Ignorá-los é a causa nº 1 de incidentes em produção em código de market maker.
- Mercado vazio (
Q_total ≈ 0) → retorne preços uniformes1/n. Sem essa guarda, a função custo avalia0/0e você obtémNaNna criação. - α minúsculo → proteja contra
L_dynamic ≤ εpara evitar divisão por zero. Um mercado comα = 0,001eQ_total = 1temL_dynamic = 0,001, que pode underflow antes do próximo trade. - Desbalanceamento extremo → normalize as exponenciais por
q_maxantes da soma. Caso contrárioexp(qi/L)faz overflow assim queqi/Lexcede ~709 em precisão dupla. - Quebra de trade → ordens muito grandes devem ser precificadas como uma integral única, não como uma sequência de trades pequenos. Caso contrário a fórmula de slippage tem erros de arredondamento na ordem de 10⁻⁶ que acumulam em milhões de trades.
- Arredondamento para a moeda de liquidação → sempre arredonde para cima o custo cobrado do usuário, nunca para baixo. Um erro de 1 centavo em 100 mil trades vira um buraco de US$ 1.000 no P&L do operador.
Essas guardas tornam o LSAMM um default robusto para cargas de produção. Errar nelas é embarcar um AMM que cai no primeiro trade de US$ 1M num mercado vazio.
Como o LSAMM difere do LMSR e do CPMM
O LSAMM vive em uma família com vários outros AMMs. Comparativo direto.
| Aspecto | LMSR | CPMM (estilo Uniswap) | LSAMM |
|---|---|---|---|
| Parâmetro de liquidez | b fixo | Razão da reserva | α × Q_total dinâmico |
| Subsídio necessário | Sim (operador funda b) | Não (financiado por LPs) | Pequeno (operador-financiado, menor que LMSR) |
| Comportamento em escala | Slippage constante | Slippage encolhe com TVL | Slippage encolhe com volume |
| Invariante de probabilidade | Soma 1 | Não soma 1 de forma limpa | Soma 1 |
| Implementação | Mais simples | Trivial | Um pouco mais matemática |
| Ideal para | Cauda longa de previsão | Swap de tokens DeFi | Volume alto em previsão |
O LMSR continua excelente como primer; CPMMs são a escolha certa quando você quer liquidez de LPs e não precisa de um simplex de probabilidade; o LSAMM é o que você puxa quando o tráfego de produção num mercado de previsão fica sério.
Para pensar em trade-offs com mais profundidade — incluindo designs híbridos que combinam LSAMM com order book — veja o post companheiro sobre microestrutura de mercado para previsões.
Exemplo trabalhado: mercado eleitoral com 3 resultados
Imagine uma eleição com três candidatos A, B e C, e seed inicial de 1.000 ações virtuais em cada lado. Com α = 0,05:
Q_total = 3.000, entãoL_dynamic = 150- Todos
qi = 1.000, então cada preço éexp(0) / (3 * exp(0)) = 1/3 ≈ 33,3%
Agora um trader compra 100 ações de A. Novo estado: q = [1.100, 1.000, 1.000], Q_total = 3.100, L_dynamic = 155. Novo preço de A:
p_A = exp((1100 - 1100) / 155) / (exp(0) + exp(-100/155) + exp(-100/155))
= 1 / (1 + 2 * exp(-0,645))
= 1 / (1 + 2 * 0,525)
≈ 0,488
O preço de A pulou de 33,3% para 48,8% numa compra de 100 ações. Movimento relevante — exatamente o que se quer num mercado inicial onde informação nova deve ser precificada rapidamente. O mesmo trade num mercado maduro com Q_total = 30.000 moveria o preço de A em apenas ~1,5 pontos percentuais, porque L_dynamic seria 10x maior.
Essa é a assinatura do LSAMM: responsivo quando pequeno, robusto quando grande.
Padrões de implementação e armadilhas
Se você for implementar o LSAMM do zero, algumas lições caras.
Use aritmética fixed-point de 128 bits em deploys on-chain. Os inteiros nativos de 256 bits do Solidity dão conta de cálculos de custo, mas a versão floating-point da função custo é perigosa na EVM. Os contratos da Polymarket e o Gnosis Conditional Tokens usam aritmética fixed-point com guardas de overflow.
Pré-compute q_max de forma preguiçosa. Todo trade recomputa, mas você só precisa atualizar q_max no resultado sendo negociado. Atualizações preguiçosas economizam 30–50% de gas em mercados movimentados.
Cacheie L_dynamic entre trades consecutivos que não mudam Q_total materialmente. Em mercado de alta frequência salva outros 10–20% de compute.
Snapshot antes do trade. Calcule C_antes de um snapshot determinístico de (qi) antes da transação do usuário ser aplicada, senão trades concorrentes produzem valores inconsistentes de liquidação.
Teste a fronteira de underflow. Escreva testes de propriedade que martelam o sistema com quantidades próximas de 2^256 e com trades de uma única ação em mercados contendo trilhões de ações. Os bugs em implementações de LSAMM quase sempre moram nos extremos.
Quando o LSAMM é a escolha errada
O LSAMM não é universal. Use outro design quando:
- Você quer liquidez financiada por LPs. O LSAMM é operador-financiado. Se quer usuários provendo liquidez em troca de fees, olhe designs estilo CPMM ou order books híbridos.
- O mercado tem só dois resultados e liquidez muito profunda. Um order book centralizado cotará preços mais apertados em escala, motivo pelo qual a Kalshi e o Iowa Electronic Markets usam order book.
- O mercado resolve continuamente, não em ponto fixo. O LSAMM presume um único evento de resolução. Mercados em streaming — como um jogo contínuo de Brier-score — precisam de uma função custo inteiramente diferente.
- O mercado precisa de redenção parcial de contratos (ex.: scoring rules ligados a tábuas de mortalidade). Use uma regra de pontuação própria diretamente em vez de envolver um AMM em volta dela.
A maior parte das plataformas de previsão não bate nessas bordas. Para tudo o mais, o LSAMM é o default moderno.
Perguntas Frequentes
LSAMM e LMSR são iguais?
O LSAMM é uma generalização do LMSR. O LMSR usa um parâmetro de liquidez fixo b; o LSAMM usa L_dynamic = α × Q_total que escala com a quantidade total. Quando o mercado é pequeno, o LSAMM se comporta como LMSR com b pequeno; quando é grande, como LMSR com b grande. A matemática é idêntica — ambos reduzem a uma função custo log-sum-exp cujos preços são um softmax sobre quantidades.
O LSAMM pode perder mais que seu subsídio inicial?
Não. Como o LMSR, o LSAMM tem perda provadamente limitada para o operador. A perda máxima é L_dynamic * ln(n) em qualquer momento, e como L_dynamic cresce apenas com Q_total, o subsídio escala suavemente. Na prática a perda do operador é compensada por taxas de trading assim que o volume é não-trivial, por isso várias plataformas embarcam LSAMM com fee de 1–2% sobre notional negociado.
Como escolho o α certo?
Comece com α = 0,05 como default. Aumente se traders reclamarem de slippage em mercados pequenos; reduza se quiser descoberta de preço mais aguda em cold-starts. A calibração mais rigorosa é rodar A/B test em dois mercados paralelos com α = 0,03 e α = 0,07 e medir satisfação do trader mais queima de subsídio do operador numa janela de 30 dias.
O LSAMM funciona com resultados contínuos?
Não diretamente. O LSAMM é definido sobre um conjunto discreto de resultados mutuamente exclusivos. Para resultados contínuos (ex.: "Qual será o preço de fechamento do Bitcoin em 31 de dezembro?"), você pode dividir o espaço em buckets discretos e rodar LSAMM neles, ou usar mecanismos diferentes como os designs em árvore LMSR que tratam espaços estruturados.
Como o LSAMM se compara ao CPMM da Uniswap?
Objetivos diferentes, matemática diferente. O x*y=k da Uniswap é otimizado para swaps de tokens e não produz simplex de probabilidade naturalmente — os preços não somam 1. O LSAMM é otimizado para previsão e garante o invariante de probabilidade por construção. Você não usaria Uniswap para precificar uma eleição binária, e não usaria LSAMM para trocar dois ERC-20.
Qual a conexão entre LSAMM e softmax em machine learning?
São literalmente a mesma função. A fórmula de preço marginal do LSAMM é o softmax das quantidades efetivas divididas por L_dynamic. Em ML, softmax converte logits em probabilidades de classe; em LSAMM, softmax converte contagens de ações em probabilidades de resultado. O L_dynamic faz papel de temperatura inversa — L_dynamic alto produz distribuições mais planas, baixo produz mais agudas.
O LSAMM é open source?
Várias implementações são open source, incluindo os contratos de referência do Gnosis Conditional Tokens Framework e o AMM da Polymarket. A maioria dos deploys de produção constrói em cima dessas primitivas com tiers de fees customizados, integração com KYC e oracles de resolução. A matemática é pública — o endurecimento de produção é onde mora a engenharia.
Como o LSAMM lida com mercados multi-outcome com popularidade muito desigual?
A estrutura softmax cuida da assimetria automaticamente. Se o resultado A tem 10.000 ações e B e C têm 100 cada, o preço de A vai estar muito próximo de 1 e B/C perto de 0 — mas nunca exatamente lá. Sempre há um preço não-zero nos resultados de cauda, que é matematicamente necessário para fechar o simplex e economicamente útil porque permite traders contrarians apostarem contra a multidão. É uma das propriedades elegantes que o LSAMM herda do LMSR e da literatura mais ampla de scoring rules.
Para onde ir a seguir
Você agora tem um modelo mental funcional do LSAMM. Próximos passos naturais:
- Veja como o LSAMM se compara a outras engines em comparando modelos de liquidez em AMMs.
- Entenda como estrutura de mercado afeta a descoberta de preço em microestrutura de mercado para previsões.
- Se quer usar LSAMM para desenhar produtos, leia design de categorias e mercados binários vs múltiplos.
- Para o contexto fundacional, nossa introdução aos mercados de previsão amarra tudo.
Se você levar uma coisa, leve essa: LSAMM é softmax, mas para mercados de previsão — e a temperatura escala com o tamanho do mercado. Quando essa imagem clica, o resto da matemática é só contabilidade.