On the wire · 05:04:37 UTC Live 584 · Prematch 14,345 · Markets 57,052 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Respuesta · Arbitraje

Calculadora de arbitraje con cuotas de Pinnacle

Actualizado el · PinnFeed · 2 min de lectura

Respuesta: hay arbitraje cuando los mejores precios de todos los resultados de un mercado, tomados entre varias casas, tienen probabilidades implícitas que suman menos de 1: 1/p1 + 1/p2 (+ 1/p3) < 1. Reparte el stake de cada resultado en proporción a 1/precio para asegurar el mismo retorno. PinnFeed aporta el lado de Pinnacle en tiempo real (Builder) o por REST; los precios de la otra casa salen de tu propia fuente, porque PinnFeed solo lleva Pinnacle.

Fórmula y reparto del stake#

def arb(prices: list[float], bankroll: float = 100):
    inv = [1 / p for p in prices]
    total = sum(inv)
    if total >= 1:
        return None                         # no arbitrage
    stakes = [bankroll * i / total for i in inv]
    return {"margin": 1 - total, "stakes": [round(s, 2) for s in stakes],
            "return": round(bankroll / total, 2)}

print(arb([2.12, 2.02]))   # Pinnacle over 2.12, other book under 2.02 -> small arb

Con 2,12 y 2,02 la suma implícita es 0,9668, así que una banca de 100 devuelve unos 103,44 gane el lado que gane, antes de comisiones y siempre que ambas apuestas se mantengan.

Bucle de alertas (lado Pinnacle desde PinnFeed)#

import os, time, requests
KEY = os.environ["PINNFEED_KEY"]  # ps_live_...

def other_book_prices(event):        # plug in your own source here
    return {}

while True:
    r = requests.get("https://pinnfeed.io/v1/odds",
        params={"sport": "tennis", "market": "moneyline", "main": "true", "limit": 100},
        headers={"x-api-key": KEY}, timeout=10)
    for e in r.json()["events"]:
        for m in e["markets"]:
            if (m["maxStake"] or 0) < 100:
                continue
            pin = {o["name"]: o["decimal"] for o in m["outcomes"]}
            other = other_book_prices(e)          # {"home": 1.9, "away": 2.2}
            if set(pin) == set(other) and pin:
                best = [max(pin[k], other[k]) for k in pin]
                res = arb(best)
                if res:
                    print(e["home"], "v", e["away"], res)
    time.sleep(5)                                  # Hobby allows 2 req/s

Riesgos antes de apostar#

  • Los precios se mueven entre las dos apuestas; puedes quedarte sin una de las patas.
  • Las casas pueden anular errores evidentes o limitar cuentas de arbitraje.
  • Las reglas difieren (retiradas en tenis, prórroga, empates en carreras); un arbitraje "seguro" puede perder si la liquidación es distinta.
  • Compara con el value betting, que suele escalar mejor: arbitraje frente a value betting.

Planes#

Free va con 30 s de retraso, demasiado lento para arbitraje salvo para pruebas. Hobby (€29/mes) es REST en tiempo real; Builder (€99/mes) envía los cambios de Pinnacle por el WebSocket. Prueba de 3 días; se requiere tarjeta y se cobra después del día 3 salvo que canceles.

Contenido educativo para mayores de 18 años. El arbitraje tiene riesgo de ejecución y de liquidación; nada de esto promete beneficios. En España, apuesta solo con operadores con licencia de la DGOJ.

Preguntas frecuentes#

¿Puedo encontrar arbitrajes solo con PinnFeed?#

No. El arbitraje necesita al menos dos casas; PinnFeed solo aporta Pinnacle.

¿Importa el maxStake en el arbitraje?#

Sí. Limita cuánto acepta Pinnacle a ese precio, y con ello la pata de Pinnacle.

¿Debo contar las comisiones?#

Sí. La comisión de un exchange o las comisiones de pago pueden comerse un margen de arbitraje pequeño.

El plan WebSocket: Builder, 99 €/mes.

Cuotas de Pinnacle en tiempo real por un único WebSocket: los 13 deportes, todos los mercados, cuotas justas sin margen y cuotas de cierre. 3 días gratis y cancelas con un clic.

Form K-1 · Free API key

Get your free API key.

One field. No password, no card: enter your email, click the link we send, and your key is on screen.

By continuing you agree to the Terms and Privacy Policy.

One free key per email. Link valid for 20 minutes.