Arquitectura de un bot de apuestas con cuotas de Pinnacle
Respuesta: la mayoría de bots de apuestas o trading tienen cinco partes: (1) un feed de datos, (2) un estado local de eventos y mercados, (3) reglas de señal, (4) controles de riesgo y (5) la ejecución en la cuenta con la que apuestas. PinnFeed cubre la parte 1 y ayuda con la 2 y la 3: un WebSocket (Builder) que envía un snapshot completo y luego frames delta con cada cambio de precio de Pinnacle, incluidos fair, margin y maxStake. No coloca apuestas: la ejecución es tuya, en una casa que lo permita y donde apostar sea legal para ti.
El pipeline#
| Parte | Qué hace | Con PinnFeed |
|---|---|---|
| Ingesta | Mantener una conexión abierta, responder ping con pong, reconectar con backoff | wss://pinnfeed.io/v1/stream (Python, Node) |
| Estado | Mapa de market.id → último mercado; borrar con op: "remove" | snapshot/delta |
| Señales | Bajada de precio, oferta por encima de fair, cambio de línea | steam, filtro EV |
| Riesgo | Topes de stake, maxStake >= 100, exposición máxima por evento, botón de parada | Tu código |
| Ejecución | Colocar la apuesta, registrar precio y resultado | Tu casa de apuestas o exchange |
Bucle mínimo de señales (Python)#
book = {} # market id -> market
def on_frame(msg, alert):
if msg["type"] == "snapshot":
for m in msg["markets"]:
book[m["id"]] = m
elif msg["type"] == "delta":
for ch in msg["changes"]:
if ch["kind"] != "market":
continue
if ch["op"] == "remove":
book.pop(ch["id"], None)
continue
new, old = ch["market"], book.get(ch["market"]["id"])
book[new["id"]] = new
if not old or (new["maxStake"] or 0) < 100:
continue
for o_new, o_old in zip(new["outcomes"], old["outcomes"]):
if o_old["decimal"] and o_new["decimal"] / o_old["decimal"] - 1 <= -0.04:
alert(new["eventId"], o_new["name"], o_old["decimal"], o_new["decimal"])
Conecta on_frame a cualquier cliente de las páginas por lenguaje (Go, Rust, Kotlin). Registra cada señal y cada decisión para medirlas después contra el cierre: registro de apuestas con CLV.
Consejos de diseño#
- Ejecuta la ingesta en un host siempre encendido, no en una función serverless.
- Ten un modo
paperque registre lo que haría el bot antes de apostar nada. - Usa un WebSocket por proceso y reparte internamente; Builder permite 3 conexiones y Pro 10.
- Gestiona
4008 slow_consumersacando el trabajo del bucle de recepción.
Planes#
Builder (€99/mes): WebSocket, los 13 deportes y todos los mercados. Pro (€199/mes): 10 conexiones y frames en bruto. Prueba de 3 días; se pide tarjeta y se cobra después del día 3 salvo que canceles. Haz el prototipo antes con REST gratis: registro.
Contenido educativo para mayores de 18 años. Las apuestas automáticas pueden perder dinero rápido; sin pronósticos ni ganancias garantizadas. En España, apuesta solo con operadores con licencia de la DGOJ.
Preguntas frecuentes#
¿PinnFeed puede colocar apuestas por mi bot?#
No. Son datos de solo lectura. La ejecución ocurre en tu propia cuenta de casa de apuestas o exchange.
¿Las casas permiten bots?#
Muchas restringen las apuestas automatizadas en sus condiciones. Compruébalo antes de automatizar la ejecución.