Polymarket Bot Tutorial · Bölüm 3 / 32

Polymarket bot stack’inizi seçin: Python (py-clob-client 0.34.6), Node.js (@polymarket/clob-client-v2 v1.0.6) veya Rust (resmi SDK yok, ethers-rs üzerinde geliştirin). Artılar, eksiler, latency, code sample’lar.

Bu bölüm neleri kapsıyor

Dil seçimi, çoğu builder’ın düşündüğü kadar kritik değildir. Polymarket, her dil için aynı REST ve WebSocket endpoint’lerini sunar; SDK seçimi çoğunlukla ne kadar glue code’u kendiniz yazacağınızı belirler. Python ve Node’un ikisinin de resmi olarak bakımı yapılan SDK’ları vardır; Rust’ta yoktur, ancak hot path için uygulanabilir. Bu bölüm trade-off’ları anlatır, aynı "fetch order book" görevini her dilde göstererek farkı somutlaştırır ve çoğu production bot’un sonunda benimsediği mixed-stack pattern ile bitirir.

  • Decision framework
  • Python (varsayılan seçenek)
  • Node.js (full-stack devs)
  • Rust (latency-critical hot path)
  • Her stack için setup komutları
  • Code skeleton: 3 dilde order book fetch etme
  • Stack’leri ne zaman karıştırmalı (Python control plane + Rust hot path)

Decision framework

Stack seçiminin %90’ını üç soru çözer.

  1. Zaten güçlü olduğunuz bir dil var mı? Eğer her gün Python yazıyorsanız, botu Python’da yazın. Her gün TypeScript yazıyorsanız, botu Node’da yazın. Aşağıdaki SDK kalite farkları gerçek, ama alışılmadık bir dille savaşmanın maliyetinden daha küçüktür.
  2. Strateji latency-critical mı? Edge’iniz 50ms altında tepki vermeye bağlıysa (5-minute crypto markets, news sırasında market-making), hot path Rust veya Go’dan fayda görür. Çoğu stratejinin buna ihtiyacı yoktur.
  3. Birden fazla strateji çalıştıracak mısınız? Tek bir Python process rahatça 10-20 market’i yönetebilir. Bunun ötesinde async Node veya split-process Python daha iyi ölçeklenir.

İlk bot için dürüst varsayılan Python’dur. Yalnızca ölçülmüş bir kısıt sizi zorladığında değiştirin.

Python (varsayılan seçenek)

Python varsayılan seçenektir çünkü SDK en kapsamlı olanıdır ve iteration loop en hızlıdır. py-clob-client 0.34.6 sürümüyle (Mayıs 2026) önemli olan tüm CLOB v2 endpoint’lerini kapsar: market ve limit orders, FOK/FAK/GTC varyantları, order book okumaları, balance/allowance okumaları ve web3.py üzerinden doğrudan chain işlemleri.

Artılar: olgun SDK, pandas ile kolay data analysis, geniş community, on-chain okumalar için web3.py. Eksiler: async ergonomisi JavaScript’e göre daha hantaldır, GIL multi-core hız kazanımlarını sınırlar (I/O-bound bir bot için nadiren önemlidir), cold container’larda startup time yavaştır.

Önerilir: builder’ların %80’i için. Özellikle stratejisi backtesting, statistical analysis veya execution ile birlikte herhangi bir data work içeren herkes için.

Node.js (full-stack devs)

Node.js ikinci en iyi desteklenen stack’tir. @polymarket/clob-client-v2 1.0.6 sürümüyle Python SDK ile aynı endpoint’leri, uçtan uca TypeScript types ile kapsar. Async native ve hızlıdır; WebSocket handling mükemmeldir.

Artılar: en iyi async story, native TypeScript types, HTTP + WS için geniş ecosystem, bir web dashboard ile aynı Node runtime üzerinde kolay deploy. Eksiler: büyük token ID’leri için number precision BigInt veya string handling gerektirir (ERC-1155 ID’leri 256-bit’tir), pandas benzeri data araçları daha zayıftır.

Önerilir: zaten bir JavaScript stack yöneten ve tek bir runtime isteyen builder’lar için. Ayrıca bot ile birlikte dashboard geliştiren herkes için - bot core ile bir Next.js dashboard arasında types paylaşmak bir hata sınıfını ortadan kaldırır.

Rust (latency-critical hot path)

Rust’ın resmi bir Polymarket SDK’sı yoktur. V2 REST ve WebSocket API’lerine doğrudan reqwest (HTTP), tokio-tungstenite (WebSocket) ve imzalama için ethers-rs veya alloy kullanarak bağlanırsınız. Python’da 30 dakika olan kurulum işi yaklaşık iki gün sürer.

