Polymarket Bot Tutorial · Kapitel 15 von 32

Sports microstructure bots auf Polymarket: In-Game-Edge, scoreline-getriebene Mispricing, der NBA-Tag (745) und Tennis-Tag (864), Live-Data-Quellen und Execution-Patterns für High-Frequency Sports Markets.

Was dieses Kapitel abdeckt

Sports Markets sind das am konstantesten aktive nicht-politische Segment auf Polymarket. Die Bots, die funktionieren, fallen in zwei klare Buckets: Pre-Game Line-Catcher, die handeln, sobald die Line feststeht, und In-Game-Microstructure-Bots, die während des Spiels auf Order-Book-Bewegungen reagieren. Dieses Kapitel behandelt beide mit den konkreten Tag-IDs, Datenquellen und Latenzbudgets, die jeweils gelten.

Sports Markets sind das geschäftigste nicht-politische Segment auf Polymarket. Das funktionierende Execution-Pattern kombiniert einen Live-Score-Feed (ESPN, PandaScore) mit Order-Book-Microstructure-Signalen. Dieses Kapitel behandelt, was speziell für NFL, NBA, Soccer und Tennis funktioniert und wo sich Esports unterscheidet.

  • Warum Sports Markets handelbar sind
  • Pre-Game vs. In-Game (verschiedene Bots)
  • Verifizierte Tag-IDs (745 NBA, 864 Tennis)
  • Datenquellen: ESPN, offizielle APIs, On-Screen
  • Latenzbudget für In-Game
  • Die 0.99 / 0.01-Falle
  • Code: ein Games-Book abonnieren und reagieren

Warum Sports Markets handelbar sind

Sports Markets werden in definierten Zeitfenstern abgewickelt (Stunden bis Tage), haben öffentliche Live-Daten und ziehen während der Spiele kontinuierlichen Orderflow an. Alle drei sind notwendig für einen handelbaren Markt - politische Markets verfehlen die „definierte Zeitspanne“, Wetter-Markets den „kontinuierlichen Flow“, obskure Turniere die „öffentlichen Live-Daten“.

Die Trader-Population in Sports Markets ist auch vielfältiger als etwa in Election Markets. Gelegenheits-Sportwetter preisen emotional; informierte Trader korrigieren im Verlauf eines Spiels in Richtung Fair Value. Die Lücke zwischen beiden ist der Bot-Edge.

Die Volumenverteilung ist ungleich: Ein NFL-Sonntag verteilt Hunderte Millionen Dollar über Polymarket-Sports-Markets; ein Spiel der Saudi Pro League am Dienstagabend könnte unter 50.000 US-Dollar liegen. Richte deine Strategie nach dem, wo die Action tatsächlich ist.

Pre-Game vs. In-Game (verschiedene Bots)

Zwei grundlegend verschiedene Bot-Designs.

Pre-Game Line-Catcher: Märkte scannen, die gerade geöffnet wurden, falsch bepreiste Lines gegen dein Modell oder gegen die Zahl eines schärferen Venue identifizieren und einen FOK-Buy platzieren. Halten bis zum In-Play, manchmal bis zur Auflösung. Geschwindigkeit: Minuten, nicht Sekunden. Edge: Modell + Line-Shopping.

In-Game Microstructure: Abo auf das WebSocket des Order Books eines Live-Spiels, auf Ungleichgewichtssignale + Score-Events innerhalb von Sekunden reagieren. Geschwindigkeit: Sekunden, nicht Minuten. Edge: Latenz + Orderflow lesen.

Die beiden teilen fast keinen Code. Sie haben unterschiedliche Risikoprofile, unterschiedliche Datenquellen, unterschiedliche Exit-Strategien. Ein Bot, der versucht, beides zu tun, endet damit, keines von beidem gut zu machen; wähle eines.

Verifizierte Tag-IDs (745 NBA, 864 Tennis)

Production Tag-IDs, im Mai 2026 für große Sportkategorien verifiziert. Nutze diese, um /events-Aufrufe effizient zu filtern.

