Polymarket Bot Tutorial · Chapter 3 of 32

আপনার Polymarket bot stack বেছে নিন: Python (py-clob-client 0.34.6), Node.js (@polymarket/clob-client-v2 v1.0.6), বা Rust (official SDK নেই, ethers-rs-এর ওপর build করুন)। Pros, cons, latency, code samples।

এই chapter-এ কী covered

ভাষা নির্বাচনটা বেশিরভাগ builders যতটা গুরুত্ব দেন, বাস্তবে তার চেয়ে অনেক কম গুরুত্বপূর্ণ। Polymarket প্রতিটি ভাষার জন্য একই REST এবং WebSocket endpoint expose করে; SDK choice মূলত ঠিক করে আপনি কতটা glue code নিজে লিখবেন। Python এবং Node - দুটিরই officially maintained SDK আছে; Rust-এর নেই, তবে hot path-এর জন্য feasible। এই chapter-এ trade-off গুলো বোঝানো হয়েছে, একই "fetch order book" task প্রতিটি ভাষায় দেখানো হয়েছে যাতে পার্থক্যটা concrete হয়, এবং শেষে একটি mixed-stack pattern দেওয়া হয়েছে যা বেশিরভাগ production bot আসলে শেষ পর্যন্ত ব্যবহার করে।

  • Decision framework
  • Python (default choice)
  • Node.js (full-stack devs)
  • Rust (latency-critical hot path)
  • প্রতি stack-এর setup commands
  • Code skeleton: 3 ভাষায় order book fetch
  • কখন stacks mix করবেন (Python control plane + Rust hot path)

Decision framework

তিনটি প্রশ্ন stack choice-এর 90% মীমাংসা করে।

  1. আপনার কি কোনো strong existing skill আছে? আপনি যদি প্রতিদিন Python লেখেন, bot-ও Python-এ লিখুন। আপনি যদি প্রতিদিন TypeScript লেখেন, bot-ও Node-এ লিখুন। নিচে SDK quality-এর পার্থক্যগুলো বাস্তব, কিন্তু unfamiliar language-এর সঙ্গে লড়াই করার cost-এর চেয়ে কম।
  2. Strategy কি latency-critical? যদি আপনার edge 50ms-এর কমে react করার ওপর নির্ভর করে (5-minute crypto markets, news-এর সময় market-making), তাহলে hot path-এ Rust বা Go-এর সুবিধা আছে। বেশিরভাগ strategy-এর এটা দরকার হয় না।
  3. আপনি কি একাধিক strategy চালাবেন? একটি single Python process স্বচ্ছন্দে 10-20টি market manage করতে পারে। এর বেশি হলে async Node বা split-process Python ভালো scale করে।

প্রথম bot-এর জন্য সৎ default হলো Python। measured constraint আপনাকে বাধ্য না করা পর্যন্ত switch করবেন না।

Python (default choice)

Python default, কারণ SDK সবচেয়ে complete এবং iteration loop সবচেয়ে fast। py-clob-client version 0.34.6 (May 2026) প্রায় সব গুরুত্বপূর্ণ CLOB v2 endpoint cover করে: market এবং limit orders, FOK/FAK/GTC variants, order book reads, balance/allowance reads, এবং web3.py-এর মাধ্যমে direct chain operations।

Pros: mature SDK, pandas দিয়ে easy data analysis, বড় community, on-chain reads-এর জন্য web3.py। Cons: JavaScript-এর তুলনায় async ergonomics awkward, GIL multi-core speedup সীমিত করে (I/O-bound bot-এর ক্ষেত্রে সাধারণত তেমন matter করে না), cold container-এ startup time ধীর।

Recommended for: 80% of builders. বিশেষ করে যাঁদের strategy-তে backtesting, statistical analysis, বা execution-এর পাশাপাশি কোনো না কোনো data work আছে।

Node.js (full-stack devs)

Node.js দ্বিতীয় সর্বাধিক supported stack। @polymarket/clob-client-v2 version 1.0.6 Python SDK-এর মতোই same endpoint cover করে, সাথে পুরো জুড়ে TypeScript types আছে। Async native এবং fast; WebSocket handling চমৎকার।

Pros: best async story, native TypeScript types, HTTP + WS-এর জন্য বড় ecosystem, web dashboard-এর একই Node runtime-এ deploy করা সহজ। Cons: বড় token ID-এর ক্ষেত্রে number precision-এর জন্য BigInt বা string handling দরকার (ERC-1155 ID গুলো 256-bit), pandas-এর মতো data tools তুলনামূলক দুর্বল।

Recommended for: যাঁরা ইতিমধ্যে JavaScript stack maintain করেন এবং একটাই runtime চান। এছাড়াও: bot-এর পাশাপাশি dashboard বানাচ্ছেন এমন যেকোনো ব্যক্তি - bot core এবং Next.js dashboard-এর মধ্যে types share করলে bugs-এর একটি class দূর হয়।

Rust (latency-critical hot path)

Rust-এর official Polymarket SDK নেই। আপনি reqwest (HTTP), tokio-tungstenite (WebSocket), এবং signing-এর জন্য ethers-rs বা alloy ব্যবহার করে সরাসরি V2 REST এবং WebSocket APIs-এর ওপর build করেন। Python-এ 30 মিনিটের বদলে setup কাজ প্রায় দুই দিন।

