Mercados de previsão são basicamente um cassino para quem não sabe fazer conta, mas uma mina de ouro para quem entende do riscado. Aqui você não negocia ativos, mas sim probabilidades de futuro. Arbitragem é o único jeito de tirar lucro consistente dessas plataformas, ignorando o ruído das notícias.
A matemática por trás do spread
Arbitragem na Polymarket ou Kalshi se resume a achar cotações "tortas", onde o custo total dos contratos "Sim" e "Não" não bate 1. Se você compra um resultado por um total de US$ 0,95 e o pagamento em caso de acerto é US$ 1,00, seu retorno é de 5,2%. É um trade "sem risco", desde que você saiba lidar com o risco de execução (o famoso leg risk).
A fórmula do lucro de verdade:Net Profit = (1 - Price_Yes - Price_No) - (Taker Fees + Network Gas)
Se o retorno final ficar abaixo de 2%, você tá trabalhando de graça, perdendo dinheiro com taxa de transação e tempo monitorando gráfico.
Arquitetura de bot na prática
Esquece interface web. Você precisa de um agente local que consiga bater um papo direto com a API das casas. Abaixo tem um template funcional em Python que puxa os dados na tora e calcula o delta pra você.
import requests
import time
# Inicializa a sessão pra ganhar performance
session = requests.Session()
def get_best_bid_ask(market_id):
"""
Pega o orderbook direto da API da Polymarket
"""
url = f"https://clob.polymarket.com/orderbook/{market_id}"
response = session.get(url).json()
# Pega os melhores preços
return float(response['bids'][0][0]), float(response['asks'][0][0])
def scan_arbitrage(market_yes, market_no):
# Busca os preços de Ask (compra)
_, ask_yes = get_best_bid_ask(market_yes)
_, ask_no = get_best_bid_ask(market_no)
total_cost = ask_yes + ask_no
if total_cost < 0.96: # 4% de gordura pra Gas e slippage
print(f"!!! ARBITRAGEM ACHADA: {total_cost:.4f} !!!")
# Coloca a lógica de chamada da sua carteira aqui
else:
print(f"Spread tá curto: {total_cost:.4f}")
# Exemplo de ID (muda conforme o evento)
# scan_arbitrage('2187654321', '2187654322')
Pegadinhas e gírias do meio
- Resolution Delay: A maior dor de cabeça. O mercado fecha, mas o dinheiro fica travado por causa de treta no oráculo da UMA. Seus fundos ficam "congelados" de 3 a 14 dias. Arbitragem é, acima de tudo, gestão de capital de giro.
- Order Book Ghosting: É comum ter "ordens fantasma" nas plataformas. Você vê o preço de US$ 0,40, mas na hora de comprar o volume, o preço pula instantaneamente pra US$ 0,45. É o robô do formador de mercado (AMM) defendendo o spread dele na marra.
- Cross-Platform Skew: Os preços na Kalshi costumam descolar da Polymarket por causa do perfil da galera. Nos EUA (Kalshi), os traders fazem hedge de risco político muito mais agressivo, enquanto a Polymarket é o velho oeste dos cripto-entusiastas. Fica de olho na correlação: se o BTC cai na exchange, a Polymarket reage mais rápido que a Kalshi.
Eficiência operacional
| Cenário | Risco | Lucratividade | Veredito |
|---|---|---|---|
| Single-Platform | Baixo | 1-2% | Não paga o esforço |
| Cross-Platform | Médio | 3-7% | O ouro pros bots |
| Hedge com Opções | Alto | 10%+ | Só pra pro com caixa forte |
Como não quebrar a banca de cara
Regra de ouro: não entra em mercado com volume baixo. Se a liquidez dos dois lados for menor que US$ 50 mil, sua entrada vai causar um slippage que vai comer todo seu lucro. Procure eventos com giro diário acima de US$ 500k.
Manha técnica: Se estiver na Polygon (Polymarket), nunca deixe o gás no padrão. Arbitragem é briga de foice com bot de MEV. Bota o seu maxPriorityFeePerGas acima do mercado pra garantir que sua ordem entre no próximo bloco.
Pra arbitragem não virar um dreno de taxa, pare de focar em "achar spread" e foque em "gestão de execução". O jogo aqui não é quem acha a diferença primeiro, é quem tem o bot que compila e joga no mempool mais rápido.
Anatomia da execução: Por que seu código falha
O problema de 90% dos scripts é a execução em série. Você faz o request pra Polymarket, espera, faz pra Kalshi, calcula, e só depois manda o trade. Nesse tempo, os Market Makers, rodando WebSocket e ordem pré-carregada, já comeram o book.
O que os profissionais fazem:
- WebSocket em vez de REST: Polling é coisa do passado. Você precisa manter conexões abertas pra ambos os orderbooks. Receber dado em real-time economiza de 200 a 800 ms.
- Multicall/Batching: Em vez de duas transações, use um smart contract como intermediário. O contrato recebe suas ordens num único call e executa tudo de forma atômica. Se um lado falha, o contrato faz um revert. Isso te salva daquela "arbitragem de uma perna só", onde você compra um lado e o outro te deixa na mão.
Execução otimizada (Conceito Solidity)
Se você tá na rede EVM, seu melhor amigo é o delegatecall. Com ele, você resolve a arbitragem num único passo atômico.
// Conceito pra executar ordens de arbitragem
function executeArbitrage(
address target,
bytes calldata data1,
bytes calldata data2
) external payable {
// Executa as duas pontas num único bundle
(bool success1, ) = target.call{value: msg.value / 2}(data1);
(bool success2, ) = target.call{value: msg.value / 2}(data2);
// Se a arbitragem der ruim, faz revert e sai no zero a zero
require(success1 && success2, "Arbitrage execution failed - reverting");
}
O pulo do gato: Trading "Event-Driven"
Nos mercados de previsão, o preço muitas vezes não pula por força do mercado, mas por mudança de status do oráculo ou notícia saindo.
- Indicadores antecedentes: Tá no mercado político? Plugue seu bot num feed de notícias (via API da Bloomberg ou uns scrapers de Telegram bem feitos). A Polymarket reage de 1 a 3 segundos antes da massa. Seu objetivo é estar posicionado antes que o grosso do mercado processe a notícia no book.
- Arbitragem sintética: Às vezes compensa mais usar futuros do que arbitrar o "Sim/Não" direto. Se a chance no mercado de previsão explode, mas o futuro equivalente não mexe, o mercado de previsão tá "superaquecido". Você faz short no mercado de previsão e long no futuro. Quando a poeira baixar, você realiza o lucro dos dois lados.
Checklist antes de soltar o capital:
- Benchmarking de Gas: Simule o custo de gás a 50 Gwei e 200 Gwei. Se o lucro da arbitragem só compensa com 50 Gwei e a rede tá travada – desligue o bot.
- Limite de Slippage: Em arbitragem, nunca use Market Order. Apenas Limit Order, um tiquinho acima do melhor ask. Se o preço escapou, melhor perder o trade do que entrar tomando prejuízo na execução.
- Análise de dados "sujos": Tem API de plataforma que entrega "preço médio ponderado", que não tem nada a ver com a realidade do book. Sempre parseie asks e bids direto, ignora a coluna last_price.
Arbitragem aqui não é fórmula mágica pra ficar rico, é trabalho braçal pra capturar vantagem matemática. Menos emoção e mais código: é assim que o seu saldo em USDC cresce mais rápido que a inflação.