Sport / LigaTag-IDTag-SlugNotizen
NBA745nbahöchstes Volumen Okt-Jun
NFL450nflPeak So/Mo Sep-Feb
Tennis (alle)864tennisganzjährig, Turnier-Rhythmus
Soccer (allgemein)1059soccermit Sub-Tags unten kombinieren
EPL739epl
UCL2186uefa-champions-league
Esports (alle)702esportsLoL+CS2+Valorant+Dota
MLB1245mlbPeak Apr-Oct
NHL823nhlPeak Okt-Jun

Tag-IDs sind über Jahre hinweg stabil. Neue Tags werden hinzugefügt (Saudi Pro League, IPL), aber alte Tags werden nicht neu nummeriert.

Datenquellen: ESPN, offizielle APIs, On-Screen

Für traditionelle Sports deckt die kostenlose ESPN-Scoreboard-API alles ab, was du brauchst: Scores, Period/Clock, Win-Probability, manchmal Shot Location. Kein Key erforderlich; nur auf IP-Ebene rate-limitiert. Endpoint-Pattern: https://site.api.espn.com/apis/site/v2/sports/<sport>/<league>/scoreboard.

Für Esports hat ESPN keine Coverage. Optionen: PandaScore ($30-60/Monat, der Branchenstandard), HLTV (nur CS2, scrapeable, keine API), Liquipedia (community-maintained, scrapeable, langsamere Update-Frequenz).

On-Screen-Feeds (für einen TV-Stream zahlen und die Scorebug per OCR auslesen) funktionieren, sind operativ aber aufwendig. Empfohlen nur, wenn du eine Strategie hast, die Sub-3-Sekunden-Updates auf einem Sport erfordert, für den keine API Echtzeit-Coverage bietet.

Latenzbudget für In-Game

Das End-to-End-Latenzbudget für einen reaktiven In-Game-Bot.

  • Score-Event passiert: t=0
  • Source-Feed reflektiert es: t+3-15s (ESPN: ~10s; PandaScore: ~3s)
  • Dein Bot liest den Feed: t+10-16s
  • Bot entscheidet sich für eine Aktion: +50ms
  • FOK-Order platziert: +200-500ms
  • Am CLOB gematcht: +300-1000ms (Netzwerk + Matching)

Gesamt: 11-17 Sekunden. Die schnellsten professionellen Firmen erreichen 3-5 Sekunden End-to-End mit bezahlten Premium-Feeds und co-located VPS. Retail-Bots auf Standard-Hosts und mit freiem ESPN liegen am langsameren Ende.

Strategien, die Sub-5s brauchen, sind für Retail nicht praktikabel. Strategien, die im 10-17-Sekunden-Fenster funktionieren, sind: Line-Catching nach einem Score, Fade von Überreaktionen, Late-Game-Certainty-Plays.

Die 0.99 / 0.01-Falle

Das häufigste In-Play-Sports-Bot-Fehlschlagen: den klaren Favoriten bei 0.99 mit einer Minute Restzeit kaufen und auf einfache +1¢ hoffen. Drei Gründe, warum das scheitert.

Erstens ist die 1% implizite Wahrscheinlichkeit des Underdogs nicht null - späte Comebacks passieren mit nicht trivialer Häufigkeit. Ein zu 99,5% sicherer Win, 200-mal gespielt, erzeugt einen Verlust bei voller Positionsgröße.

Zweitens bedeutet der Spread bei 0.99/0.01, dass du 99c pro Share zahlst, im Erfolgsfall 1c gewinnst und bei der seltenen Wende 99c verlierst. Das Risiko-Rendite-Verhältnis ist brutal.

Drittens wird der Bot, der einen GTC-Sell bei 0.999 nutzt, selten gefillt - zu diesem Preis gibt es keine Käufer. Die Position läuft bis zur Auflösung. Wenn sie gewinnt, hast du 1c bekommen. Wenn die Wende eintritt, verlierst du 99c.

Die Falle kostet echte Gelder von Builden, die die Mathematik nicht durchgerechnet haben. Bleib aus Markets mit einem Preis von 0.95+ heraus, es sei denn, deine Strategie ist speziell für das Redemption-Arbitrage-Profil gebaut.

Code: ein Games-Book abonnieren und reagieren

Referenz: das WebSocket eines bestimmten NBA-Spiels abonnieren, Book-Updates loggen, FOK bei einem Ungleichgewichtssignal auslösen.

import websocket, json
THRESHOLD = 0.5  # imbalance level to trigger

