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

Market making en Polymarket: cómo cotizar bid y ask, capturar el spread, ganar maker rebates (20-25% de las taker fees), matemáticas del riesgo de inventario y cuándo el MM funciona en prediction markets.

Qué cubre este capítulo

Hacer market making en Polymarket significa cotizar continuamente ambos lados del order book de un mercado y ganar el spread en cada ida y vuelta. La estrategia está bien entendida en traditional finance; los matices específicos de Polymarket son el programa de maker rebates y el perfil de adverse selection de los prediction markets, que es más alto que en los venues de CFD. Este capítulo es la matemática honesta.

  • Market making en inglés sencillo
  • La ventaja del spread + rebate
  • Riesgo de inventario y skew
  • Cuándo el MM funciona en Polymarket (y cuándo no)
  • Esqueleto de código: cotizar ambos lados a +/- N centavos
  • Ajustar cotizaciones ante news flow
  • Apagar el bot cuando el adverse selection se dispara

Market making en inglés sencillo

Un market maker cotiza de forma continua tanto un precio de compra (bid) como un precio de venta (ask), con un spread fijo más amplio que el mid. Cuando alguien golpea el bid, el maker compra barato; cuando alguien levanta el ask, el maker vende caro; la diferencia entre bid y ask es el ingreso del maker por cada round trip.

La estrategia está impulsada por el order flow, no por dirección. El maker no opina sobre si YES ganará; asume que el flujo continuará y que el spread seguirá cobrándose.

El riesgo es el adverse selection: las personas que golpean tu bid tienen información que tú no tienes. Con el tiempo, las ganancias del MM dependen de si el spread es lo suficientemente amplio como para cubrir el slippage causado por traders informados.

La ventaja del spread + rebate

Dos fuentes de ingresos para un maker de Polymarket.

Captura del spread: cotizar bid en 0.45 y ask en 0.47 alrededor de un mid de 0.46. Cada fill en el bid que luego puedas salir en el ask gana 2 centavos. La ventaja neta depende del desequilibrio de fills y del movimiento del precio.

Maker rebate: el programa de liquidity rewards de Polymarket paga un rebate por share ejecutada en fills de maker en mercados elegibles. Los números cambian; revisa la página oficial de rewards para ver los valores actuales. El rebate se paga en pUSD periódicamente, separado de la operación en sí.

En la mayoría de los mercados, la captura del spread es la principal fuente de ingresos. El rebate es importante cuando puedes cotizar mercados anchos (año electoral, playoffs deportivos importantes) donde Polymarket aumenta los rebates para atraer liquidez.

Riesgo de inventario y skew

Un MM que es golpeado repetidamente en el bid acumula una posición larga. El riesgo es que el mid caiga mientras el inventario está largo; el maker materializa una pérdida en la posición incluso después de los ingresos por spread.

Defensas: quote skew (mover el bid hacia abajo cuando el inventario está largo, y el ask hacia arriba cuando está corto, para desalentar fills de un solo lado); inventory cap (dejar de cotizar del lado en el que ya estás demasiado largo); active rebalancing (cruzar ocasionalmente el spread para reducir la posición cuando el inventario llega al límite).

La matemática: si el 60% de los fills en el bid nunca sale antes de que el precio se mueva 2 centavos en contra, la estrategia está perdiendo dinero en esos fills por sí sola. Ajusta el skew de forma agresiva cuando el desequilibrio de fills sea > 65/35.

Cuándo el MM funciona en Polymarket (y cuándo no)

El MM funciona en Polymarket cuando se cumplen tres condiciones.

  • Libro líquido: suficiente competencia de cotizaciones para que tu spread sea competitivo pero no cero. Los mercados de la elección de 2024, los partidos grandes de NFL/NBA, BTC up/down 5m, todos califican.
  • Flujo de dos lados: tanto compradores como vendedores activos. Los mercados de un solo lado (resolved-ish en 0.95+) no tienen nada que el maker pueda capturar.
  • Movimientos de precio acotados: las capturas del spread se las comen saltos de 5 centavos. Los mercados estables en rango medio (0.40-0.60) son los más amigables.

El MM falla en: mercados impulsados por noticias donde el mid salta más rápido de lo que puedes re-cotizar; libros ilíquidos donde eres la única cotización y la siguiente operación barre 5 niveles; mercados cerca de la resolución donde un lado converge a 0 o 1.

Esqueleto de código: cotizar ambos lados a +/- N centavos

Pseudocódigo para el maker más simple viable.

SPREAD_CENTS = 2
INVENTORY_CAP_SHARES = 50

def make_loop(token_id):
    while True:
        book = fetch_book(token_id)
        mid = (book.best_bid + book.best_ask) / 2
        inv = chain_balance(token_id)

        # Skew: pull the side we are too long on
        bid_px = mid - SPREAD_CENTS/200 - (0.005 if inv > INVENTORY_CAP_SHARES * 0.6 else 0)
        ask_px = mid + SPREAD_CENTS/200 + (0.005 if inv < -INVENTORY_CAP_SHARES * 0.6 else 0)

        cancel_my_existing_quotes(token_id)
        if inv < INVENTORY_CAP_SHARES:
            place_gtc(token_id, side="BUY", price=bid_px, size=5)
        if inv > -INVENTORY_CAP_SHARES:
            place_gtc(token_id, side="SELL", price=ask_px, size=min(5, inv))
        time.sleep(2)

