Tutorial de Bot da Polymarket · Capítulo 11 de 32
Como funcionam os mercados multi-outcome NegRisk na Polymarket: mecânica de soma para 1, a flag negRisk em ordens CLOB, por que as pernas YES em NegRisk não são intercambiáveis e as melhores práticas de execução.
O que este capítulo cobre
Mercados NegRisk são o mecanismo da Polymarket para eventos multi-outcome mutuamente exclusivos - os candidatos da eleição de 2024, o vencedor da Premier League, chaves de torneios. A maioria dos bots falha ao lidar com eles corretamente na primeira tentativa porque a colocação da ordem exige uma flag que é descartada silenciosamente se estiver ausente. Este capítulo cobre a mecânica e o caminho de código em produção.
- O que NegRisk significa (pernas Yes mutuamente exclusivas)
- Por que os totais de YES ficam perto de 1 USD
- O parâmetro neg_risk na colocação de ordens
- Hedge entre pernas NegRisk
- Quando o arb de NegRisk funciona (e quando não funciona)
- Casos extremos de resolução
- Código: colocar uma ordem NegRisk
O que NegRisk significa (pernas Yes mutuamente exclusivas)
NegRisk (abreviação de "negative risk") é o mecanismo da Polymarket para eventos com múltiplos outcomes mutuamente exclusivos - apenas um pode resolver YES. A Eleição Presidencial de 2024 foi um evento com NegRisk: uma posição Trump-YES e uma posição Harris-YES não podem ambas pagar.
Por baixo dos panos: um único evento NegRisk tem um question_id pai e N mercados filhos, cada um com seu próprio YES/NO. A exchange aplica a regra de soma para 1 nas pernas YES na resolução - exatamente uma resolve para 1.0 e as demais para 0.0.
Do ponto de vista de um bot, a perna YES de cada outcome é negociada como seu próprio token, com seu próprio book e preço. A flag negRisk na colocação de ordens (abaixo) roteia a operação para o contrato de exchange específico de NegRisk; se ela estiver ausente, a ordem vai para a exchange CTF padrão e falha silenciosamente na liquidação.
Por que os totais de YES ficam perto de 1 USD
Arbitradores mantêm continuamente a soma dos preços YES em todas as pernas NegRisk em ≈ 1.0. Se Trump-YES está a 0.55 e Harris-YES a 0.40 e não há outros candidatos competitivos, o 0.05 faltante é aproximadamente a probabilidade implícita de "qualquer outro outcome". Quando a fatia faltante excede a probabilidade implícita da cauda, existe uma oportunidade de arb: compre todas as pernas YES proporcionalmente, somando menos de 1.0, e trave a diferença.
Na prática, o arb é competitivo - o desconto visível normalmente é de 1 a 2 centavos em eventos líquidos, e desaparece em minutos após a abertura. O arb também é limitado por liquidez: você pode travar US$1k de desconto, mas não US$20k.
A maioria dos bots não faz arb de NegRisk; eles negociam pernas individuais e precisam respeitar a flag negRisk para que a execução seja correta.
O parâmetro neg_risk na colocação de ordens
Nos SDKs CLOB v2, a colocação de ordens recebe um objeto de flags com um booleano negRisk. O valor deve corresponder ao tipo de mercado:
// Node (CLOB v2)
await client.createAndPostOrder(
{ tokenID, price: 0.45, size: 10, side: Side.BUY },
{ tickSize: '0.01', negRisk: true }, // <-- TRUE for NegRisk
OrderType.FOK
);
A flag também é um parâmetro na assinatura da op daemon que a maioria dos bots em produção usa:
{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }
Fonte da verdade: market.negRisk da Gamma API. Sempre leia isso; nunca faça hardcode. Um mercado BTC para cima/baixo é negRisk: false (binário); um mercado de vencedor de torneio é negRisk: true (multi-outcome). Trocar esses valores envia ordens para a exchange errada e gera falhas de transferência na liquidação.
Hedge entre pernas NegRisk
Se você estiver comprado em Trump-YES a 0.50 e quiser se proteger contra uma queda de Trump, existem duas opções dentro de NegRisk.
Comprar uma perna NO concorrente (por exemplo, Harris-NO a 0.45). Isso paga se Harris perder, o que inclui Trump vencer. É assimétrico - paga se Trump vencer, mas fica sem valor se Trump perder para um terceiro candidato.
Comprar todas as pernas YES concorrentes em proporção. Se sua carteira estiver totalmente balanceada entre as pernas NegRisk, sua exposição fica protegida: exatamente uma vai pagar. Essa é a posição de synthetic-cash.
O instrumento de hedge que não funciona como esperado: uma perna NO no seu mercado existente. Trump-NO é correlacionado com as outras pernas YES, mas não perfeitamente - se a resolução for "Other", seu Trump-YES e seu Trump-NO vão ambos para 0. As pernas NegRisk não são binários puros.
Quando o arb de NegRisk funciona (e quando não funciona)
O arb de NegRisk de "somar menos de 1.0" funciona quando três condições são atendidas.
- Todas as pernas têm liquidez: cada perna que você precisa comprar tem pelo menos US$1k de profundidade no preço desejado. Arb exige bater em múltiplos books simultaneamente; uma perna ilíquida quebra a operação inteira.
- Spread apertado o suficiente: o custo acumulado de spread em todas as pernas precisa ser menor que o desconto. Cinco pernas com spread de 0.5c cada somam 2.5c de custo; se o desconto for 1.5c, o arb é negativo.
- Você pode segurar até a resolução: arb de NegRisk é arb de liquidação. Você recebe o payout quando o evento pai é resolvido; se isso ocorrer daqui a 6 meses, seu capital fica travado.
Para 95% dos bots, arb de NegRisk não é a estratégia. As estratégias restantes negociam pernas individuais e a flag negRisk existe apenas para garantir que a ordem seja roteada corretamente.
Casos extremos de resolução
Dois casos extremos para ter em mente ao segurar posições NegRisk até a resolução.
Outcomes de "nenhuma das opções acima": alguns eventos NegRisk incluem uma perna explícita "Other" ou "None of the above". Se a resposta real não corresponder a nenhuma perna nomeada, essa é a vencedora. Bots que não modelam a perna Other explícita às vezes a tratam como um caso degenerado e perdem o payout.
Resoluções contestadas: a resolução de NegRisk passa pela UMA como qualquer outro mercado. Se houver contestação, o mercado pode ficar sem resolução por 24-72 horas. Durante essa janela, o front-end pode mostrar "resolved" enquanto os pagamentos on-chain ainda não foram definidos. Ler payoutNumerators no contrato CTF é a única forma segura de confirmar.
Código: colocar uma ordem NegRisk
Exemplo completo em Node colocando uma ordem de compra de uma perna YES NegRisk.
import { ClobClient, Side, OrderType } from "@polymarket/clob-client-v2";
import { Wallet } from "ethers";
const c = new ClobClient({
host: "https://clob.polymarket.com", chain: 137,
signer: new Wallet(process.env.PRIVATE_KEY),
creds: { key: K, secret: S, passphrase: P },
signatureType: 2,
funderAddress: process.env.POLY_FUNDER,
});
// market.negRisk === true (verified via Gamma earlier)
const resp = await c.createAndPostOrder(
{ tokenID: "<YES_TOKEN_ID>", price: 0.42, size: 25, side: Side.BUY },
{ tickSize: "0.01", negRisk: true },
OrderType.FOK
);
console.log(resp.status, resp.orderID);
O bug mais comum entre novos builders: omitir negRisk: true em um mercado NegRisk. A ordem é aceita pelo CLOB, mas a liquidação falha. Sempre leia market.negRisk da Gamma e repasse esse valor; nunca confie em adivinhar pelo título da pergunta.














