On the wire · 05:12:53 UTC Live 601 · Prematch 14,342 · Markets 57,289 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Réponse · Bots · Architecture

Architecture d'un bot de paris sur les cotes Pinnacle

Mis à jour le · PinnFeed · 2 min de lecture

Réponse : la plupart des bots de paris ou de trading ont cinq parties : (1) un flux de données, (2) un état local des événements et marchés, (3) des règles de signal, (4) des contrôles de risque et (5) l'exécution sur le compte avec lequel vous pariez. PinnFeed fournit la partie 1 et aide pour les parties 2 et 3 : un WebSocket (Builder) qui envoie un snapshot complet puis des frames delta à chaque changement de prix de Pinnacle, avec fair, margin et maxStake. Il ne place pas de paris : l'exécution vous revient, chez un opérateur qui l'autorise et là où parier est légal pour vous.

Le pipeline#

PartieRôleAvec PinnFeed
IngestionGarder une connexion ouverte, répondre pong au ping, se reconnecter avec backoffwss://pinnfeed.io/v1/stream (guide Python et Node)
ÉtatMap market.id → dernier marché ; supprimer sur op: "remove"snapshot/delta
SignauxBaisse de prix, offre au-dessus de fair, changement de ligneguide steam
RisquePlafonds de mise, maxStake >= 100, exposition maximale par événement, arrêt d'urgenceVotre code
ExécutionPlacer le pari, consigner prix et résultatVotre opérateur ou bourse de paris

Boucle minimale de signaux (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"])

Branchez on_frame sur n'importe quel client, par exemple le client Go. Consignez chaque signal et chaque décision pour les mesurer ensuite face à la clôture : suivi de paris avec CLV.

Conseils de conception#

  • Faites tourner l'ingestion sur un hôte toujours allumé, pas dans une fonction serverless.
  • Gardez un mode paper qui consigne ce que ferait le bot avant de miser quoi que ce soit.
  • Un WebSocket par processus, réparti en interne ; Builder autorise 3 connexions, Pro 10.
  • Traitez 4008 slow_consumer en sortant le travail de la boucle de réception.

Offres#

Builder (99 €/mois) : WebSocket, les 13 sports, tous les marchés. Pro (199 €/mois) : 10 connexions et frames bruts. Essai de 3 jours ; carte requise, débitée après le jour 3 sauf résiliation. Prototypez d'abord avec le REST gratuit : inscription.

Contenu éducatif pour adultes (18+). Les paris automatisés peuvent faire perdre de l'argent très vite ; ni pronostics ni promesse de gain. En France, seuls les opérateurs agréés par l'ANJ peuvent proposer des paris en ligne.

Questions fréquentes#

PinnFeed peut-il placer des paris pour mon bot ?#

Non. Ce sont des données en lecture seule. L'exécution se fait sur votre propre compte chez un opérateur ou une bourse de paris.

Les opérateurs autorisent-ils les bots ?#

Beaucoup restreignent les paris automatisés dans leurs conditions. Vérifiez avant d'automatiser l'exécution.

Le plan WebSocket : Builder, 99 €/mois.

Les cotes Pinnacle en temps réel sur un seul WebSocket : les 13 sports, tous les marchés, cotes justes sans marge et cotes de clôture. 3 jours gratuits, résiliable en 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.