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

Arbitraje estadístico en Polymarket: pares entre mercados cruzados (eventos correlacionados), spreads Polymarket-vs-Kalshi, reversión a la media y cómo dimensionar posiciones de stat-arb cuando los mercados finalmente se resuelven.

Qué cubre este capítulo

El arbitraje estadístico en Polymarket aprovecha las malas valuaciones transitorias entre mercados correlacionados: el mismo evento en Polymarket vs Kalshi, o mercados relacionados dentro de Polymarket. Los edge son pequeños (1-3 centavos típicamente) y operacionalmente frágiles. Este capítulo es honesto sobre lo que funciona, lo que no, y el riesgo de ejecución en múltiples patas que arruina la mayoría de los intentos.

El arbitraje estadístico entre mercados explota inconsistencias transitorias de precio entre Polymarket y Kalshi, Polymarket y Manifold, o entre mercados correlacionados dentro de Polymarket. Los edge son pequeños (1-3 centavos típicamente) y requieren ejecución rápida en ambas patas. Este capítulo es el playbook honesto, incluyendo la complejidad operativa que arruina la mayoría de los intentos.

  • Qué significa stat-arb en mercados de predicción
  • Ejemplos de spreads Polymarket-vs-Kalshi
  • Pares dentro de Polymarket (eventos correlacionados)
  • Reversión a la media vs continuación de tendencia
  • Dimensionamiento para mercados que se resuelven (no perpetuos)
  • Riesgo: divergencia pasada la resolución
  • Código: monitor de pares y trigger por umbral

Qué significa stat-arb en mercados de predicción

El arbitraje estadístico en mercados de predicción significa operar el spread entre dos mercados que deberían cotizar de manera consistente. Hay tres variantes comunes en Polymarket.

  • Entre venues: el mismo evento en Polymarket y Kalshi (o Manifold, PredictIt). El precio debería converger; en la práctica, se desvía 2-5 centavos.
  • Par del mismo evento: padre vs suma de patas en mercados multi-outcome de NegRisk. La invariante suma-a-1 permite arbitraje cuando las patas suman menos de 1.0.
  • Par de eventos correlacionados: dos mercados sobre resultados relacionados (por ejemplo, "Trump presidente el 1 de enero" vs "Trump presidente el 1 de marzo"). Deberían cotizar dentro de 2-3 centavos entre sí.

Los edge son pequeños. La complejidad operativa es real. La mayoría de los intentos mueren en la ejecución, no en la teoría.

Ejemplos de spread Polymarket-vs-Kalshi

Por observación en 2025-26, Polymarket y Kalshi listan los mismos eventos importantes de EE. UU., pero cotizan de forma consistente con una diferencia de 1-4 centavos. La brecha existe por razones estructurales que necesitas modelar en cualquier arbitraje.

Factores estructurales:

  • Asimetría de comisiones: Kalshi cobra 4-7% sobre las operaciones ganadoras (varía según el mercado); Polymarket cobra 0 de fee como taker. La matemática del arbitraje debe descontar el mordisco de Kalshi.
  • Prima por riesgo de settlement: cuando la resolución de un mercado es ambigua, el UMA de un venue puede resolver distinto a los árbitros del otro. El mercado pone eso en precio.
  • Población de traders: Polymarket tiende a ser más joven y más nativo cripto; Kalshi tiende a ser más profesional / hedge. Discrepan sistemáticamente sobre los mismos eventos.

El arbitraje funciona cuando la brecha supera la prima estructural más las comisiones. Un spread de 5 centavos en un mercado donde la prima estructural es 1c y las comisiones combinadas son 1c representa un edge real de 3c.

Pares dentro de Polymarket (eventos correlacionados)

Dentro de Polymarket, los pares de eventos correlacionados son más fáciles de arbitrar que entre venues. Misma estructura de comisiones, misma wallet, ejecución atómica viable.

Ejemplos que de forma consistente cotizan de manera inconsistente:

  • Trump presidente en la fecha A vs Trump presidente en la fecha B (donde B es posterior a A por < 90 días).
  • ¿Bitcoin llegará a $100k para el 31 de julio vs $100k para el 31 de agosto?
  • Patas Yes vs No del mismo mercado binario (la suma debería = 1.0; a veces se desvía hasta 1.04 en books ilíquidos).

El arbitraje Yes+No=1 es el más limpio: lee ambas patas del mismo mercado, dispara FOK en ambas si la suma cae por debajo de 0.97 (permitiendo el spread tax). El capital requerido es aproximadamente equivalente en cada pata; la ejecución es atómica cuando ambos fills regresan en la misma respuesta.

Reversión a la media vs continuación de tendencia

Dos regímenes de stat-arb. Reversión a la media: el par se separó por una razón de ruido; apuestas a la convergencia. Continuación de tendencia: el par empezó a divergirse porque llegó información nueva; apuestas a una divergencia mayor.

La parte difícil es distinguirlos. Heurística: si la divergencia ocurrió con volumen visible (una ballena barrió un lado del book), es noticia; solo fadea si tienes un modelo. Si se desvió lentamente con bajo volumen, es ruido; tradea reversión con confianza.

