Polymarket Bot Tutorial · Hoofdstuk 3 van 32

Kies je Polymarket bot-stack: Python (py-clob-client 0.34.6), Node.js (@polymarket/clob-client-v2 v1.0.2) of Rust (geen officiële SDK, bouw op ethers-rs). Pros, cons, latency, code samples.

Wat dit hoofdstuk behandelt

De taal-keuze is veel minder consequentieel dan de meeste builders behandelen. Polymarket exposeert dezelfde REST en WebSocket endpoints aan elke taal; de SDK-keuze bepaalt meestal hoeveel glue-code je zelf schrijft. Python en Node hebben beide officieel onderhouden SDK's; Rust niet, maar is haalbaar voor de hot path. Dit hoofdstuk wandelt door de trade-offs, toont dezelfde "fetch order book" taak in elke taal zodat de diff concreet is en eindigt met een mixed-stack patroon dat de meeste productie-bots uiteindelijk adopteren.

  • Beslis-framework
  • Python (default keuze)
  • Node.js (full-stack devs)
  • Rust (latency-critical hot path)
  • Setup-commando's per stack
  • Code skeleton: fetch order book in 3 talen
  • Wanneer stacks te mixen (Python control plane + Rust hot path)

Beslis-framework

Drie vragen lossen 90% van de stack-keuze op.

  1. Heb je een sterke bestaande skill? Als je dagelijks Python schrijft, schrijf de bot in Python. Als je dagelijks TypeScript schrijft, schrijf de bot in Node. De SDK-kwaliteitsverschillen hieronder zijn echt maar kleiner dan de kost van het vechten met een ongebruikelijke taal.
  2. Is de strategie latency-critical? Als je edge afhangt van reageren onder 50ms (5-minuten crypto markten, market-making tijdens news), profiteert de hot path van Rust of Go. De meeste strategieën hebben dit niet nodig.
  3. Ga je meer dan één strategie draaien? Een enkel Python-proces kan comfortabel 10-20 markten beheren. Boven dat schaalt async Node of split-process Python beter.

De eerlijke default voor een eerste bot is Python. Switch alleen wanneer een gemeten constraint het forceert.

Python (default keuze)

Python is de default omdat de SDK het meest compleet is en de iteratie-loop het snelst. py-clob-client op versie 0.34.6 (mei 2026) dekt elk CLOB v2 endpoint dat telt: market en limit orders, FOK/FAK/GTC varianten, order book reads, balance/allowance reads en directe chain-operaties via web3.py.

Pros: matuur SDK, makkelijke data-analyse met pandas, grote community, web3.py voor on-chain reads. Cons: async-ergonomie is onhandig vergeleken met JavaScript, GIL beperkt multi-core speedups (zelden telt voor een I/O-bound bot), startup-tijd op cold containers is traag.

Aanbevolen voor: 80% van builders. Vooral iedereen wiens strategie backtesting, statistische analyse of welk data-werk dan ook naast executie omvat.

Node.js (full-stack devs)

Node.js is de op-één-na-best-ondersteunde stack. @polymarket/clob-client-v2 op versie 1.0.2 dekt dezelfde endpoints als de Python SDK met TypeScript types overal. Async is native en snel; WebSocket-handling is uitstekend.

Pros: beste async-story, native TypeScript types, groot ecosysteem voor HTTP + WS, makkelijk deploy op dezelfde Node-runtime als een web dashboard. Cons: getallenprecisie vereist BigInt of string-handling voor grote token IDs (ERC-1155 IDs zijn 256-bit), pandas-equivalente data tools zijn zwakker.

Aanbevolen voor: builders die al een JavaScript-stack onderhouden en één runtime willen. Ook: iedereen die een dashboard naast de bot bouwt — types delen tussen de bot-core en een Next.js dashboard verwijdert een klasse bugs.

Rust (latency-critical hot path)

Rust heeft geen officiële Polymarket SDK. Je bouwt tegen de V2 REST en WebSocket API's direct met reqwest (HTTP), tokio-tungstenite (WebSocket) en ethers-rs of alloy voor signing. Ruwweg twee dagen setup-werk vs 30 minuten in Python.

