Polymarket Bot Tutorial · Kapitel 3 von 32

Wähle deinen Polymarket Bot-Stack: Python (py-clob-client 0.34.6), Node.js (@polymarket/clob-client-v2 v1.0.6) oder Rust (kein offizielles SDK, auf ethers-rs aufbauen). Vor- und Nachteile, Latenz, Code-Beispiele.

Was dieses Kapitel abdeckt

Die Wahl der Programmiersprache ist viel weniger entscheidend, als die meisten Builder denken. Polymarket stellt allen Sprachen dieselben REST- und WebSocket-Endpunkte zur Verfügung; die SDK-Wahl bestimmt vor allem, wie viel Glue Code du selbst schreiben musst. Python und Node haben beide offiziell gepflegte SDKs; Rust hat keines, ist aber für den Hot Path gut machbar. Dieses Kapitel geht die Trade-offs durch, zeigt dieselbe Aufgabe „Order Book abrufen“ in jeder Sprache, damit der Unterschied konkret wird, und endet mit einem Mixed-Stack-Pattern, auf das sich die meisten Production Bots tatsächlich einigen.

  • Decision Framework
  • Python (Standardwahl)
  • Node.js (Full-Stack-Entwickler)
  • Rust (latency-kritischer Hot Path)
  • Setup-Befehle pro Stack
  • Code-Skeleton: Order Book in 3 Sprachen abrufen
  • Wann man Stacks mischt (Python Control Plane + Rust Hot Path)

Decision Framework

Drei Fragen klären 90% der Stack-Wahl.

  1. Hast du bereits starke Vorkenntnisse? Wenn du täglich Python schreibst, schreibe den Bot in Python. Wenn du täglich TypeScript schreibst, schreibe den Bot in Node. Die Qualitätsunterschiede der SDKs unten sind real, aber kleiner als die Kosten, mit einer ungewohnten Sprache zu kämpfen.
  2. Ist die Strategie latency-kritisch? Wenn dein Edge davon abhängt, in unter 50 ms zu reagieren (5-Minuten-Crypto-Märkte, Market Making während News), profitiert der Hot Path von Rust oder Go. Die meisten Strategien brauchen das nicht.
  3. Wirst du mehr als eine Strategie ausführen? Ein einzelner Python-Prozess kann bequem 10-20 Märkte verwalten. Darüber hinaus skaliert async Node oder ein aufgeteilter Python-Ansatz mit mehreren Prozessen besser.

Die ehrliche Standardwahl für den ersten Bot ist Python. Wechsel nur, wenn eine gemessene Anforderung dich dazu zwingt.

Python (Standardwahl)

Python ist die Standardwahl, weil das SDK am vollständigsten ist und der Iterationszyklus am schnellsten. py-clob-client in Version 0.34.6 (Mai 2026) deckt jeden wichtigen CLOB-v2-Endpunkt ab: Market- und Limit-Orders, FOK/FAK/GTC-Varianten, Order-Book-Reads, Balance-/Allowance-Reads und direkte Chain-Operationen über web3.py.

Vorteile: ausgereiftes SDK, einfache Datenanalyse mit pandas, große Community, web3.py für On-Chain-Reads. Nachteile: async-Ergonomie ist im Vergleich zu JavaScript umständlich, GIL begrenzt Multi-Core-Speedups (spielt bei einem I/O-bound Bot selten eine Rolle), Startzeit auf kalten Containern ist langsam.

Empfohlen für: 80% der Builder. Besonders für alle, deren Strategie Backtesting, statistische Analyse oder allgemeine Datenarbeit neben der Ausführung umfasst.

Node.js (Full-Stack-Entwickler)

Node.js ist der zweitbeste unterstützte Stack. @polymarket/clob-client-v2 in Version 1.0.6 deckt dieselben Endpunkte wie das Python-SDK ab, mit TypeScript-Typen durchgängig. Async ist nativ und schnell; WebSocket-Handling ist hervorragend.

