
- Auth
- Wallet-Signatur, daraus wird ein API-Key abgeleitet. Lass den privaten Schlüssel möglichst nicht auf dem Bot-Host liegen.
- Lesen
- Gamma API für Märkte und Metadaten, ohne Auth. CLOB API für das Orderbuch.
- Handeln
- CLOB API, signierte Anfragen. Käufe als Market-Orders, Verkäufe als Limit-Orders.
- Taker-Gebühr
- 0.07 x p x (1-p) pro Anteil auf Krypto-Märkten. Maker zahlen nichts.
- Abrechnung
- Kurze Krypto-Märkte werden über einen 60-Sekunden-Orakel-Durchschnitt gegen die Fenstereröffnung abgerechnet.
- Geografie
- Sperrt die USA, Großbritannien, Frankreich und mehrere andere Länder.
- Doku
- docs.polymarket.com
Fünf Schritte, bewusst vereinfacht. Die Snippets zeigen die Form jedes Aufrufs, keinen Produktionscode: keine Retries, keine Fehlerbehandlung, kein Backoff bei Rate-Limits. Die offizielle Client-Bibliothek übernimmt das Signieren; die Beispiele nutzen sie.
Client installieren und Credentials ableiten
Polymarket ist 2026 auf CLOB v2 umgestiegen, nimm also den v2-Client. Die Credentials werden einmal aus einer Wallet-Signatur abgeleitet und dann wiederverwendet.
pip install py-clob-client-v2 from py_clob_client.client import ClobClient HOST = "https://clob.polymarket.com" client = ClobClient(HOST, key=PRIVATE_KEY, chain_id=137, signature_type=1) creds = client.create_or_derive_api_key() # einmal signieren, Ergebnis aufbewahren client.set_api_creds(creds)Per E-Mail angelegte Konten nutzen einen anderen Signaturtyp als Wallet-Konten. Mehrere Typen authentifizieren problemlos, aber nur der richtige sieht dein Guthaben, also prüfe den Guthaben-Aufruf, bevor du handelst.
Den Markt und seine Token-IDs finden
Gamma ist der Katalog, nur lesend. Die Slugs der kurzen Krypto-Märkte sind deterministisch, und ein geschlossener Markt verschwindet aus Slug-Abfragen, bleibt aber per numerischer ID erreichbar.
import requests GAMMA = "https://gamma-api.polymarket.com" m = requests.get(f"{GAMMA}/markets", params={"slug": "btc-updown-5m-1757500800"}).json()[0] up_token, down_token = m["clobTokenIds"] # ein Token pro Ergebnis market_id = m["id"] # aufbewahren: überlebt das SchließenDas Orderbuch lesen
book = client.get_order_book(up_token) best_ask = float(book.asks[0].price) # was ein Kauf jetzt zahlt best_bid = float(book.bids[0].price) # was ein Verkauf jetzt bekommt spread = best_ask - best_bid # Fenster überspringen, wenn das breit istLogge jedes Lesen mit der Uhrzeit, zu der du es gelesen hast. Ein Fenster ohne frisches Lesen ist kein Trade, den du hättest machen können.
Eine Order platzieren
Ein Fill-or-Kill-Kauf muss eine Market-Order über einen Dollarbetrag mit höchstens zwei Dezimalstellen sein. Verkäufe funktionieren als Limit-Orders, die nehmen, was da ist.
from py_clob_client.clob_types import MarketOrderArgs, OrderArgs, OrderType buy = client.create_market_order(MarketOrderArgs(token_id=up_token, amount=25.00, side="BUY")) resp = client.post_order(buy, OrderType.FOK) assert resp.get("success"), resp # bei allem anderen abbrechen, nie einen Fill annehmen sell = client.create_order(OrderArgs(token_id=up_token, price=0.90, size=30, side="SELL")) client.post_order(sell, OrderType.FAK)Eine Order kann auf der Leitung einen Fehler werfen und trotzdem ausgeführt werden. Frag nach jeder Exception deine Trades ab und gleiche ab, bevor das nächste Fenster kommt.
Fills lesen und Gewinne einlösen
Gewinne lösen sich nicht von selbst ein. Nach der Abrechnung liegen die Anteile in der Wallet, bis du die Condition einlöst, und ein nicht eingelöstes Guthaben blockiert irgendwann neue Orders.
fills = client.get_trades() # deine Ausführungen, mit gezahlter Gebühr pro Fill # Das Einlösen ist ein On-Chain-Aufruf pro Condition-ID. Der Relayer-Client kapselt ihn; # ohne ihn jeden Tag in der Web-Oberfläche einlösen.
Was du vor echtem Geld prüfen solltest
- Prüfe, ob die Gebühr auf deinem ersten echten Fill 0.07 x p x (1-p) entspricht. Bei jedem geloggten Fill war das der Fall.
- Das Order-Minimum liegt bei 5 Anteilen; winzige prozentuale Einsätze werden aufgerundet oder abgelehnt.
- Die Rate-Limits sind für einen Bot großzügig, aber bündle Orderbuch-Abfragen, wo die API es erlaubt.
- Maker-Prämien gibt es auf manchen Märkten, und sie verlangen eine Mindestordergröße, derzeit 50 Anteile. Ein Quote über 10 Anteile verdient nichts.