Artılar: JS subprocess olmadan native EIP-712 signing, sub-millisecond order construction, yük altında deterministic memory profile, GC pause yok. Eksiler: SDK olmaması, Python kullanıcılarının ücretsiz aldığı şeyleri sizin yeniden uygulamanız anlamına gelir (clobToken ID parsing, response schema validation, salt/nonce management). Latency kazancı, tune edilmiş Python’a kıyasla 20-100ms civarındadır; bu yalnızca sub-second stratejiler için önemlidir.

Önerilir: market-making bot’un hot path’i veya news-arb bot’un trade firing ayağı için. Neredeyse hiç bir zaman bot’un tamamı için değil.

Her stack için setup komutları

Mainnet’e karşı çalışan signed order için minimum komutlar (tek 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.

İlk order’a kadar geçen süre: ~10 dk Python, ~15 dk Node, ~4-8 saat Rust.

Code skeleton: 3 dilde order book fetch etme

Aynı görev - bir Polymarket token’ı için order book’u fetch etmek - her stack’te. Üçü de aynı CLOB v2 REST endpoint’ine gider.

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 (doğrudan 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]);

Üçünde de response shape aynı. Rust’ın maliyeti read path’te değil, signing, order construction ve error handling gibi diğer her yerde ortaya çıkar.

Stack’leri ne zaman karıştırmalı (Python control plane + Rust hot path)

Birçok production bot’un ulaştığı pattern: karar içeren her şey için Python, milisaniyelik execution ayağı için Rust.

Architecture: bir Python process market state’i okur, strategy logic’i çalıştırır ve küçük bir command file yazar (ör. {"action":"buy","token":"...","size":10,"price":0.45}) Unix socket’e. Bir Rust daemon bu socket’i dinler, order’ı imzalar ve CLOB’a gönderir. Python process yavaş ve kullanışlı olabilir; Rust daemon hızlı ve minimaldir.

Buradaki handoff kilit noktadır: signed-order adımını izole ederek, latency’den ödün vermeden Python crash budget geri kazanılır. Production bot’larımızda tam olarak bu pattern’i kullanıyoruz - Python niyetleri üretir, /tmp/clob.sock üzerindeki bir Node daemon imzalamayı yönetir. Daemon’ın Node versiyonu sub-100ms için gayet iyidir; Rust ise ancak 50ms altı durumda gerçekten fark yaratır.

Sık sorulan sorular

py-clob-client Polymarket V2 ile uyumlu mu?
Evet. py-clob-client 0.34.6 (Mayıs 2026 itibarıyla VPS üzerinde production'da çalıştırdığımız sürüm) V2 uyumludur ve pUSD collateral migration ile çalışır. Paket "pip install py-clob-client" ile kurulur.
Resmi Node.js Polymarket SDK’sı hangisi?
@polymarket/clob-client-v2 (Mayıs 2026 itibarıyla güncel sürüm: v1.0.6). Paket adındaki "v2" önemlidir - daha eski @polymarket/clob-client paketi V1’dir ve yeni projeler için önerilmez. "npm install @polymarket/clob-client-v2" ile kurun.
Resmi bir Rust Polymarket SDK’sı var mı?
Hayır. Mayıs 2026 itibarıyla Polymarket tarafından sunulan resmi bir Rust SDK yoktur. Rust kullanıcıları doğrudan V2 REST ve WebSocket API’lerine ethers-rs (EIP-712 signing için) ve reqwest veya hyper (HTTP/WS için) kullanarak bağlanır. Daha fazla code gerektirir, ama latency ve concurrency kazanımları market making için önemlidir.
Polymarket bot’u için Go kullanabilir miyim?
Evet, teknik olarak - Go’nun iyi HTTP ve Ethereum kütüphaneleri vardır (go-ethereum). Resmi bir Go SDK yoktur, bu yüzden REST API üzerinde geliştirme yaparsınız. Polymarket bot’larında Go’nun Python veya Node.js kadar sık kullanıldığını görmüyoruz, ama tamamen uygulanabilir.
İkisini de biliyorsam Python mu Node.js mi kullanmalıyım?
Stratejiniz research-heavy ise Python (pandas, NumPy, scikit-learn). Stratejiniz real-time / event-driven ise ve aynı dili client ve server tarafında kullanmak istiyorsanız Node.js. İkisi de aynı CLOB endpoint’lerine ulaşır; ikisi de HFT dışı her strateji için yeterince hızlıdır.
Node SDK için TypeScript gerekli mi?
Zorunlu değil, ama önerilir. @polymarket/clob-client-v2 TypeScript types ile gelir ve EIP-712 signature payload’ları ya da order types yanlış olduğunda type errors’ı compile time’da yakalamak çok fazla debugging tasarrufu sağlar.
Bir Polymarket bot ne kadar hızlı olmalı?
Çoğu strateji için millisecond düzeyi yeterlidir, microsecond değil. Sports microstructure ve market making sub-100ms’den fayda görür; news arbitrage 500-1000ms’yi tolere eder. Strateji mantığı için Python kullanın, yalnızca latency profiling bunun edge’iniz için önemli olduğunu gösterirse hot path’te Rust’a geçin.