Los makers en producción agregan: tracking de inventario por lado, orden de cancelar antes de colocar, jitter en el intervalo de re-quote para no ser predecibles, kill-switch ante adverse selection (siguiente sección).

Ajustar las cotizaciones ante news flow

Cuando llega un evento de noticias, el fair value se mueve antes de que tus cotizaciones lo hagan. Un MM que no retira sus quotes durante el news flow termina siendo pick off.

La señal: que la tasa de cancelación de fills entrantes suba por encima de ~3x el baseline dentro de 30 segundos, o una validación más amplia contra un event stream (Polymarket Twitter/Discord, Bloomberg headline feed). Cuando se detecta, el maker retira todas las cotizaciones durante 60-120 segundos, deja que el nuevo mid se estabilice y luego vuelve a cotizar alrededor del nuevo centro.

La implementación más simple observa el stream de last-trade-price del token. Un salto de más de 2 desviaciones estándar respecto de la media de la ventana móvil dispara una pausa. El bot vuelve a entrar cuando el precio se ha estabilizado durante 30+ segundos.

Apagar el bot cuando el adverse selection se dispara

La salida dura. Si el fill PnL del bot en los últimos 50 fills se vuelve marcadamente negativo, algo anda mal: o el mercado ahora está impulsado por noticias y no deberías hacer market making, o tu spread está demasiado ajustado para el nivel actual de adverse selection.

Condiciones de apagado para codificar:

  • 5 fills consecutivos en bid sin ningún fill en ask, con el mid bajando > 1c desde el primer fill.
  • Realized PnL en los últimos 25 round-trip fills por debajo de -25% de lo esperado.
  • Desconexión del WebSocket o detección de book desactualizado.
  • Inventario al cap de cualquiera de los lados durante > 5 minutos.

Cuando se active, cancela todo, cierra el inventario al market y detén por 15+ minutos. Un market maker que no tiene kill switch perderá dinero durante periodos volátiles hasta que el trader lo note manualmente - y eso siempre tarda más de lo que crees.

Preguntas frecuentes

¿Un bot retail realmente puede ganar dinero haciendo market making en Polymarket?
A veces, en mercados selectos. El maker rebate (20-25% de las taker fees) más un spread de 1-3 centavos por round trip puede acumularse hasta dar un retorno real. Pero en Polymarket, el news flow puede mover un mercado 20+ centavos en segundos - un market maker sin un feed de noticias rápido termina siendo adverse selected. Funciona mejor en mercados deportivos líquidos antes del juego y durante periodos con pocas noticias.
¿Qué tan amplio debería cotizar en Polymarket?
Como mínimo, el spread que necesites para cubrir el peor adverse selection esperado. Para deportes/política líquidos: 1-3 centavos por lado desde el mid. Para mercados delgados: 5+ centavos. Si no puedes cotizar lo suficientemente ajustado como para competir con otros makers pero lo bastante amplio como para sobrevivir movimientos, ese mercado no es market-makeable para ti.
¿Qué límites de inventario debería establecer?
Pon un hard cap de inventario por mercado en 50-200 USD hasta que hayas demostrado rentabilidad durante meses. Sesga las cotizaciones para empujar el inventario hacia neutral - si acumulas Yes, baja tu bid de Yes y baja tu ask de No para incentivar recompras de No. Nunca dejes que un solo mercado sostenga 20%+ de tu bankroll.
¿Necesito un VPS rápido para hacer market making en Polymarket?
Sí. El market making es la estrategia de Polymarket más sensible a la latencia. Un VPS con jitter produce cotizaciones obsoletas que terminan siendo pick off. Usamos TradingVPS para nuestros bots de MM específicamente porque el jitter es consistentemente bajo. La nube commodity (DO/Vultr) sirve para paper trading de MM, pero no para live.
¿En qué se diferencia el MM de Polymarket del MM en crypto?
Dos diferencias grandes: (1) Polymarket tiene eventos de outcome duros (noticias, finales deportivas) que pueden mover el precio 30-100 centavos instantáneamente - mucho más brusco que crypto. (2) Los mercados de Polymarket eventualmente se resuelven, así que a diferencia de los pares cripto, las posiciones de MM tienen una expiración dura. Ambas cosas te empujan hacia holds más cortos y límites de riesgo más estrictos.
¿Puedo hacer market making en los mercados crypto de 5 minutos de Polymarket?
Es posible, pero muy difícil. Los mercados de 5 minutos tienen ~288 expiraciones por día por par, están dominados por bots más rápidos y tienen spreads más estrechos. La mayoría de los bots retail de MM pierden dinero allí por adverse selection. Cubre correctamente la estrategia crypto de 5 minutos en el capítulo 23 de esta serie.