Tutorial de Bot de Polymarket · Capítulo 14 de 32
Arbitraje de noticias en Polymarket: cómo ganarle al mercado con titulares, fuentes de noticias (RSS/Twitter/AP), presupuestos de latencia, filtros de falsos positivos y cuándo la ventaja por noticias muere dentro del precio de mercado.
Qué cubre este capítulo
El arbitraje de noticias es la estrategia de operar con información pública más rápido de lo que el mercado la reprecifica. La ventaja es real, pero estrecha - la mayoría de las "noticias" ya están reflejadas en el precio para cuando una persona puede leerlas. Este capítulo cubre qué fuentes realmente le ganan al mercado, el presupuesto de latencia que define la estrategia y el filtro de falsos positivos sin el cual el bot opera con cada retuit.
- Cómo se ve una ventaja informativa
- Fuentes de noticias: RSS, Twitter, AP, feeds oficiales
- Presupuesto de latencia: de lectura a operación en menos de 2 segundos
- Filtros de falsos positivos
- Cuándo muere la ventaja por noticias
- Código: consultar un feed de noticias y colocar FOK en mercados relevantes
- Riesgo: medias verdades y titulares retractados
Cómo se ve una ventaja informativa
El arbitraje de noticias significa operar con información pública más rápido de lo que el mercado la reprecifica. La ventaja existe en una ventana estrecha - normalmente de 30 a 300 segundos - entre el momento en que un hecho se vuelve público y cuando Polymarket lo refleja.
Para que la ventaja sea real, deben cumplirse tres cosas. Primero, la fuente de noticias debe ser más rápida que el trader promedio de Polymarket (Twitter es más rápido que la prensa tradicional; el wire de AP es más rápido que Twitter). Segundo, la noticia debe ser inequívoca (un anuncio de lesión, una resolución judicial) - la interpretación consume latencia. Tercero, el mercado debe ser lo suficientemente amplio como para que el movimiento de precio valga el costo del spread.
Los bots que buscan esta ventaja se dividen en dos grupos: los que se suscriben a fuentes directas y las parsean, y los que observan un movimiento de precio inusual en Polymarket e infieren que ocurrió una noticia. Ambos son válidos; el primero lidera, el segundo sigue.
Fuentes de noticias: RSS, Twitter, AP, feeds oficiales
Fuentes ordenadas por latencia hasta que la información se vuelve pública, primero las más rápidas.
- Fuentes primarias directas: documentos judiciales, comunicados de prensa gubernamentales, anuncios de bancos centrales. Muchas veces tienen RSS público o API. Las más rápidas, con la menor tasa de falsos positivos.
- AP wire / Reuters Eikon (de pago). El wire que usan los traders tradicionales. ~5-30 segundos de ventaja sobre Twitter de consumo.
- Twitter (X, API de pago). Listas de cuentas verificadas: cuentas oficiales de organizaciones, reporteros de cobertura. Las APIs gratis están demasiado limitadas por rate limit; paga el plan Pro o usa un servicio relay.
- Newsletters especializadas / Discord: Substacks de pago, feeds de la industria con embargo. Útiles para mercados de nicho (crypto, esports).
- Sitios de prensa tradicional: demasiado lentos para la ventaja de news-arb.
RSS para todo lo que publique RSS - es gratis y los intervalos de polling son confiables. Twitter para el resto. AP para desks de noticias con seriedad de producción.
Presupuesto de latencia: de lectura a operación en menos de 2 segundos
El bot necesita ingerir, clasificar, decidir y colocar una orden dentro de 1-2 segundos en total. Presupuesto:
- Ingesta: 50-300ms (feed por websocket, polling de RSS, stream de Twitter).
- Clasificación: 50-200ms (regex / match de palabras clave, opcionalmente LLM si cacheas el prompt).
- Decisión: 50ms (lookup en tabla de reglas; mapeo de etiqueta de noticia a slug de mercado).
- Ejecución: 200-500ms (orden firmada FOK hacia CLOB).
El mayor consumidor de presupuesto es la clasificación con LLM. Una llamada a GPT-4 de 500 tokens agrega 1-3 segundos; eso se come toda la ventana de arbitraje. Para producción, clasifica con reglas de keywords; usa un LLM solo para calibración offline del set de keywords.
Filtros de falsos positivos
Los bots de news-arb que no filtran falsos positivos operan con cada retuit y sangran por el costo del spread. Tres filtros.
- Whitelist de fuentes: actuar solo sobre cuentas/feeds de una lista preaprobada. La lista es pequeña (10-30 fuentes).
- Pareja keyword + confirmación: un solo match de keyword es ruido; matches en dos fuentes independientes dentro de 30s es señal.
- Guardia de estado de mercado: saltar mercados que ya se movieron > 5% en los últimos 60 segundos - alguien más atrapó la noticia primero, la ventaja ya se fue.
Tasa de falsos positivos de filtros bien ajustados: alrededor de 1 en 5-10. Una tasa de falsos positivos del 90% destruye la estrategia; una del 50% todavía es viable con tamaños de posición pequeños.
Cuándo muere la ventaja por noticias
La ventana desde "la noticia se hizo pública" hasta "el precio refleja la noticia" se cierra más rápido cada año. En 2020, los mercados políticos de precio medio tardaban minutos en absorber un titular. En 2026, esos mismos titulares se comprimen a 30-90 segundos antes de que el precio se haya movido por completo.
Señales de que la ventaja murió: el PnL por operación en trades marcados cae de +3c a plano en una ventana de 30 operaciones; la tasa de falsos positivos que terminan ya incorporados al precio supera el 70%; el mercado golpea tu ask FOK dentro de 200ms porque alguien más llegó antes.
El pivote honesto cuando la ventaja muere: moverse a noticias más lentas y más interpretativas (resoluciones judiciales, minutas de reuniones de bancos centrales) donde descifrar el significado toma más tiempo que la carrera de latencia. O dejar de ejecutar la estrategia.
Código: consultar un feed de noticias y colocar FOK en mercados relevantes
Esqueleto de producción: consulta una fuente de noticias, ejecuta matches de reglas y dispara órdenes FOK cuando hay aciertos.
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-15 segundos para RSS. WebSocket donde esté disponible (Twitter, AP wire). Siempre deduplica por el ID provisto por la fuente; nunca asumas que el polling es exactamente una vez.
Riesgo: medias verdades y titulares retractados
El peor día de un bot de news-arb es cuando un titular resulta ser falso. Ejemplos: un tweet de Reuters dice "Trump despide a Yellen", el mercado sube 8 centavos, 12 minutos después el tweet se borra y se corrige. Un bot que compró a +8c ahora está sosteniendo inventario en -3c sin recurso.
Defensas:
- Confirmación de dos fuentes: nunca operes con un solo tweet; exige una señal corroborante de una segunda fuente independiente dentro de 60-180 segundos.
- Tamaño de posición escalado por confianza en la fuente: AP wire = tamaño completo; Twitter de un reportero verificado de cobertura = 50%; fuente de rumor = 25%.
- Salida automática ante señal de retractación: si una fuente que usaste emite una corrección dentro de 30 minutos, sal a mercado sin importar el PnL.
El problema de la retractación es un techo duro para el tamaño de posición en news-arb. Operar $50 por señal te permite sobrevivir una tasa de falsos positivos del 30%; operar $500 no.





