Tutorial de Bot de Polymarket · Capítulo 25 de 32

Bots de mercados deportivos en Polymarket: juegos semanales de NFL, microestructura del tag NBA (745), soccer (Premier League, Bundesliga, Champions League), tennis (864) - liquidez, fuentes de edge, patrones de código.

Qué cubre este capítulo

NFL, NBA, Soccer y Tennis son los mayores volúmenes deportivos de Polymarket por categoría. Cada uno tiene su propia disponibilidad de datos, cadencia y perfil de edge. Este capítulo cubre los patrones de bot específicos por liga y los tag IDs que vas a filtrar.

  • NFL: cadencia semanal, liquidez pico el domingo
  • NBA (tag 745): microestructura en vivo
  • Soccer: ligas internacionales vs. ligas de clubes
  • Tennis (tag 864): cadencia de torneos
  • Fuentes de edge que sobreviven
  • Datos en vivo: ESPN, APIs oficiales
  • Bot de muestra: capturador de líneas pre-partido

NFL: cadencia semanal, liquidez pico el domingo

NFL tiene el ritmo semanal más marcado de cualquier deporte en Polymarket. Los mercados abren el martes después de los juegos de la semana anterior, la búsqueda de líneas ocurre de miércoles a viernes, y el volumen de apuestas alcanza su pico el sábado y domingo. La resolución suele ser el domingo por la noche para los juegos tempranos, y el lunes por la noche para el último.

Patrón de bot: capturador de líneas el martes-miércoles, cuando se fija la línea de apertura, y trading en vivo el domingo durante el volumen pico. Distintos bots para cada ventana. El mercado de Monday Night Football suele tener menor volumen que otros juegos - ten en cuenta que tiene mayor riesgo de slippage en entradas de tamaño pequeño.

El pico de volumen es el Super Bowl: se negocian más de $50M en todos los mercados del SB durante la semana del juego. Incluso un bot de $100 en esa semana es ruido irrelevante; el mercado es eficiente a esa escala.

NBA (tag 745): microestructura en vivo

NBA es el deporte de mayor frecuencia en Polymarket - 25-30 juegos por semana durante la temporada regular, 5-15 en playoffs. El tag ID 745 filtra solo eventos de NBA.

La microestructura en vivo funciona en NBA porque: (1) ESPN actualiza los marcadores cada ~10s, (2) los juegos son 2.5 horas de acción continua, (3) los books de Polymarket para los juegos importantes se mantienen profundos hasta el 4th quarter.

La estrategia que sí funciona: suscribirte al WS book de un juego + al feed de ESPN, y reaccionar al desequilibrio + eventos de scoring en 10-15 segundos. Las estrategias que no funcionan: capturar líneas pre-partido (suficientemente eficiente como para que el retail no saque mucho), arbitraje de certeza al final del juego (territorio de 0.99-trap).

Soccer: ligas internacionales vs. ligas de clubes

Soccer se divide en tres niveles aproximados en Polymarket.

  • Top European leagues (EPL tag 739, La Liga, Bundesliga, Serie A) - volumen moderado, books profundos en partidos grandes. Estrategias de bot similares a NBA.
  • Champions League / Europa League (UCL tag 2186) - volumen pico en fases eliminatorias. Los books son más profundos desde octavos de final en adelante.
  • International / smaller leagues (Saudi Pro League, MLS, J-League) - books delgados, spreads grandes. En general, no son territorio para bots.

El scoring discreto del soccer (0-1 goles son eventos enormes) lo hace distinto del flujo continuo de NBA. El patrón de bot para soccer es: estar del lado correcto antes de que entre un gol, salir rápido después de que ocurra.

Tennis (tag 864): cadencia de torneos

Tag de tennis 864. Los circuitos ATP y WTA juegan 11 meses al año con los Grand Slams en ene (Australian Open), may-jun (French Open), jul (Wimbledon) y ago-sep (US Open). El volumen se concentra en esas cuatro semanas más la serie Masters 1000.

Tennis tiene las ladder de precio en vivo más limpias de cualquier deporte (capítulo 15). Los precios a mitad de partido siguen curvas predecibles según estados de set y break. Un bot con un modelo de ladder de precio específico para tennis puede detectar mispricing en tiempo real.

Ventanas tranquilas: entre Grand Slams, en semanas con solo torneos ATP 250 / ATP 500, los books son muy delgados. Pausa el bot o cámbiate a otro deporte durante esos periodos.

Fuentes de edge que sobreviven

En los cuatro deportes, los edges que sobreviven con el tiempo son:

  • Pre-game line shop contra el número de una casa más afilada (Pinnacle, Betfair). Cuando Polymarket discrepa con una sharp book por más de 3c, fade a Polymarket.
  • In-play overreaction a una sola jugada (interception, injury, momentum shift). Espera 30-60 segundos después de la jugada, y fade si el mercado se pasó.
  • Late-game heavy favorites at 0.85-0.92 con sizing gestionado por riesgo. Debajo de 0.85 = riesgo real; arriba de 0.92 = la 0.99 trap.