Para builders nuevos: opera solo reversión a la media, en pares donde la divergencia sea < 1 desviación estándar del drift histórico. La continuación de tendencia requiere un modelo que capte la noticia; sin uno, estás operando contra flujo informado.

Dimensionamiento para mercados que se resuelven (no perpetuos)

Los mercados de predicción se resuelven. Los pares cripto no. Esto cambia la matemática.

Una posición de pair-arb en Polymarket tiene un payout schedule fijo: cuando ambos mercados se resuelven, la diferencia entre el spread predicho y el spread real queda bloqueada. No hay rollover, ni holding infinito.

Implicación para el sizing: el máximo que puedes mantener está limitado por el tiempo hasta la resolución, porque el capital queda inmovilizado hasta entonces. Un par que se resuelve en 6 meses puede darte 3c por share, pero no puedes poner más capital a trabajar mientras tanto si ambos mercados ya están completamente dimensionados.

El marco correcto: el stat-arb en Polymarket es una serie de trades de tiempo acotado, no una estrategia continua. Compara PnL por unidad de capital inmovilizado por día, no PnL bruto.

Riesgo: divergencia pasada la resolución

El peor resultado de stat-arb es que tu predicción-de-convergencia esté equivocada porque la premisa subyacente era incorrecta. Ejemplos:

  • Vendiste en corto "Trump presidente el 1 de abril" esperando que convergiera hacia "Trump presidente el 1 de marzo" - pero el mercado de fecha 1 resuelve YES y el de fecha 2 resuelve NO por un impeachment en marzo. Tu tesis de que "el spread debería quedar plano" estaba mal.
  • Hiciste arbitraje entre Polymarket y Kalshi sobre el mismo ganador de las Finales de la NBA. Polymarket resuelve al equipo que ganó la serie oficial; Kalshi resuelve bajo una definición ligeramente distinta que incluye de forma diferente los desempates en overtime. Ambos resuelven YES según sus términos, pero en direcciones opuestas.

Lee con cuidado los criterios de resolución de cada mercado. El arbitraje cross-venue está a una resolución mal emparejada de una pérdida total en ambas patas.

Código: monitor de pares y trigger por umbral

Referencia: monitorear dos tokens correlacionados, disparar arbitraje cuando el spread cruza el umbral.

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)

El cleanup-on-partial-fill es crítico. Sin eso, una ejecución parcial deja al bot expuesto direccionalmente, que es exactamente lo opuesto al propósito del stat-arb.

Preguntas frecuentes

¿Puedo arbitrar entre Polymarket y Kalshi?
Sí, cuando el mismo evento cotiza en ambos. Los spreads de 2-5 centavos persisten entre los dos exchanges por diferencias regulatorias, estructuras de fees y diferencias de audiencia. El detalle: Kalshi es solo para EE. UU. y requiere KYC, así que necesitas cuentas en ambos; revisa nuestro /es/guide/polymarket-vs-kalshi/ para la configuración. El arbitraje de spread es real, pero operacionalmente pesado.
¿Qué es un pairs trade en el contexto de Polymarket?
Dos mercados correlacionados donde la relación de precios revierte a la media. Ejemplo: "Trump gana 2028" y "Republicanos ganan la Cámara 2028" - si la operación de Trump sube 5% pero la de la Cámara no se movió, el bot compra Cámara y vende Trump (o viceversa) asumiendo que la relación revierte. El edge es pequeño pero consistente en mercados políticos líquidos.
¿Cómo dimensionas una posición de stat-arb cuando ambos mercados se resuelven?
Dimensiona según tu divergencia esperada máxima: si tu modelo dice que el spread puede ampliarse 8 centavos antes de revertir, dimensiona para que 8 centavos más no excedan tu límite de pérdida. Trata cada par como un trade independiente con un límite de pérdida duro. El stat-arb que finge ser dinero gratis es la forma en que se revientan las cuentas.
¿El arbitraje Polymarket-Kalshi es persistente?
Sí, pero se está reduciendo a medida que más bots lo descubren. A lo largo de 2026 todavía vemos spreads de 1-3 centavos en mercados políticos líquidos persistiendo durante horas. Los mercados de deportes ven spreads más estrechos. Los mercados de cola (bajo volumen) ven spreads más amplios, pero antieconómicos para operar.
¿Qué pasa si ambos mercados divergen hasta la resolución?
El trade de pares va hasta su PnL completo basado en los resultados reales, por eso el pairs trading en mercados de predicción es fundamentalmente acotado (a diferencia de los perpetuals, donde la divergencia puede crecer para siempre). La pérdida neta en un trade de pares está capada por la diferencia de precio al entrar, no es infinita.
¿Qué herramientas ayudan a encontrar pares en Polymarket?
Una matriz de correlación entre mercados activos es el punto de partida. Construye una a partir de historiales de precio de 30 días extraídos de gamma+CLOB. Busca pares con rho > 0.7 históricamente que hoy estén mal valuados respecto a su relación típica. Actualiza la matriz semanalmente: las correlaciones decaen.