Pros: native EIP-712 signing zonder een JS subprocess, sub-millisecond order-constructie, deterministisch geheugen-profiel onder load, geen GC-pauzes. Cons: geen SDK betekent dat je her-implementeert wat Python-gebruikers gratis krijgen (clobToken ID parsing, response schema-validatie, salt/nonce-management). De winst in latency is 20-100ms vs getuned Python, wat alleen telt voor sub-seconde strategieën.

Aanbevolen voor: de hot path van een market-making bot of de trade-firing leg van een news-arb bot. Bijna nooit de hele bot.

Setup-commando's per stack

Minimum commando's tot een werkende signed order tegen mainnet (single CLOB v2 endpoint).

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: ~10 min Python, ~15 min Node, ~4-8 uur Rust.

Code skeleton: fetch order book in 3 talen

Dezelfde taak — fetch het order book voor een Polymarket token — in elke stack. Alle drie raken hetzelfde CLOB v2 REST endpoint.

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 (directe 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]);

Dezelfde response-vorm in alle drie. De kost van Rust is overal anders — signing, order-constructie, error handling — niet in het read-pad.

Wanneer stacks te mixen (Python control plane + Rust hot path)

Het patroon waar veel productie-bots op convergeren: Python voor alles wat beslissingen omvat, Rust voor de milliseconde-executie leg.

Architectuur: een Python-proces leest market state, draait de strategie-logica en schrijft een klein commando-bestand (bijv. {"action":"buy","token":"...","size":10,"price":0.45}) naar een Unix socket. Een Rust-daemon luistert op die socket, tekent de order en post hem naar de CLOB. Het Python-proces kan traag en handig zijn; de Rust-daemon is snel en minimaal.

De handoff is de sleutel: door de signed-order stap te isoleren wordt het crash-budget van Python hersteld zonder latency op te offeren. We gebruiken precies dit patroon in onze productie-bots — Python emit intenties, een Node-daemon op /tmp/clob.sock handelt signing af. De Node-versie van de daemon is prima voor sub-100ms; Rust verdient zijn aandeel alleen onder 50ms.

Veelgestelde vragen

Is py-clob-client compatibel met Polymarket V2?
Ja. py-clob-client 0.34.6 (de versie die we in productie draaien op onze VPS per mei 2026) is V2-compatibel en werkt met de pUSD collateral migratie. Het package wordt geïnstalleerd via "pip install py-clob-client".
Wat is de officiële Node.js Polymarket SDK?
@polymarket/clob-client-v2 (momenteel v1.0.2 per mei 2026). De "v2" in de package-naam is significant — het oudere @polymarket/clob-client package is V1 en niet aanbevolen voor nieuwe projecten. Installeer via "npm install @polymarket/clob-client-v2".
Bestaat er een officiële Rust Polymarket SDK?
Nee. Per mei 2026 is er geen officiële Rust SDK van Polymarket. Rust-gebruikers bouwen direct tegen de V2 REST en WebSocket API's met ethers-rs (voor EIP-712 signing) en reqwest of hyper (voor HTTP/WS). Het is meer code, maar de latency- en concurrency-winsten tellen voor market making.
Kan ik Go gebruiken voor een Polymarket bot?
Ja, technisch — Go heeft goede HTTP- en Ethereum-libraries (go-ethereum). Er is geen officiële Go SDK, dus je bouwt tegen de REST API. We zien Go niet zo gangbaar gebruikt voor Polymarket bots als Python of Node.js, maar het is perfect haalbaar.
Moet ik Python of Node.js gebruiken als ik beide ken?
Python als je strategie research-zwaar is (pandas, NumPy, scikit-learn). Node.js als je strategie real-time / event-driven is en je dezelfde taal voor client en server wilt. Beide bereiken dezelfde CLOB-endpoints; beide zijn snel genoeg voor elke niet-HFT strategie.
Heb ik TypeScript nodig voor de Node SDK?
Niet vereist, maar aanbevolen. @polymarket/clob-client-v2 ship't met TypeScript types en type-fouten op compile-time vangen spaart een hoop debug wanneer EIP-712 signature payloads of order types verkeerd zijn.
Hoe snel moet een Polymarket bot zijn?
De meeste strategieën zijn milliseconden-fine, geen microseconden. Sport-microstructuur en market making profiteren van sub-100ms; news arbitrage tolereert 500-1000ms. Gebruik Python voor de strategy-logica, switch naar Rust voor de hot path alleen als latency-profiling bewijst dat het telt voor je edge.