Edges que no sobreviven: análisis técnico puro sobre precios, scraping de sentimiento desde Twitter, efectos estacionales basados en calendario.

Datos en vivo: ESPN, APIs oficiales

Matriz de fuentes de datos para los cuatro deportes.

DeportePrimariaRespaldoCadencia de actualización
NFLESPN scoreboardNFL.com feed~10s durante el juego
NBAESPN scoreboardstats.nba.com~10s durante el juego
Soccer (EPL/UCL)ESPN scoreboardSofaScore~15-30s
Tennis (ATP/WTA)ESPN scoreboardtennis.com live~30s (a nivel de point)

ESPN es gratis y confiable para los cuatro. Para actualizaciones de menos de 10s, paga un feed especializado (StatsPerform, GeniusSports) - pero la mejora marginal de latencia rara vez justifica el costo para retail.

Bot de muestra: capturador de líneas pre-partido

Referencia: pseudocódigo de capturador de líneas pre-partido.

def line_catcher():
    # Find games starting in the next 2-12 hours
    events = gamma_events(tag_id=745, hours_ahead=12)
    for ev in events:
        for m in ev["markets"]:
            polymarket_prob = float(json.loads(m["outcomePrices"])[0])
            sharp_prob = fetch_pinnacle_implied(ev["slug"])  # 3rd-party feed
            if sharp_prob - polymarket_prob > 0.04:
                # Polymarket has the YES side cheap vs sharp
                tok = json.loads(m["clobTokenIds"])[0]
                place_fok(tok, "BUY", polymarket_prob + 0.01, size=10)
            elif polymarket_prob - sharp_prob > 0.04:
                # Polymarket has the NO side cheap vs sharp
                tok = json.loads(m["clobTokenIds"])[1]
                place_fok(tok, "BUY", 1 - polymarket_prob + 0.01, size=10)

Advertencias: las APIs de Pinnacle / Betfair requieren cuentas; no son gratis. Sin una referencia sharp, capturar líneas se reduce a opinión contra opinión, y eso no es territorio para bots.

Preguntas frecuentes

¿Qué deporte tiene más volumen en Polymarket?
Varía según la temporada. NFL lidera los domingos de juego. NBA (verified tag_id 745) lidera durante las noches entre semana de la temporada regular. Soccer (sin un solo tag) lidera durante las semanas de Champions League y World Cup. Tennis (verified tag_id 864) se dispara durante las quincenas de Grand Slam. Los bots multi-deporte se benefician de la rotación constante.
¿Son más rentables los mercados pre-partido o en vivo?
Pre-partido: más fácil de valorar (más tiempo para investigar, menos varianza del ruido en vivo), pero spreads más ajustados y competencia contra odds de sportsbook. En vivo: más difícil, requiere datos en tiempo real, pero hay mayores mispricings durante swings emocionales (después de un touchdown, tras un tiro fallado).
¿Dónde consigo datos deportivos en vivo lo bastante rápido para un bot?
Endpoints JSON no oficiales de ESPN.com para los principales deportes de EE. UU. The-odds-api.com agrega múltiples bookmakers, pero con rate limits. Sofascore.com tiene soccer + tennis. Para datos sub-1-second: feeds pagos de Sportradar o BetGenius son de nivel profesional, pero caros. La mayoría de los bots retail sobreviven con ESPN + periodistas beat de Twitter.
¿Debería confiar en Twitter de beat reporters para noticias en vivo?
En general sí, con reservas. Los beat reporters rompen injuries/lineups más rápido que ESPN. Pero los rate limits de Twitter y las suspensiones de cuentas crean huecos de confiabilidad. La mejor práctica: suscribirte a 5-10 cuentas de reporters, deduplicar, y exigir 2 fuentes antes de disparar por injuries.
¿Cómo se compara Polymarket sports con los sportsbooks tradicionales?
Sin vig (vs ~5-10% en FanDuel/DraftKings), pero con liquidez más delgada y spreads más amplios en mercados pequeños. Para NFL/NBA mainstream, los books tradicionales suelen tener mejor calidad de ejecución. Para deportes de nicho (cricket, rugby, esports), Polymarket muchas veces tiene edge porque los books tradicionales los subvaloran.
¿Puedo correr bots de sports + crypto + politics al mismo tiempo?
Sí, y es una buena construcción de portafolio. Sports, politics y crypto tienen baja correlación - diversificar entre ellos suaviza la varianza diaria del PnL. Advertencia: cada estrategia necesita su propio presupuesto de riesgo, no uno compartido.