Respuesta rápida
Odds-API.io calcula ambos por ti: /arbitrage-bets devuelve Arbitraje entre casas con el margen y el reparto de importes, y /value-bets devuelve precios por encima de una línea justa de casas sharp con su Valor esperado [1] [2]. Este tutorial obtiene ambos, comprueba las cuentas y explica los límites.
Qué necesitas
Qué necesitas: La función get() de Cuotas en vivo con Python y una clave con al menos dos casas seleccionadas [3].
Consigue una clave: Odds-API.io Enlace de socio
Enlace de socio — podríamos recibir una comisión. Consulta nuestra divulgación de afiliados.
Estado del código: El código Python de este tutorial se ejecutó con las respuestas de ejemplo publicadas en la documentación de Odds-API.io (comprobadas el 3 de noviembre de 2026), no con una clave real. Las respuestas reales pueden traer más campos; el código solo lee los documentados.
1. Obtén las oportunidades de arbitraje
bookmakers es obligatorio; minProfit va en porcentaje; includeEventDetails=true añade los equipos. Los márgenes se calculan con netOdds cuando hay comisiones de exchange o mercado de predicción [1]. El código recalcula cada margen a partir de las patas como control.
# reuses get() from the Python tutorial
arbs = get("/arbitrage-bets", bookmakers="Bet365,SingBet,Betano",
minProfit=1, includeEventDetails="true", limit=50)
for a in arbs:
# re-check the margin ourselves from the legs (netOdds where fees apply)
s = sum(1 / float(l.get("netOdds") or l["odds"]) for l in a["legs"])
mine = (1 - s) / s * 100
ev = a.get("event", {})
print(f'{ev.get("home")} v {ev.get("away")} | {a["market"]["name"]} {a["market"].get("hdp", "")}'
f' | API {a["profitMargin"]:.2f}% vs recomputed {mine:.2f}%')Con el ejemplo de la documentación (Betfair Exchange más 2,102 netos, Bet365 menos 2,05) el margen recalculado es del 3,78 % frente al 3,79 % de la API: una diferencia de redondeo.
2. Escala el reparto de importes
optimalStakes está calculado para totalStake (1.000 por defecto); multiplica todas las patas por el mismo factor y no superes el maxStake de cada una [1]. Compruébalo con la Calculadora de arbitraje.
def scale_stakes(arb, bankroll):
"""Scale optimalStakes to a bankroll, keeping every leg under its maxStake."""
factor = bankroll / arb["totalStake"]
for st in arb["optimalStakes"]:
leg = next(l for l in arb["legs"]
if l["bookmaker"] == st["bookmaker"] and l["side"] == st["side"])
if leg.get("maxStake"):
factor = min(factor, leg["maxStake"] / st["stake"])
return [{**st, "stake": round(st["stake"] * factor, 2),
"potentialReturn": round(st["potentialReturn"] * factor, 2)}
for st in arb["optimalStakes"]]
3. Obtén apuestas de valor (+EV)
/value-bets necesita un bookmaker; las cuotas justas salen de un panel de casas sharp y EV = probabilidad justa × cuota − 1 [2]. Como expectedValue es una fracción, puedes deducir la probabilidad justa. Usa la Calculadora de valor esperado (+EV) y la Calculadora del criterio de Kelly con cualquier fila.
vbs = get("/value-bets", bookmaker="Bet365", sport="football",
includeEventDetails="true")
for vb in sorted(vbs, key=lambda v: v["expectedValue"], reverse=True)[:10]:
side = vb["betSide"]
odds = float(vb["bookmakerOdds"][side])
fair_p = (vb["expectedValue"] + 1) / odds # from EV = p x odds - 1
ev = vb.get("event", {})
print(f'{ev.get("home")} v {ev.get("away")} | {vb["market"]["name"]} {side} @ {odds}'
f' | EV {vb["expectedValue"]:.2%} | implied fair p {fair_p:.1%}')
4. Conoce los límites
Los arbitrajes son solo prepartido y se eliminan en cuanto cambia un precio [1]; las casas pueden limitar las cuentas que los aprovechan [4]. El valor es una estimación frente a un consenso sharp; sigue el Valor de la línea de cierre para ver si se sostiene [5].
Preguntas frecuentes
¿Cada cuánto se actualizan las oportunidades?
Las apuestas de valor se recalculan cada 5 segundos y los arbitrajes cada pocos segundos, pero consulta al ritmo que permita tu plan.
¿Por qué mi margen recalculado difiere un poco?
Por redondeo: los netOdds de la API son cadenas redondeadas. Diferencias de centésimas de punto son normales.
¿Un precio +EV es un beneficio seguro?
No. El EV es una media a largo plazo y depende de la estimación de probabilidad justa; los resultados concretos varían.
Sobre esta guía
Pred-Data publica guías independientes y con fuentes enlazadas sobre los mercados de predicción y las herramientas de IA que se usan en ellos. Cada dato enlaza a una fuente primaria o secundaria fiable, verificada en la fecha indicada arriba. No operamos ninguna plataforma de trading, no aceptamos apuestas ni damos asesoramiento personal.
Autor: Ken Lin · Correcciones: si detectas un error, lo revisaremos y fecharemos la corrección.
Divulgación de afiliados
Algunos enlaces de este sitio (marcados como «Enlace de socio») pueden ser enlaces de afiliado: si te registras a través de ellos, podríamos recibir una comisión sin coste adicional para ti. Estos enlaces usan rel="sponsored nofollow" y nunca cambian nuestra valoración. Los enlaces a plataformas en las tablas comparativas son enlaces normales, no de afiliado, a sus webs oficiales.
Fuentes
- Arbitrage Bets guide (formula, response format, limitations) — Odds-API.io docs, consultado el 2 nov 2026
- Value Bets guide (EV formula, response format, limitations) — Odds-API.io docs, consultado el 2 nov 2026
- Quickstart (get a key, first calls, example responses) — Odds-API.io docs, consultado el 2 nov 2026
- What Is Arbitrage Betting? Definition & Example — Odds-API.io glossary, consultado el 2 nov 2026
- Value Bets API: Track Closing Line Value in Python — Odds-API.io blog, consultado el 2 nov 2026