Vorteile: beste async Story, native TypeScript-Typen, großes Ökosystem für HTTP + WS, einfache Bereitstellung im selben Node-Runtime wie ein Web-Dashboard. Nachteile: Zahlenpräzision erfordert BigInt oder String-Handling für große Token-IDs (ERC-1155-IDs sind 256 Bit), Data-Tools als Pendant zu pandas sind schwächer.

Empfohlen für: Builder, die bereits einen JavaScript-Stack pflegen und nur eine Runtime wollen. Auch für alle, die neben dem Bot ein Dashboard bauen - geteilte Typen zwischen Bot-Core und Next.js-Dashboard beseitigen eine ganze Klasse von Bugs.

Rust (latency-kritischer Hot Path)

Rust hat kein offizielles Polymarket SDK. Du baust direkt gegen die V2 REST- und WebSocket-APIs mit reqwest (HTTP), tokio-tungstenite (WebSocket) und ethers-rs oder alloy für das Signieren. Grob zwei Tage Setup-Arbeit statt 30 Minuten in Python.

Vorteile: natives EIP-712-Signing ohne JS-Subprozess, Order-Erstellung im Sub-Millisecond-Bereich, deterministisches Memory-Profil unter Last, keine GC-Pausen. Nachteile: kein SDK bedeutet, dass du neu implementierst, was Python-Nutzer kostenlos bekommen (clobToken-ID-Parsing, Validierung des Response-Schemas, Salt-/Nonce-Management). Der Latenzgewinn liegt bei 20-100 ms gegenüber optimiertem Python und ist nur für Sub-Second-Strategien relevant.

Empfohlen für: den Hot Path eines Market-Making-Bots oder den Trade-Auslöse-Teil eines News-Arb-Bots. Fast nie für den gesamten Bot.

Setup-Befehle pro Stack

Minimale Befehle für eine funktionierende signierte Order gegen Mainnet (einzelner CLOB-v2-Endpunkt).

Python:

python -m venv venv && source venv/bin/activate
pip install py-clob-client==0.34.6 web3 python-dotenv
# Set POLYGON_RPC, PRIVATE_KEY, POLY_FUNDER in .env

Node:

npm init -y
npm install @polymarket/[email protected] ethers dotenv
# Set POLYGON_RPC, PRIVATE_KEY, POLY_FUNDER in .env

Rust:

cargo new --bin pmt
cd pmt
cargo add tokio reqwest serde serde_json ethers alloy tungstenite tokio-tungstenite
# Hand-write signer + endpoint client; no SDK shortcut.

Time-to-first-order: ca. 10 Min. Python, ca. 15 Min. Node, ca. 4-8 Stunden Rust.

Code-Skeleton: Order Book in 3 Sprachen abrufen

Dieselbe Aufgabe - das Order Book für einen Polymarket-Token abrufen - in jedem Stack. Alle drei treffen denselben CLOB-v2-REST-Endpunkt.

Python (py-clob-client):

from py_clob_client.client import ClobClient
client = ClobClient(host="https://clob.polymarket.com", chain_id=137)
book = client.get_order_book("<token_id>")
print(book.bids[:3], book.asks[:3])

Node (@polymarket/clob-client-v2):

import { ClobClient } from "@polymarket/clob-client-v2";
const c = new ClobClient({ host: "https://clob.polymarket.com", chain: 137 });
const book = await c.getOrderBook("<token_id>");
console.log(book.bids.slice(0,3), book.asks.slice(0,3));

Rust (direktes HTTP):

let url = format!("https://clob.polymarket.com/book?token_id={}", token);
let book: serde_json::Value = reqwest::get(&url).await?.json().await?;
println!("{:?} {:?}", &book["bids"][..3], &book["asks"][..3]);

Gleiches Response-Format in allen drei Fällen. Die Kosten von Rust liegen überall sonst - Signieren, Order-Erstellung, Fehlerbehandlung - nicht im Read Path.

