Tutorial de Bot da Polymarket · Capítulo 14 de 32
Arbitragem de notícias na Polymarket: como vencer o mercado em headlines, source feeds (RSS/Twitter/AP), latency budgets, filtros de falso positivo e quando a vantagem das notícias desaparece no preço de mercado.
O que este capítulo aborda
Arbitragem de notícias é a estratégia de negociar informações públicas mais rápido do que o mercado recalcula o preço. A vantagem é real, mas estreita - a maior parte das "news" já está no preço quando um humano consegue ler. Este capítulo cobre quais fontes realmente vencem o mercado, o latency budget que define a estratégia e o filtro de falso positivo sem o qual o bot opera em todo retweet.
- Como é uma vantagem de informação
- Fontes de notícias: RSS, Twitter, AP, official feeds
- Latency budget: read-to-trade em menos de 2 segundos
- Filtros de falso positivo
- Quando a vantagem das notícias morre
- Código: consultar news feed e colocar FOK em mercados relevantes
- Risco: meias verdades e manchetes retratadas
Como é uma vantagem de informação
Arbitragem de notícias significa negociar informações públicas mais rápido do que o mercado recalcula o preço. A vantagem existe em uma janela estreita - normalmente 30 a 300 segundos - entre um fato se tornar público e a Polymarket refletir isso.
Para a vantagem ser real, três coisas precisam ser verdade. Primeiro, a fonte da notícia precisa ser mais rápida do que o trader mediano da Polymarket (Twitter é mais rápido do que a imprensa mainstream; o AP wire é mais rápido do que Twitter). Segundo, a notícia precisa ser inequívoca (um anúncio de lesão, uma decisão judicial) - interpretação consome latência. Terceiro, o mercado precisa ser amplo o suficiente para que o movimento de preço valha o spread tax.
Bots que caçam essa vantagem se dividem em dois grupos: os que assinam fontes diretas e fazem parsing, e os que observam um movimento incomum de preço na Polymarket e inferem que a notícia aconteceu. Ambos são válidos; o primeiro lidera, o segundo segue.
Fontes de notícias: RSS, Twitter, AP, official feeds
Fontes ranqueadas por latência até o status de informação pública, mais rápidas primeiro.
- Fontes primárias diretas: registros judiciais, press releases governamentais, anúncios de bancos centrais. Muitas vezes têm RSS público ou API. Mais rápidas, menor taxa de falso positivo.
- AP wire / Reuters Eikon (pago). O wire que traders tradicionais usam. ~5 a 30 segundos de vantagem sobre o Twitter do consumidor.
- Twitter (X, API paga). Listas de contas verificadas: contas oficiais de organizações, repórteres setorialistas. APIs gratuitas têm rate limit muito baixo; pague o tier Pro ou use um relay service.
- Newsletters / Discord especializados: Substacks pagos, feeds setoriais com embargo. Úteis para mercados de nicho (crypto, esports).
- Sites de imprensa mainstream: lentos demais para a vantagem de news-arb.
Use RSS para tudo que publica RSS - é grátis, e os intervalos de polling são confiáveis. Twitter para o resto. AP para news desks com seriedade de produção.
Latency budget: read-to-trade em menos de 2 segundos
O bot precisa ingerir, classificar, decidir e enviar uma ordem em 1 a 2 segundos no total. Budget:
- Ingest: 50 a 300ms (websocket feed, RSS poll, Twitter stream).
- Classify: 50 a 200ms (regex / keyword match, opcionalmente LLM se você cachear o prompt).
- Decide: 50ms (lookup em tabela de regras; mapeamento de news tag para market slug).
- Place: 200 a 500ms (ordem FOK assinada para o CLOB).
O maior consumidor de budget é a classificação com LLM. Uma chamada GPT-4 de 500 tokens adiciona 1 a 3 segundos; isso é toda a janela de arbitragem perdida. Em produção, classifique com regras de keyword; use LLM apenas para calibração offline do conjunto de keywords.
Filtros de falso positivo
Bots de news-arb que não filtram falso positivo operam em todo retweet e sangram via spread tax. Três filtros.
- Source whitelist: agir apenas em contas/feeds de uma lista pré-aprovada. A lista é pequena (10 a 30 sources).
- Par keyword + confirmação: uma única correspondência de keyword é ruído; correspondências em duas fontes independentes dentro de 30s são sinal.
- Guard de estado do mercado: pule mercados que já se moveram > 5% nos últimos 60 segundos - outra pessoa captou a notícia primeiro, a vantagem acabou.
Taxa de falso positivo de filtros bem ajustados: cerca de 1 em 5 a 10. Uma taxa de falso positivo de 90% destrói a estratégia; uma de 50% ainda é viável com posições pequenas.
Quando a vantagem das notícias morre
A janela entre "notícia pública" e "preço reflete a notícia" fecha mais rápido a cada ano. Em 2020, mercados políticos de preço médio levavam minutos para absorver uma headline. Em 2026, as mesmas headlines comprimem para 30 a 90 segundos antes de o preço se mover totalmente.
Sinais de que a vantagem morreu: o PnL por trade em operações sinalizadas cai de +3c para zerado em uma janela de 30 trades; a taxa de falso positivo que acaba já tendo sido precificada sobe acima de 70%; o mercado atinge seu ask FOK em 200ms porque outra pessoa chegou primeiro.
O pivô honesto quando a vantagem morre: migrar para news mais lentas e mais interpretativas (decisões judiciais, atas de reunião de banco central), em que o parsing do significado leva mais tempo do que a corrida de latência. Ou parar de rodar a estratégia.
Código: consultar news feed e colocar FOK em mercados relevantes
Estrutura de produção: consulte uma fonte de notícias, execute match de regras, dispare ordens FOK nos acertos.
import feedparser, time, re
from py_clob_client.client import ClobClient
RULES = [
{"regex": re.compile(r"out for season|torn ACL", re.I), "tag":"injury-fade"},
{"regex": re.compile(r"federal reserve.*(rate cut|rate hike)", re.I), "tag":"fed-move"},
]
seen = set()
while True:
feed = feedparser.parse("https://example.com/news.rss")
for entry in feed.entries[:20]:
if entry.id in seen: continue
seen.add(entry.id)
for rule in RULES:
if rule["regex"].search(entry.title + " " + entry.summary):
# Look up relevant Polymarket markets, place FOK
fire(rule["tag"], entry)
break
time.sleep(15)
Intervalos de polling: 5 a 15 segundos para RSS. WebSocket onde disponível (Twitter, AP wire). Sempre faça dedup por ID fornecido pela source; nunca assuma que polling é exatamente uma vez.
Risco: meias verdades e manchetes retratadas
O pior dia de um bot de news-arb é quando uma headline acaba estando errada. Exemplos: um tweet da Reuters diz "Trump fires Yellen", o mercado sobe 8 centavos, 12 minutos depois o tweet é apagado e corrigido. Um bot que comprou a +8c agora está segurando inventory em -3c sem recurso.
Defesas:
- Confirmação de duas fontes: nunca opere com um único tweet; exija sinal corroborador de uma segunda fonte independente em 60 a 180 segundos.
- Tamanho de posição escalonado pela confiança da source: AP wire = tamanho cheio; Twitter de repórter setorial verificado = 50%; source de rumor = 25%.
- Saída automática em sinal de retratação: se uma source que você usou emitir uma correção em até 30 minutos, saia no mercado independentemente do PnL.
O problema da retratação é um teto duro para o position sizing em news-arb. Operar $50 por sinal permite sobreviver a uma taxa de falso positivo de 30%; operar $500, não.





