Value betting frente a casas blandas con las cuotas justas de Pinnacle
Los precios de Pinnacle son lo más parecido a una probabilidad real que tiene el mercado de apuestas. Si les quitas el margen obtienes una cuota justa; cualquier casa blanda que pague más que esa cuota ofrece una apuesta con valor esperado positivo (+EV). PinnFeed calcula la cuota justa en cada mercado, así que la cuenta se reduce a una multiplicación. +EV es un concepto estadístico a largo plazo, no una garantía de ganar.
Paso 1 — Entiende la cuota justa#
Para un mercado con cuotas decimales d_i:
implied_i = 1 / d_i
margin = Σ implied_i − 1
fairProb_i = implied_i / Σ implied_j (método multiplicativo)
fair_i = 1 / fairProb_i
Cada resultado de la API ya trae fair y fairProb, y cada mercado trae margin. También van los precios en bruto, por si prefieres aplicar tú el método de potencia o el de Shin.
Paso 2 — Calcula el valor esperado#
Si una casa blanda ofrece la cuota decimal S en un resultado cuya probabilidad justa es p:
EV = S × p − 1
Con S = 2.30 y p = 0.488 (cuota justa 2.049), el EV es +12,3%: a largo plazo esperas 12,3 céntimos por cada euro apostado. La mayoría fija un umbral del 1–3% para absorber el ruido y el tiempo que tardas en colocar la apuesta.
Paso 3 — Calcula el stake#
Kelly completo ((S·p − 1) / (S − 1)) es demasiado agresivo con probabilidades estimadas. Un cuarto de Kelly es un compromiso habitual y es lo que imprime el script.
Paso 4 — Ejecuta el script#
Rellena SOFT con las cuotas que hayas recogido de una casa blanda (a mano, de un comparador o de otra API), con los nombres de los equipos tal y como los escribe PinnFeed. Instala requests y ejecuta python value.py:
# value.py: encuentra cuotas +EV en una casa blanda usando las cuotas justas sin margen de Pinnacle.
# pip install requests
import os, requests
BASE = os.environ.get("PINNFEED_BASE", "https://pinnfeed.io")
KEY = os.environ["PINNFEED_KEY"]
# Cuotas que has recogido de una casa blanda: (local, visitante, resultado) -> cuota decimal.
SOFT = {
("Osasuna", "Malaga", "home"): 1.95,
("Colon", "Defensor Sporting", "away"): 2.30,
}
MIN_EV = 0.02 # ventaja del 2%
def kelly(price, p, fraction=0.25):
"""Stake de Kelly fraccional como parte del bankroll."""
return max(0.0, fraction * (price * p - 1) / (price - 1))
r = requests.get(f"{BASE}/v1/odds", headers={"x-api-key": KEY},
params={"sport": "soccer", "market": "moneyline", "main": "true", "limit": 1000}, timeout=20)
r.raise_for_status()
for ev in r.json()["events"]:
for m in ev["markets"]:
for o in m["outcomes"]:
soft = SOFT.get((ev["home"], ev["away"], o["name"]))
if not soft:
continue
ev_pct = soft * o["fairProb"] - 1 # valor esperado por unidad apostada
flag = "VALUE" if ev_pct >= MIN_EV else "no edge"
print(f'{flag:8} {ev["home"]} v {ev["away"]} {o["name"]}: soft {soft} vs Pinnacle {o["decimal"]} '
f'(fair {o["fair"]:.3f}, margin {m["margin"]:.1%}) EV {ev_pct:+.1%} '
f'kelly/4 {kelly(soft, o["fairProb"]):.2%}')
La salida es así:
VALUE Colon v Defensor Sporting away: soft 2.3 vs Pinnacle 1.8065 (fair 2.049, margin 13.4%) EV +12.3% kelly/4 2.36%
La llamada REST funciona en todos los planes; en Free los precios tienen 30 segundos. Para valor en directo los quieres en vivo: haz la misma comparación dentro del cliente WebSocket de la guía de Python y Node, con Builder.
Paso 5 — Contrástalo con el CLV#
A corto plazo los resultados son sobre todo varianza. La respuesta honesta más rápida es el valor de la línea de cierre: ¿el precio que cogiste batió la cuota justa de cierre de Pinnacle? La guía de CLV registra cada apuesta y la mide.
Preguntas frecuentes#
¿Por qué usar Pinnacle como referencia?#
Pinnacle trabaja con márgenes bajos y límites altos y mueve sus precios con el dinero sharp, así que su precio sin margen se usa mucho como la mejor estimación pública de la probabilidad real.
¿Qué método usa PinnFeed para quitar el margen?#
El método multiplicativo (proporcional). Cada resultado incluye las cuotas decimales y americanas en bruto, así que puedes usar otro método.
¿PinnFeed da cuotas de casas blandas?#
No. PinnFeed lleva solo Pinnacle. Combínalo con tus propias cuotas de casas blandas o con una API de varias casas como The Odds API.