def on_message(ws, message):
    msg = json.loads(message)
    if msg.get("event_type") != "book": return
    bids = msg.get("bids", [])
    asks = msg.get("asks", [])
    bid_depth = sum(float(b["price"]) * float(b["size"]) for b in bids[:5])
    ask_depth = sum(float(a["price"]) * float(a["size"]) for a in asks[:5])
    total = bid_depth + ask_depth
    if total < 100: return  # too illiquid
    imb = (bid_depth - ask_depth) / total
    if abs(imb) > THRESHOLD:
        print(f"signal imb={imb:.2f} bid={bid_depth:.0f} ask={ask_depth:.0f}")
        # fire FOK here

ws = websocket.WebSocketApp(
    "wss://ws-subscriptions-clob.polymarket.com/ws/market",
    on_open=lambda ws: ws.send(json.dumps({"type":"Market","markets":["<CONDITION_ID>"]})),
    on_message=on_message
)
ws.run_forever()

Production-Ergänzungen: Cooldown zwischen Auslösungen, per-Token Inventory Cap, Kill bei stale book (keine Nachricht in 30s).

Häufig gestellte Fragen

Welche Sports-Tags sind auf Polymarket am aktivsten?
NBA (tag_id 745), Tennis (tag_id 864) und Soccer (je nach Wettbewerb unterschiedlich) führen während ihrer Saisons das 24h-Volumen an. NFL spiked wöchentlich während der Regular Season und der Playoffs. Wir haben die NBA- und Tennis-Tag-IDs in Produktion verifiziert - andere sollten über den gamma /tags-Endpoint geprüft werden, bevor man sich auf sie verlässt.
Kann ich In-Game-Sports-Markets profitabel botten?
Möglich - aber schwer. Der Edge ist real (Live-Scoreline oft 30-90 Sekunden falsch bepreist), aber andere Bots beobachten ebenfalls. Die besten Ergebnisse, die wir gesehen haben, kommen aus der Kombination einer schnellen Live-Score-Datenquelle mit einfachen Regeln („Gegner hat gescored, der Markt hat sich noch nicht bewegt, kaufen“). Reines Stat-Arb ohne die Datenquelle verliert gegen schnellere Konkurrenten.
Wo bekomme ich Live-Sports-Daten?
ESPN.com hat inoffizielle JSON-Endpunkte, die Live-Scores zurückgeben - für viele Strategien gut genug. Offizielle APIs (NBA Stats API, NFL public endpoints) sind zuverlässiger, aber langsamer. Twitter-Accounts von Beat Reportern liefern Text, erfordern aber LLM-Parsing. Nichts davon ist HFT-grade; alles ist „schnell genug“ für Retail.
Was ist die 0.99 / 0.01-Falle?
Wenn ein Sports Market bei 99 Cent YES steht (sehr wahrscheinlich gewonnen), bleibt fast kein Upside mehr und eine 1-Cent-Bewegung kann einen erwarteten Monatsgewinn auslöschen. Viele Bots werden erwischt, indem sie bei 0.99 kaufen, dem letzten Cent hinterherjagen und dann hart getroffen werden, wenn ein unerwartetes Ereignis den Preis auf 0.85 drückt. Harte Regel: Nicht über ~0.95 kaufen, es sei denn, deine Expected-Value-Math ist wasserdicht.
Wie vergleicht sich Polymarket Sports mit traditionellen Sportsbooks?
Kein House Edge auf den Spread (vs. ~5-10% Vig bei FanDuel/DraftKings), aber die Liquidität ist dünner und Spreads können breiter sein. Polymarket ist stark bei Events, die traditionelle Books unterbewerten - internationale Turniere, Esports, Nischenmärkte. Für Mainstream NFL/NBA sind traditionelle Books liquider, kosten aber mehr in Vig.
Kann mein Bot gleichzeitig über mehrere Sports-Markets handeln?
Ja - und das solltest du. Sports Microstructure funktioniert am besten als Portfolio aus 5-20 parallelen Spielen. Per-Game-Positionslimit (z. B. 50 USD), Portfolio-Limit (z. B. 500 USD) und unkorrelierte Exponierung über Spiele hinweg. Sich auf ein einziges Spiel zu konzentrieren maximiert die Varianz.