Pros: JS subprocess ছাড়া native EIP-712 signing, sub-millisecond order construction, load-এর নিচে deterministic memory profile, GC pauses নেই। Cons: SDK না থাকায় Python user-রা যা ফ্রি পান তা আপনাকে নিজে re-implement করতে হয় (clobToken ID parsing, response schema validation, salt/nonce management)। latency-তে gain হলো tuned Python-এর তুলনায় 20-100ms, যা শুধু sub-second strategy-তেই matter করে।

Recommended for: market-making bot-এর hot path, বা news-arb bot-এর trade-firing leg। প্রায় কখনও পুরো bot-এর জন্য নয়।

প্রতি stack-এর setup commands

mainnet-এ working signed order পাওয়ার জন্য minimum commands (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: Python ~10 মিনিট, Node ~15 মিনিট, Rust ~4-8 ঘণ্টা।

Code skeleton: 3 ভাষায় order book fetch

একই task - Polymarket token-এর order book fetch করা - প্রতিটি stack-এ। তিনটিই একই CLOB v2 REST endpoint hit করে।

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

তিনটিতেই response shape একই। Rust-এর cost অন্য সব জায়গায় - signing, order construction, error handling - read path-এ নয়।

কখন stacks mix করবেন (Python control plane + Rust hot path)

অনেক production bot যে pattern-এ converge করে: decision-সংক্রান্ত সবকিছুর জন্য Python, millisecond execution leg-এর জন্য Rust।

Architecture: একটি Python process market state পড়ে, strategy logic চালায়, এবং একটি ছোট command file (যেমন {"action":"buy","token":"...","size":10,"price":0.45}) Unix socket-এ লেখে। একটি Rust daemon সেই socket listen করে, order sign করে, এবং তা CLOB-এ post করে। Python process slow এবং convenient হতে পারে; Rust daemon fast এবং minimal।

Handoff-টাই মূল বিষয়: signed-order step-কে isolate করার মাধ্যমে latency sacrifice না করেই Python crash budget recover হয়। আমরা production bots-এ ঠিক এই pattern ব্যবহার করি - Python intentions emit করে, /tmp/clob.sock-এ একটি Node daemon signing handle করে। sub-100ms-এর ক্ষেত্রে Node version যথেষ্ট; Rust তার value পায় মূলত 50ms-এর নিচে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

py-clob-client কি Polymarket V2-এর সাথে compatible?
হ্যাঁ। py-clob-client 0.34.6 (May 2026 অনুযায়ী আমাদের VPS-এ production-এ যে version চালাই) V2-compatible এবং pUSD collateral migration-এর সঙ্গে কাজ করে। package টি "pip install py-clob-client" দিয়ে install করা হয়।
official Node.js Polymarket SDK কোনটি?
@polymarket/clob-client-v2 (বর্তমানে May 2026 অনুযায়ী v1.0.6)। package name-এ "v2" গুরুত্বপূর্ণ - পুরোনো @polymarket/clob-client package টি V1 এবং নতুন project-এর জন্য recommended নয়। "npm install @polymarket/clob-client-v2" দিয়ে install করুন।
official Rust Polymarket SDK আছে কি?
না। May 2026 অনুযায়ী Polymarket-এর কোনো official Rust SDK নেই। Rust user-রা ethers-rs (EIP-712 signing-এর জন্য) এবং reqwest বা hyper (HTTP/WS-এর জন্য) ব্যবহার করে সরাসরি V2 REST এবং WebSocket APIs-এর ওপর build করেন। Code বেশি, কিন্তু market making-এর ক্ষেত্রে latency এবং concurrency-এর লাভ গুরুত্বপূর্ণ।
Polymarket bot-এর জন্য Go ব্যবহার করতে পারি?
হ্যাঁ, technically - Go-তে ভালো HTTP এবং Ethereum library আছে (go-ethereum)। কোনো official Go SDK নেই, তাই আপনাকে REST API-এর ওপর build করতে হবে। আমরা Python বা Node.js-এর তুলনায় Polymarket bot-এ Go ততটা commonly দেখি না, তবে এটি পুরোপুরি feasible।
আমি যদি দুটোই জানি, Python না Node.js কোনটি ব্যবহার করব?
আপনার strategy research-heavy হলে Python (pandas, NumPy, scikit-learn)। আপনার strategy real-time / event-driven হলে এবং client ও server-এ একই language চাইলে Node.js। দুটোই একই CLOB endpoint-এ পৌঁছায়; non-HFT যে কোনো strategy-র জন্য দুটোই যথেষ্ট fast।
Node SDK-এর জন্য কি TypeScript দরকার?
আবশ্যক নয়, তবে recommended। @polymarket/clob-client-v2 TypeScript types সহ ship করে, এবং EIP-712 signature payload বা order type ভুল হলে compile time-এ type error ধরে ফেললে অনেক debugging বাঁচে।
Polymarket bot কতটা fast হতে হবে?
বেশিরভাগ strategy-তে milliseconds যথেষ্ট, microseconds নয়। Sports microstructure এবং market making sub-100ms থেকে benefit পায়; news arbitrage 500-1000ms tolerate করে। Strategy logic-এর জন্য Python ব্যবহার করুন, latency profiling প্রমাণ করলে তবেই hot path-এ Rust-এ যান।