Los mercados de predicción son básicamente un casino para los que no saben sumar, pero una mina de oro para los que sí. Aquí no se negocian activos, sino probabilidades futuras. El arbitraje es la única forma de sacar beneficio real y constante de estas plataformas, pasando olímpicamente del ruido de las noticias.
Las matemáticas detrás del spread
El arbitraje en Polymarket o Kalshi consiste en detectar precios "descuadrados", cuando la suma de los contratos "Sí" y "No" no da 1. Si compras un resultado por $0.95 en total y al resolverse te pagan $1.00, te llevas un 5.2%. Es una jugada "sin riesgo", siempre y cuando no te pete el riesgo de ejecución (leg risk).
La fórmula para calcular la pasta real:Net Profit = (1 - Price_Yes - Price_No) - (Taker Fees + Network Gas)
Si al final te queda menos de un 2%, mejor ni te molestes; estás palmando dinero solo por las comisiones y el tiempo que pierdes vigilando.
Arquitectura del bot: Manos a la obra
Olvídate de la interfaz web. Lo que necesitas es un agente local que ataque la API de las plataformas directamente. Aquí tienes una plantilla en Python que realmente funciona, escanea los datos y calcula la delta.
import requests
import time
# Sesión abierta para que vuele
session = requests.Session()
def get_best_bid_ask(market_id):
"""
Pillamos el orderbook de Polymarket vía API
"""
url = f"https://clob.polymarket.com/orderbook/{market_id}"
response = session.get(url).json()
# Devolvemos los mejores precios
return float(response['bids'][0][0]), float(response['asks'][0][0])
def scan_arbitrage(market_yes, market_no):
# Cogemos los precios Ask (compra)
_, ask_yes = get_best_bid_ask(market_yes)
_, ask_no = get_best_bid_ask(market_no)
total_cost = ask_yes + ask_no
if total_cost < 0.96: # Contamos un 4% de gas y deslizamiento
print(f"!!! ARBITRAJE A LA VISTA: {total_cost:.4f} !!!")
# Aquí va la lógica para disparar la tx desde tu wallet
else:
print(f"Spread muy ajustado: {total_cost:.4f}")
# Ejemplo de ID de mercado (acuérdate de cambiarlo según el evento)
# scan_arbitrage('2187654321', '2187654322')
Trampas ocultas y jerga pro
- Resolution Delay: La pesadilla de todos. El mercado cierra, pero el pago se queda en el limbo porque hay una disputa en el oráculo de UMA. Pasta congelada de 3 a 14 días. Arbitrar es, básicamente, gestionar capital circulante.
- Order Book Ghosting: En estas plataformas abundan las órdenes fantasma. Ves un precio de $0.40, pero en cuanto intentas comprar volumen, el precio salta a $0.45. Son los market-makers algorítmicos (AMM) defendiendo su terreno.
- Cross-Platform Skew: Los precios en Kalshi suelen ir desfasados respecto a Polymarket por el tipo de gente que opera. En EE.UU. (Kalshi) los traders son más de cubrir riesgos políticos, mientras que Polymarket es el Salvaje Oeste de los cripto-degen. Mira la correlación: si el BTC se pega un batacazo, Polymarket reacciona antes que Kalshi.
Eficiencia operativa: Tabla rápida
| Escenario | Riesgo | Rentabilidad | Veredicto |
|---|---|---|---|
| En la misma plataforma | Bajo | 1-2% | No vale la pena ni el gas |
| Entre plataformas | Medio | 3-7% | El punto dulce para bots |
| Cobertura con opciones | Alto | 10%+ | Solo para veteranos con capital |
Cómo no arruinarte en el intento
El mejor consejo: pasa de mercados con poco volumen. Si la liquidez no llega ni a $50,000 en ambos lados, solo con entrar vas a provocar un deslizamiento (slippage) que te jugará en contra. Busca eventos que muevan al menos $500k al día.
Truco técnico: Si estás en Polygon (Polymarket), nunca lances la tx con el gas por defecto. Estás compitiendo contra bots de MEV. Sube el maxPriorityFeePerGas por encima de la media para que tu orden se cuele sí o sí en el siguiente bloque.
Si no quieres que las comisiones se coman tus beneficios, deja de obsesionarte con "cazar spreads" y céntrate en la "ejecución". Aquí no gana el que detecta la diferencia primero, sino cuyo bot es más rápido compilando y metiendo la orden en el mempool.
Anatomía de la ejecución: ¿Por qué tu código pierde?
El problema de la mayoría de scripts es que van paso a paso. Haces un request a Polymarket, esperas respuesta, luego otro a Kalshi, calculas, y al final envías la tx. Mientras tanto, los market-makers que usan WebSockets ya se han movido y te han dejado fuera.
Cómo lo hacen los que saben:
- WebSockets sobre REST: El polling es tecnología de hace diez años. Tienes que tener los sockets abiertos para ambos orderbooks. Recibir updates en tiempo real te ahorra entre 200 y 800 ms.
- Multicall/Batching: En lugar de dos transacciones, usa un smart contract como intermediario. El contrato acepta tus órdenes y las ejecuta de golpe (atómicamente). Si una parte falla, se revierte todo. Así te proteges de quedarte con "media pata" del arbitraje cuando la otra parte ya no es rentable.
Ejemplo de ejecución optimizada (Concepto Solidity)
Si te mueves en redes EVM, el delegatecall es tu mejor amigo. Te permite ejecutar el arbitraje en una sola operación atómica.
// Fragmento conceptual para ejecutar órdenes de arbitraje
function executeArbitrage(
address target,
bytes calldata data1,
bytes calldata data2
) external payable {
// Ejecuta las dos compras en un mismo paquete
(bool success1, ) = target.call{value: msg.value / 2}(data1);
(bool success2, ) = target.call{value: msg.value / 2}(data2);
// Si la cosa no cuadra, revertimos sin soltar un céntimo
require(success1 && success2, "Arbitrage execution failed - reverting");
}
Secretos del "Event-Driven" trading
En los mercados de predicción, el precio a menudo se dispara no por el mercado en sí, sino por un cambio en el oráculo o una noticia de última hora.
- Indicadores adelantados: Si estás en mercados políticos, conecta tu bot a un feed de noticias potente (tipo API de Bloomberg o canales de Telegram especializados). El precio en Polymarket reacciona a una noticia 1-3 segundos antes de que la masa se entere. Tienes que estar posicionado antes de que la noticia "se descuente" en el orderbook.
- Arbitraje sintético: A veces compensa más pasar del "Sí/No" y meterse con futuros. Si las probabilidades en el mercado de predicción se disparan pero el futuro del índice ni se mueve, es una señal clarísima de mercado sobrecalentado. Pon un short en el mercado de predicción y compra futuro. Cuando el hype se calme, cierras ambas y a caja.
Checklist antes de soltar capital:
- Benchmarking de gas: Calcula cuánto te cuesta operar a 50 Gwei y a 200 Gwei. Si tu beneficio solo cubre 50 Gwei y la red está petada, apaga el bot.
- Límite de deslizamiento: Ni se te ocurra usar órdenes a mercado. Solo órdenes limitadas, un pelín por encima del mejor ask. Si se escapa el precio, mejor pasar que entrar en una posición que ya nace en negativo.
- Ojo con los datos "sucios": Hay plataformas que en la API te meten el "precio medio", que no tiene nada que ver con lo que hay realmente en el libro. Pilla siempre los asks y bids directamente y pasa del campo last_price.
El arbitraje aquí no es buscar el Santo Grial, es una currada monótona basada en pura ventaja matemática. Cuantas menos emociones y más código pongas, más probabilidades tendrás de que tu balance en USDC crezca más rápido que la inflación del dólar.