Wann man Stacks mischt (Python Control Plane + Rust Hot Path)

Das Pattern, auf das viele Production Bots hinauslaufen: Python für alles, was Entscheidungen betrifft, Rust für den millisekundenschnellen Execution-Teil.

Architektur: Ein Python-Prozess liest den Marktstatus, führt die Strategie-Logik aus und schreibt eine kleine Command-Datei (z. B. {"action":"buy","token":"...","size":10,"price":0.45}) auf einen Unix Socket. Ein Rust-Daemon lauscht auf diesem Socket, signiert die Order und sendet sie an den CLOB. Der Python-Prozess kann langsam und bequem sein; der Rust-Daemon ist schnell und minimal.

Der Übergabepunkt ist entscheidend: Indem der Signed-Order-Schritt isoliert wird, holst du dir das Crash-Budget von Python zurück, ohne Latenz zu opfern. Wir verwenden genau dieses Pattern in unseren Production Bots - Python emittiert Absichten, ein Node-Daemon auf /tmp/clob.sock übernimmt das Signieren. Die Node-Version des Daemons ist für unter 100 ms völlig in Ordnung; Rust lohnt sich erst unter 50 ms wirklich.

Häufig gestellte Fragen

Ist py-clob-client mit Polymarket V2 kompatibel?
Ja. py-clob-client 0.34.6 (die Version, die wir Stand Mai 2026 in unserer Produktion auf unseren VPS nutzen) ist V2-kompatibel und funktioniert mit der pUSD-Collateral-Migration. Das Paket wird mit "pip install py-clob-client" installiert.
Was ist das offizielle Polymarket Node.js SDK?
@polymarket/clob-client-v2 (aktuell v1.0.6 Stand Mai 2026). Das "v2" im Paketnamen ist wichtig - das ältere Paket @polymarket/clob-client ist V1 und für neue Projekte nicht empfohlen. Installation via "npm install @polymarket/clob-client-v2".
Gibt es ein offizielles Rust Polymarket SDK?
Nein. Stand Mai 2026 gibt es kein offizielles Rust SDK von Polymarket. Rust-Nutzer bauen direkt gegen die V2 REST- und WebSocket-APIs mit ethers-rs (für EIP-712-Signing) und reqwest oder hyper (für HTTP/WS). Es ist mehr Code, aber die Latenz- und Concurrency-Vorteile sind für Market Making relevant.
Kann ich Go für einen Polymarket Bot verwenden?
Ja, technisch gesehen - Go hat gute HTTP- und Ethereum-Libraries (go-ethereum). Es gibt kein offizielles Go SDK, also baust du gegen die REST-API. Wir sehen Go bei Polymarket Bots nicht so häufig wie Python oder Node.js, aber es ist vollständig machbar.
Soll ich Python oder Node.js verwenden, wenn ich beides kenne?
Python, wenn deine Strategie research-lastig ist (pandas, NumPy, scikit-learn). Node.js, wenn deine Strategie in Echtzeit / ereignisgesteuert ist und du denselben Client- und Server-Stack in einer Sprache willst. Beide erreichen dieselben CLOB-Endpunkte; beide sind schnell genug für jede Non-HFT-Strategie.
Brauche ich TypeScript für das Node SDK?
Nicht zwingend, aber empfohlen. @polymarket/clob-client-v2 liefert TypeScript-Typen mit, und Type-Errors zur Compile-Zeit zu finden spart viel Debugging, wenn EIP-712-Signature-Payloads oder Order-Typen falsch sind.
Wie schnell muss ein Polymarket Bot sein?
Die meisten Strategien brauchen Millisekunden, nicht Mikrosekunden. Sports-Microstructure und Market Making profitieren von unter 100 ms; News-Arbitrage toleriert 500-1000 ms. Nutze Python für die Strategie-Logik und wechsle nur dann zu Rust für den Hot Path, wenn Latency-Profiling zeigt, dass es für deinen Edge relevant ist.