← Trading deportivo en Polymarket con Python
El precio como probabilidad implícita
Preview gratis Sección 1 · Probabilidad, cuotas y edge en mercados deportivos
Un número que ya es una probabilidad
En la bolsa, el precio de una acción descuenta flujos de caja futuros. En Polymarket, el precio de un contrato YES responde a una pregunta más simple: ¿qué probabilidad le asigna el mercado a que ocurra el evento? Veamos de dónde sale, por qué suele ser buena, qué precio del libro leer y cómo se compara con una casa de apuestas.
Agregación de información
Friedrich Hayek lo planteó en 1945: el conocimiento relevante está repartido entre muchas personas y ninguna lo tiene completo, pero un sistema de precios lo resume en un solo número. En un mercado de predicción, quien sabe algo (una alineación filtrada, una lesión, un modelo mejor) compra o vende, y su información mueve el precio. Wolfers y Zitzewitz (2004) documentan que estos mercados suelen igualar o superar a los pronósticos de expertos y encuestas.
Calibración
Una probabilidad está calibrada si los eventos a los que asigna $p$ ocurren, a la larga, con frecuencia $p$. Se mide por tramos: probabilidad media contra frecuencia real. Hicimos esa prueba con el cierre de Pinnacle, la casa de referencia en fútbol, en 2110 partidos de la Premier League (2020-21 a 2025-26, datos de football-data.co.uk), tras quitar el margen.

Figura 1. Los diez deciles caen sobre la diagonal: la mayor desviación es de 0.026 (decil 4) y todas quedan dentro del ruido estadístico con 633 observaciones por decil.
Ese es el estándar contra el que compites. En la Premier 2024-25, ningún modelo del curso supera al cierre de Pinnacle en log loss (0.9664). Un mercado líquido y bien calibrado no es imbatible, pero sí es el benchmark honesto.
El precio de un YES como probabilidad implícita
Un share YES paga 1 pUSD (Polymarket USD, el colateral de la plataforma) si el evento ocurre y 0 si no. Si lo compras a un precio $c$, su valor esperado con tu probabilidad $p$ es $p\cdot 1 + (1-p)\cdot 0 - c = p - c$. El precio en el que nadie espera ganar es $c = p$; por eso se lee el precio como probabilidad implícita del mercado. Un YES a 0.44 dice: «44 % de que ocurra». El NO del mismo mercado es el complemento y su precio ronda $1 - c$.
Bid, ask, mid: qué precio usar
Un mercado no tiene un precio, tiene un libro de órdenes. El bid es lo más alto que alguien paga hoy; el ask, lo más bajo a lo que alguien vende. El mid es el promedio de ambos. Según la documentación de Polymarket, el precio que muestra la web es el mid, salvo que el spread supere 0.10: entonces muestra el último precio operado.
- Para estimar la probabilidad del mercado, usa el mid.
- Para decidir una compra, usa el ask: es lo que pagas. Para vender, el bid.
Un partido de la Premier: tres mercados binarios
Polymarket no lista un 1X2 como un solo mercado. Cada partido tiene tres mercados binarios: «¿gana el local?», «¿empatan?» y «¿gana el visitante?». Como exactamente uno se cumple, la suma de los tres precios debería rondar 1. En el libro de Ipswich–Nottingham Forest, capturado con py-sdk 53 horas antes del partido (23 de octubre de 2026):
| Mercado | Bid | Ask | Mid |
|---|---|---|---|
| Gana Ipswich | 0.30 | 0.31 | 0.305 |
| Empate | 0.27 | 0.28 | 0.275 |
| Gana Nottingham | 0.43 | 0.44 | 0.435 |
| Suma | 1.00 | 1.03 | 1.015 |
Los mids suman 1.015 y los asks 1.03: ese exceso es el costo de cruzar el spread en los tres mercados, el equivalente al margen de una casa. En los 70 partidos de la Premier 2026-27 ya jugados, la suma de los tres precios antes del inicio tuvo mediana 1.005.
Contra la casa: probabilidad sin vig
Una cuota decimal $o$ implica $1/o$, pero las tres implícitas de una casa suman más de 1: el sobrante es su margen (overround). Para compararla con Polymarket hay que quitarlo (devig). El método multiplicativo divide cada implícita entre la suma:
import numpy as np
def prob_implicita(cuota):
return 1 / np.asarray(cuota, dtype=float)
def devig_multiplicativo(cuotas):
q = prob_implicita(cuotas)
return q / q.sum(axis=-1, keepdims=True)
bet365_cierre = [2.20, 3.40, 3.40] # Fulham–Crystal Palace, 5 sep. 2026
print(prob_implicita(bet365_cierre).sum() - 1) # overround 0.0428
print(devig_multiplicativo(bet365_cierre)) # [0.4359 0.2821 0.2821]
Cinco minutos antes del inicio, Polymarket marcaba 0.445 / 0.285 / 0.275 (suma 1.005). La diferencia con Bet365 sin vig es de menos de un punto en cada resultado; contra el cierre de Betfair Exchange sin vig (0.444 / 0.288 / 0.269) es todavía menor. Es lo esperable cuando la información ya está agregada.
Trampas comunes
- Comparar contra cuotas con margen. 1/2.20 = 0.4545 no es la probabilidad de la casa; sin vig es 0.4359.
- Leer el mid como precio de compra. Compras al ask; con libros finos, el mid engaña.
- Olvidar las reglas del mercado. Los partidos resuelven a los 90 minutos más el añadido, sin prórroga ni penales.
Cierre
El precio de un YES es la probabilidad que el mercado agrega; la referencia sharp con la que se compara, el cierre de Pinnacle, está bien calibrada. Antes de buscar ventaja, lee el mid para saber qué cree el mercado, el ask para saber cuánto pagarías y la probabilidad sin vig de la casa para contrastar. En la lectura de valor esperado convertirás la diferencia entre tu $p$ y ese precio en un edge medible.