Tutorial de Bot da Polymarket · Capítulo 16 de 32
Arbitragem estatística na Polymarket: pares entre mercados (eventos correlacionados), spreads Polymarket vs Kalshi, reversão à média e como dimensionar posições de stat-arb quando os mercados eventualmente são resolvidos.
O que este capítulo cobre
Arbitragem estatística na Polymarket explora precificações incorretas transitórias entre mercados correlacionados - o mesmo evento na Polymarket vs Kalshi, ou mercados relacionados dentro da própria Polymarket. As margens são pequenas (1-3 cents, em geral) e operacionalmente frágeis. Este capítulo é honesto sobre o que funciona, o que não funciona e o risco de execução em várias pernas que derruba a maioria das tentativas.
A arbitragem estatística entre mercados explora inconsistências transitórias de preço entre Polymarket e Kalshi, Polymarket e Manifold, ou entre mercados correlacionados dentro da Polymarket. As margens são pequenas (1-3 cents, em geral) e exigem execução rápida nas duas pernas. Este capítulo é o playbook honesto, incluindo a complexidade operacional que derruba a maioria das tentativas.
- O que stat-arb significa em mercados de previsão
- Exemplos de spreads Polymarket-vs-Kalshi
- Pares dentro da Polymarket (eventos correlacionados)
- Reversão à média vs continuidade de tendência
- Dimensionamento para mercados com resolução (não perpétuos)
- Risco: divergência além da resolução
- Código: monitor de pares e gatilho por threshold
O que stat-arb significa em mercados de previsão
Arbitragem estatística em mercados de previsão significa negociar o spread entre dois mercados que deveriam estar precificados de forma consistente. Três variações são comuns na Polymarket.
- Entre venues: o mesmo evento na Polymarket e na Kalshi (ou Manifold, PredictIt). O preço deveria convergir; na prática, ele deriva 2-5 cents.
- Mesmo evento em par: mercado mãe versus soma das pernas em mercados multiresultado NegRisk. A invariância soma-para-1 permite fazer arb quando as pernas somam menos de 1,0.
- Par de eventos correlacionados: dois mercados sobre resultados relacionados (ex.: "Trump presidente em 1º de janeiro" vs "Trump presidente em 1º de março"). Deveriam estar precificados a no máximo 2-3 cents um do outro.
As margens são pequenas. A complexidade operacional é real. A maioria das tentativas morre na execução, não na teoria.
Exemplos de spread Polymarket vs Kalshi
Com base em observações em 2025-26, Polymarket e Kalshi listam os mesmos grandes eventos dos EUA, mas com preços 1-4 cents diferentes de forma relativamente constante. A diferença existe por razões estruturais que você precisa modelar em qualquer arb.
Fatores estruturais:
- Assimetria de taxas: a Kalshi cobra 4-7% nas operações vencedoras (varia por mercado); a Polymarket cobra 0 de taker fee. A matemática do arb precisa considerar o impacto da Kalshi.
- Prêmio de risco de settlement: quando a resolução de um mercado é ambígua, a UMA de uma venue pode resolver de forma diferente dos juízes da outra. O mercado precifica isso.
- Perfil dos traders: a Polymarket tende a ser mais jovem e mais nativa de cripto; a Kalshi tende a ser mais profissional / hedge. Eles discordam sistematicamente sobre os mesmos eventos.
O arb funciona quando o gap excede o prêmio estrutural mais as taxas. Um gap de 5 cents em um mercado onde o prêmio estrutural é 1c e as taxas combinadas são 1c representa uma vantagem real de 3c.
Pares dentro da Polymarket (eventos correlacionados)
Dentro da Polymarket, pares de eventos correlacionados são mais fáceis de fazer arb do que entre venues. Mesma estrutura de taxas, mesma carteira, execução atômica viável.
Exemplos que consistentemente ficam com preços inconsistentes:
- Trump presidente na data A vs Trump presidente na data B (quando B é mais tarde que A em menos de 90 dias).
- Bitcoin vai bater US$ 100 mil até 31 de julho vs até 31 de agosto.
- Pernas Yes vs No no mesmo mercado binário (a soma deveria = 1,0; às vezes deriva até 1,04 em books finos).
O arb Yes+No=1 é o mais limpo: leia as duas pernas do mesmo mercado e dispare FOK nas duas se a soma cair abaixo de 0,97 (permitindo a taxa do spread). O capital necessário é aproximadamente igual em cada perna; a execução é atômica quando os dois fills retornam na mesma resposta.
Reversão à média vs continuidade de tendência
Dois regimes de stat-arb. Reversão à média: o par se afastou por um motivo de ruído; você aposta na convergência. Continuidade de tendência: o par começou a divergir porque chegou informação nova; você aposta em mais divergência.
Distinguir os dois é a parte difícil. Heurística: se a divergência aconteceu com volume visível (uma baleia passou pelo book de uma perna), isso é notícia - faça fade só se você tiver um modelo. Se ela derivou lentamente com baixo volume, isso é ruído - opere a reversão com confiança.
Para quem está começando: opere apenas reversão à média, em pares onde a divergência seja menor que 1 desvio-padrão da deriva histórica. Continuidade de tendência exige um modelo que capte a notícia; sem isso, você está negociando contra fluxo informado.
Dimensionamento para mercados com resolução (não perpétuos)
Mercados de previsão são resolvidos. Pares em cripto não são. Isso muda a matemática.
Uma posição de pair-arb na Polymarket tem um cronograma de payoff fixo: quando os dois mercados são resolvidos, a diferença entre o spread previsto e o spread real fica travada. Não há rolagem, nem retenção infinita.
Implicação para o dimensionamento: o máximo que você pode carregar é limitado pelo tempo até a resolução, porque o capital fica preso até lá. Um par que resolve em 6 meses pode render 3c por ação, mas você não consegue colocar mais capital para trabalhar no meio do caminho se ambos os mercados já estiverem totalmente posicionados.
A forma certa de pensar: stat-arb na Polymarket é uma série de trades com tempo limitado, não uma estratégia contínua. Compare PnL por unidade de capital travado por dia, não PnL bruto.
Risco: divergência além da resolução
O pior resultado em stat-arb é sua previsão de convergência estar errada porque a premissa subjacente estava errada. Exemplos:
- Você vendeu a descoberto "Trump presidente em 1º de abril" esperando que convergisse para "Trump presidente em 1º de março" - mas o mercado da data 1 resolve YES e o da data 2 resolve NO por causa de um impeachment em março. Sua tese de que o "spread deveria ficar estável" estava errada.
- Você fez arb entre Polymarket e Kalshi para o mesmo vencedor das Finais da NBA. A Polymarket resolve para o time que venceu a série oficial; a Kalshi resolve com uma definição um pouco diferente que trata desempates em prorrogação de forma distinta. Ambas resolvem YES em seus próprios termos, mas em direções opostas.
Leia com atenção os critérios de resolução de cada mercado. Arb entre venues está a uma incompatibilidade de resolução de gerar perda total nas duas pernas.
Código: monitor de pares e gatilho por threshold
Referência: monitore dois tokens correlacionados e dispare o arb quando o spread cruzar o threshold.
def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
"""Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
while True:
book_a = fetch_book(token_a)
book_b = fetch_book(token_b)
if not (book_a.best_ask and book_b.best_bid):
time.sleep(2); continue
# implied: cost of buying A at ask + value of selling B at bid
edge = (1 - book_a.best_ask) + book_b.best_bid - 1
if edge > threshold_cents / 100:
print(f"ARB edge={edge:.3f}; firing")
r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
if r_a.status != "matched": continue
r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
if r_b.status != "matched":
# leg A filled, B failed -- unhedged, exit A
fok_sell(token_a, price=book_a.best_bid, size=size)
time.sleep(3)
A limpeza em caso de fill parcial é crítica. Sem isso, a execução parcial deixa o bot exposto direcionalmente, o que é o oposto do objetivo do stat-arb.





