باب 33 میں سے 27
مختصر ورژن
Polymarket تین عوامی APIs پیش کرتا ہے: CLOB (ٹریڈنگ)، Gamma (مارکیٹ دریافت)، اور Data (اینالیٹکس)۔ آفیشل Python SDK py-clob-client 0.34.6 ہے۔ تصدیق کے لیے API key + ECDSA signature استعمال ہوتی ہے، اور آرڈرز EIP-712 کے ذریعے Polygon proxy wallet پر سائن کیے جاتے ہیں۔ Rate limits آپ کو فی key تقریباً 60 آرڈرز/منٹ تک محدود کرتی ہیں۔ نئے developers کے لیے سب سے بڑا مسئلہ condition_id → token_id mapping ہے جو Gamma اور CLOB کے درمیان ہوتا ہے - پہلے اسے حل کریں، پھر باقی سب خود بخود سمجھ آ جائے گا۔ Polymarket پر تقریباً $40M/ماہ کی لیکویڈیٹی (liquidity) انعامات (rewards) اور bot-captured spread کمائی جاتی ہے، اور یہ تقریباً مکمل طور پر API users کے ذریعے ہوتی ہے۔

تین الگ خدمات: CLOB (9,000/10s auth) trading کے لیے، Gamma (4,000/10s public) discovery کے لیے، Data (1,000/10s public) تاریخی analytics کے لیے۔
حصہ 1: تین APIs
Polymarket صاف طور پر ذمہ داریوں کو تین الگ خدمات میں تقسیم کرتا ہے۔ ہر کام کے لیے درست API استعمال کرنے سے آپ کا بوٹ تیز، سادہ، اور rate limits کے اندر رہتا ہے۔
| API | Base URL | مقصد | تصدیق درکار |
|---|---|---|---|
| CLOB API | clob.polymarket.com | آرڈر لگائیں، منسوخ کریں، اور ٹریک کریں۔ آرڈر بک پڑھیں۔ پوزیشنز query کریں۔ | Yes (for trading) |
| Gamma API | gamma-api.polymarket.com | مارکیٹس براؤز کریں، metadata، تصاویر، outcome prices، volume، expiry، tags حاصل کریں۔ | No (public) |
| Data API | data-api.polymarket.com | تاریخی trades، پوزیشن snapshots، user analytics، leaderboard data۔ | No (public) |
ایک عام بوٹ loop Gamma کو مارکیٹس تلاش کرنے کے لیے، CLOB کو آرڈر بک حاصل کرنے اور trades place کرنے کے لیے، اور Data کو strategy performance کو offline back-test کرنے کے لیے استعمال کرتا ہے۔ Gamma کو "catalog"، CLOB کو "exchange"، اور Data کو "warehouse" سمجھیں۔
curl یا browser کے ذریعے انہیں explore کر سکتے ہیں - کسی account کی ضرورت نہیں۔ یہ API key generate کرنے سے پہلے prototype بنانے کا ایک بہترین طریقہ ہے۔
L1 chainId 137 کے ساتھ "ClobAuthDomain" EIP-712 struct پر sign کرتا ہے تاکہ credentials derive ہوں۔ L2 HMAC-SHA256 ہر subsequent request کو POLY_SIGNATURE headers کے ساتھ sign کرتا ہے۔
حصہ 2: توثیق اور پراکسی والٹ ماڈل
Polymarket آپ کے مرکزی والٹ کی نجی کلید سے ٹریڈز پر دستخط نہیں کرتا۔ اس کے بجائے، یہ ایک Gnosis Safe طرز کے پراکسی والٹ کا استعمال کرتا ہے: آپ کا مرکزی والٹ ایک پراکسی کو مجاز کرتا ہے، اور پراکسی Polygon پر تمام ٹریڈز انجام دیتا ہے۔ آپ کا API بوٹ اسی پراکسی سے بات کرتا ہے۔
آپ کو کیا درکار ہے
- API key - Polymarket Settings → Developer میں تیار کریں
- Private key - آپ کے trading wallet کی کلید (آپ کے مرکزی MetaMask seed phrase کی نہیں)
- Funder address - آپ کے پراکسی والٹ کا پتہ (Settings → Wallet میں دکھایا گیا)
- Chain ID -
137(Polygon mainnet) - Signature type -
1(POLY_PROXY, retail users کے لیے معیاری)
.env) یا secrets manager استعمال کریں۔ keys کو کبھی Discord، GitHub issues، یا ChatGPT میں paste نہ کریں۔ فرض کریں کہ جو بھی key آپ کے clipboard کو چھوتی ہے وہ پہلے ہی compromise ہو چکی ہے۔ اگر ذرا بھی شک ہو تو keys rotate کریں۔
Magic-link accounts کے لیے Signature type 1 (POLY_PROXY)، browser-wallet proxies کے لیے type 2 (GNOSIS_SAFE)، direct keys کے لیے type 0 (EOA)۔ type 1 اور 2 کے لیے Funder درکار ہے۔
حصہ 3: py-clob-client انسٹال کرنا
سرکاری Python SDK صفر سے پہلی آرڈر تک پہنچنے کا سب سے تیز طریقہ ہے۔ ہم ورژن 0.34.6 استعمال کریں گے، جو اپریل 2026 تک موجودہ ہے۔
# پہلے ایک ورچوئل ماحول بنائیں
python3 -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# SDK انسٹال کریں
pip install py-clob-client==0.34.6 requests websocket-client python-dotenvبنیادی کلائنٹ کنفیگریشن
import os
from dotenv import load_dotenv
from py_clob_client.client import ClobClient
from py_clob_client.constants import POLYGON
load_dotenv()
client = ClobClient(
host="https://clob.polymarket.com",
key=os.environ["POLY_PRIVATE_KEY"],
chain_id=POLYGON, # 137
signature_type=1, # POLY_PROXY
funder=os.environ["POLY_FUNDER"],
)
# ایک بار کے لیے: API اسناد derive کریں اور cache کریں
client.set_api_creds(client.create_or_derive_api_creds())create_or_derive_api_creds() کال آپ کی private key کے ساتھ ایک پیغام پر دستخط کرتی ہے اور اس کے بدلے ایک API key، secret، اور passphrase لیتی ہے۔ پہلی بار چلانے کے بعد انہیں اپنے .env میں cache کریں تاکہ ہر startup پر آپ derive endpoint کو hit نہ کریں۔
POLY_PRIVATE_KEY=0xabc...
POLY_FUNDER=0xdef...
POLY_API_KEY=...
POLY_SECRET=...
POLY_PASSPHRASE=...
Gamma /markets outcomePrices، clobTokenIds، volume24hr، tags واپس کرتا ہے۔ بطور ڈیفالٹ بوٹ اسکینر query کے لیے tag_slug + order=volume24hr استعمال کریں۔
حصہ 4: Gamma کے ذریعے مارکیٹس دریافت کرنا
ٹریڈ کرنے سے پہلے، آپ کو ایسی مارکیٹس تلاش کرنی ہوتی ہیں جن میں ٹریڈ کرنا فائدہ مند ہو۔ Gamma ایسا JSON واپس کرتا ہے جس میں وہ سب کچھ ہوتا ہے جو Polymarket UI دکھاتا ہے: سوال، نتائج، قیمتیں، 24 گھنٹے کا حجم، میعاد ختم ہونا، ٹیگز، اور تصاویر۔
import requests
resp = requests.get(
"https://gamma-api.polymarket.com/markets",
params={
"active": "true",
"closed": "false",
"tag_slug": "politics",
"limit": 20,
"order": "volume24hr",
"ascending": "false",
},
timeout=10,
)
resp.raise_for_status()
markets = resp.json()
for m in markets:
print(f"{m['slug']:50} Yes ${float(m['outcomePrices'][0]):.3f} Vol24h ${m.get('volume24hr', 0):,.0f}")Gamma کے مفید query parameters
| یہ کیا کرتا ہے | |
|---|---|
tag_slug | زمرے کے لحاظ سے فلٹر کریں (politics, sports, crypto, culture, وغیرہ) |
active=true | صرف وہ مارکیٹس جو اس وقت ٹریڈز قبول کر رہی ہیں |
closed=false | حل شدہ مارکیٹس چھپائیں |
order=volume24hr | حالیہ حجم کے لحاظ سے ترتیب دیں (لیکویڈیٹی کا اشارہ) |
end_date_min | ISO date - بہت جلد حل ہونے والی مارکیٹس چھوڑ دیں |
limit | فی صفحہ 500 تک (pagination کے لیے offset استعمال کریں) |

Gamma conditionId ظاہر کرتا ہے (ہر مارکیٹ کے لیے ایک); CLOB token_id پر ٹریڈ کرتا ہے (ہر outcome کے لیے ایک)۔ clobTokenIds ایک JSON-encoded string array ہے جو outcomes کے ساتھ index-matched ہے۔
حصہ 5: condition_id → token_id میپنگ
یہ Polymarket بوٹ ڈیولپمنٹ میں #1 دردِ سر ہے۔ Gamma ایک condition_id واپس کرتا ہے (ہر مارکیٹ کے لیے ایک)۔ CLOB ٹریڈز ایک token_id استعمال کرتی ہیں (ہر نتیجے کے لیے ایک)۔ آپ کو ہمیشہ دونوں کی ضرورت ہوتی ہے۔
condition_id کو CLOB endpoints میں پاس کرنا جو token_id کی توقع رکھتے ہیں۔ آپ کو ایک مبہم "invalid token" ایرر ملے گا۔ ہمیشہ پہلے میپ کریں، پھر ٹریڈ کریں۔# ہر Gamma مارکیٹ آبجیکٹ میں 'clobTokenIds' شامل ہوتے ہیں - ایک JSON string array
import json
market = markets[0]
token_ids = json.loads(market['clobTokenIds']) # ['7410...', '1120...']
yes_token = token_ids[0] # پہلا نتیجہ
no_token = token_ids[1] # دوسرا نتیجہ
# متبادل: condition_id استعمال کرکے براہِ راست CLOB سے پوچھیں
info = client.get_market(condition_id=market['conditionId'])
yes_token = info['tokens'][0]['token_id']نتیجے کی ترتیب کا جھنجھٹ
Gamma کا outcomes array اور clobTokenIds array انڈیکس کے لحاظ سے میچ ہوتے ہیں۔ ہمیشہ یہ فرض کرنے کے بجائے کہ index 0 "Yes" ہے، outcome label پڑھیں۔ کثیر نتیجہ مارکیٹوں (NegRisk، Oscars، elections) میں، index 0 "Kamala Harris" یا "Taylor Swift" ہو سکتا ہے - ترتیب طے شدہ ہوتی ہے لیکن مارکیٹ کے لحاظ سے مخصوص ہوتی ہے۔

آرڈر بک bids descending، asks ascending کے طور پر واپس آتی ہے۔ market-like FAK بھیجنے سے پہلے کسی بھی target notional کے لیے fill price کا اندازہ لگانے کو levels پر walk کریں۔
حصہ 6: آرڈر بک پڑھنا
book = client.get_order_book(token_id=yes_token)
best_bid = float(book.bids[0].price) if book.bids else None
best_ask = float(book.asks[0].price) if book.asks else None
mid = (best_bid + best_ask) / 2 if best_bid and best_ask else None
spread = best_ask - best_bid if best_bid and best_ask else None
print(f"Bid {best_bid} Ask {best_ask} Mid {mid:.4f} Spread {spread:.4f}")آرڈر بکس بطور ترتیب شدہ arrays واپس کی جاتی ہیں (bids نزولی، asks صعودی)۔ ہر سطح میں price اور size ہوتا ہے۔ بڑے آرڈر کے لیے سلپیج کا اندازہ لگانے کے لیے، بک میں آگے بڑھیں اور notional کو جمع کریں یہاں تک کہ آپ اپنے ہدف کے size کو consume کر لیں۔

GTC آرڈر بک پر برقرار رہتا ہے، GTD timestamp پر خود بخود منسوخ ہو جاتا ہے، FOK کو مکمل size fill یا cancel درکار ہوتا ہے، FAK limit پر جتنا ہو سکے لیتا ہے اور باقی منسوخ کر دیتا ہے۔
حصہ 7: آرڈرز لگانا
حدی آرڈر (GTC - ڈیفالٹ)
from py_clob_client.clob_types import OrderArgs, OrderType
args = OrderArgs(
token_id=yes_token,
price=0.45,
size=100, # حصص، ڈالر نہیں۔ 100 حصص @ $0.45 = $45 زیادہ سے زیادہ لاگت۔
side="BUY",
)
signed_order = client.create_order(args)
response = client.post_order(signed_order, OrderType.GTC)
print(response)create_order کال آپ کی پرائیویٹ key کے ساتھ EIP-712 ساختہ پیغام پر دستخط کرتی ہے۔ post_order اسے CLOB کو بھیجتا ہے۔ آپ کبھی بھی خام پرائیویٹ keys نیٹ ورک پر نہیں بھیجتے - صرف دستخط شدہ آرڈرز۔
آرڈر کی اقسام
| قسم | Code | طرز عمل | کب استعمال کریں |
|---|---|---|---|
| Good Till Cancelled | GTC | بک پر اس وقت تک موجود رہتا ہے جب تک بھر نہ جائے یا آپ اسے منسوخ نہ کریں | ڈیفالٹ۔ زیادہ تر مارکیٹ میکنگ اور حدی حکمت عملیاں۔ |
| Good Till Date | GTD | مقررہ timestamp پر خودکار طور پر منسوخ ہو جاتا ہے | ایونٹ پر مبنی: "فیڈ کے اعلان سے 5 منٹ پہلے منسوخ کریں" |
| Fill or Kill | FOK | ضروری ہے کہ پوری مقدار فوراً بھر جائے ورنہ مکمل طور پر منسوخ ہو جائے | آربٹریج کی وہ ٹانگیں جہاں جزوی fills trade کو خراب کر دیتے ہیں |
| Fill and Kill | FAK | حدی قیمت پر جتنا ہو سکے بھرتا ہے، باقی منسوخ کر دیتا ہے | جارحانہ taking - مارکیٹ آرڈر کی طرح کام کرتا ہے مگر قیمت کی حد کے ساتھ |
منسوخ کرنا
# ایک آرڈر
client.cancel(order_id="0xabc...")
# کسی مخصوص مارکیٹ میں تمام آرڈرز منسوخ کریں
client.cancel_market_orders(market=market['conditionId'])
# آخری آپشن: سب کچھ منسوخ کریں
client.cancel_all()حصہ 8: WebSocket اسٹریمنگ
ہر سیکنڈ Gamma کو پول کرنا بے کار ہے اور آپ جلد ہی rate limits سے ٹکرا جائیں گے۔ WebSocket فیڈ حقیقی وقت میں آرڈر بک اور ٹریڈ اپڈیٹس اسٹریمنگ کرتی ہے، sub-second latency کے ساتھ۔
import json, websocket
WS_URL = "wss://ws-subscriptions-clob.polymarket.com/ws/market"
def on_open(ws):
ws.send(json.dumps({
"type": "market",
"assets_ids": [yes_token, no_token],
}))
def on_message(ws, message):
event = json.loads(message)
if event.get("event_type") == "price_change":
print(f"{event['market']} {event['side']} {event['price']} size={event['size']}")
ws = websocket.WebSocketApp(
WS_URL,
on_open=on_open,
on_message=on_message,
)
ws.run_forever(ping_interval=20)دو فیڈز موجود ہیں: /market فیڈ (عوامی آرڈر بک + ٹریڈز) اور /user فیڈ (آپ کے اپنے آرڈر اور fill واقعات، authenticated)۔ پروڈکشن بوٹس عموماً دونوں سے کنیکٹ ہوتے ہیں، disconnect پر خودکار طور پر دوبارہ کنیکٹ ہوتے ہیں، اور موجودہ book state کے لیے WebSocket کو source of truth سمجھتے ہیں۔
حصہ 9: Rate Limits اور Backoff
| حد | برسٹ | |
|---|---|---|
| Order placement (CLOB) | ~60 / minute per API key | ~10 / second |
| Order cancellation | ~120 / minute | ~20 / second |
| Market data reads (CLOB book) | ~300 / minute | higher, varies |
| Gamma API | Generous; respect 429s | - |
| WebSocket messages | No practical limit inbound | - |
جب آپ HTTP 429 تک پہنچتے ہیں، تو سرور Retry-After header واپس کرتا ہے۔ جٹر کے ساتھ exponential backoff نافذ کریں:
import random, time
def post_with_backoff(fn, *args, max_retries=6):
for attempt in range(max_retries):
try:
return fn(*args)
except Exception as e:
if "429" in str(e):
sleep = (2 ** attempt) + random.random()
time.sleep(min(sleep, 30))
continue
raise
raise RuntimeError("Too many retries")حصہ 10: ایک حوالہ جاتی بوٹ آرکیٹیکچر
ہر مضبوط Polymarket بوٹ میں وہی چھ اجزاء ہوتے ہیں۔ ہر ایک کو اپنا الگ ماڈیول بنائیں؛ انہیں کم سے کم باہم منسلک رکھیں۔
| جزو | ذمہ داری | استعمال شدہ APIs |
|---|---|---|
| Scanner | شیڈول شدہ جاب: آپ کے معیار پر پورا اترنے والی مارکیٹس کھینچیں (ٹیگز، حجم، ختم ہونے تک دن) | Gamma |
| Price engine | WebSocket کے ذریعے ریئل ٹائم مقامی آرڈر بک برقرار رکھیں | CLOB WS |
| Signal generator | خالص فنکشن: بک اسٹیٹ + میٹا ڈیٹا → ہدفی پوزیشن | - (in-memory) |
| Order manager | موجودہ آرڈرز اور ہدف کا فرق معلوم کریں، کم سے کم place/cancel کریں | CLOB REST |
| Risk manager | فی مارکیٹ حدیں، روزانہ نقصان کی حدود، سرکٹ بریکرز نافذ کریں | - (in-memory + DB) |
| Logger & ledger | ہر فیصلہ، fill، cancel محفوظ کریں۔ ٹیکس رپورٹس اور debugging کے لیے فیڈ کرتا ہے۔ | SQLite / Postgres |
حصہ 11: عام ناکامی کے طریقے
- Stale WebSocket data - ہر asset کے لیے آخری message کا وقت track کریں؛ اگر active market میں 30s سے زیادہ کوئی update نہ آئے تو REST refresh force کریں۔
- Nonce collisions - py-clob-client آپ کے لیے order nonces handle کرتا ہے، لیکن اگر آپ اپنا signer بنا رہے ہیں تو ہر order پر nonce increment کریں۔
- Insufficient balance - place کرنے سے پہلے ہمیشہ USDC balance چیک کریں؛ book آپ کا order دکھا سکتا ہے لیکن matching اسے reject کر دے گی۔
- Market paused or resolving - trading سے پہلے
market.active && !market.closedچیک کریں۔ فیصلہ (resolution) کے آس پاس Gamma updates، CLOB سے چند سیکنڈ پیچھے ہو سکتی ہیں۔ - NegRisk adapter mismatch - کثیر نتیجہ مارکیٹس ایک الگ NegRisk adapter کے ذریعے route ہوتی ہیں۔ SDK اسے handle کرتا ہے، لیکن تصدیق کریں کہ آپ کا order صحیح venue پر گیا ہے۔
حصہ 12: API کے ذریعے Liquidity انعامات (rewards)
Polymarket عام liquidity rewards میں ~$5M/month اور sports-specific rewards میں $5M+/month چلاتا ہے (دیکھیے Liquidity Rewards)۔ اس کا بڑا حصہ API-driven market makers کی طرف جاتا ہے جو ہزاروں مارکیٹس میں تنگ دو طرفہ quotes برقرار رکھ سکتے ہیں۔
reward formula midpoint کے قریب orders، size، اور time-on-book کو reward کرتی ہے۔ ایک minimal market-making loop:
- Target market کے لیے آرڈر بک (order book) پڑھیں
- ایک fair midpoint نکالیں (مثلاً دونوں طرف top 3 levels کا VWAP)
mid − spread_target/2پر bid اورmid + spread_target/2پر ask پوسٹ کریں- ہر WebSocket update پر، اگر آپ کا quote target سے ایک tick سے زیادہ drift کرے تو repricing کریں
- اگر book پتلا ہو جائے یا خبر آئے تو cancel کرکے exit کریں
حصہ 13: Production کی طرف جانا
- Hosting: $6/month کا VPS (Hetzner, DigitalOcean) Europe یا US-East میں زیادہ تر bots کے لیے کافی ہے۔ اگر آپ کو sub-10ms latency درکار ہو تو Polygon RPC کے ساتھ co-locate کریں۔
- RPC: قابلِ اعتماد Polygon RPC کے لیے Alchemy, Infura, یا QuickNode استعمال کریں۔ Free tiers اس وقت تک ٹھیک ہیں جب تک آپ فی منٹ سینکڑوں orders place نہ کرنے لگیں۔
- Monitoring: metrics کے لیے Prometheus + Grafana؛ alerts کے لیے Telegram bot۔ آپ جو بھی order ID بھیجیں اور جو بھی fill وصول کریں، سب log کریں۔
- Backups: ہر منٹ state محفوظ کریں۔ اگر VPS درمیان fill کے دوران مر جائے تو آپ seconds میں resume کرنا چاہیں گے، نہ کہ ہاتھ سے reconcile کرنا۔
- Tax: آپ کا logger آپ کا audit trail بھی ہے - دیکھیے Tax Guide۔
حصہ 14 - Polymarket API کے لیے validated pro tips
- پہلی derive call کے بعد API credentials cache کریں -
create_or_derive_api_creds()rate-limited اور سست ہے۔ apiKey/secret/passphrase کو.envمیں محفوظ کریں اور startup پر load کریں۔ - اگر آپ نے پہلے browser wallet connect کیا تھا تو signature_type=2 (GNOSIS_SAFE) استعمال کریں, signature_type=1 (POLY_PROXY) صرف Magic-link email accounts کے لیے ہے۔ mismatch ہونے پر 401 "invalid api key." واپس آتا ہے۔
funderکو اپنے Polymarket proxy wallet address پر set کریں, اپنے EOA پر نہیں۔ signing key EOA میں ہوتی ہے؛ funds proxy میں ہوتے ہیں۔ انہیں خلط ملط کرنا #1 auth bug ہے۔- outcomes کو position کے بجائے label کے ذریعے index کریں -
clobTokenIds[outcomes.index("Yes")]، نہ کہclobTokenIds[0]۔ NegRisk اور Oscar markets میں arbitrary ordering ہوتی ہے۔ - sign کرنے سے پہلے اپنی clock sync کریں - POLY_TIMESTAMP ایک تنگ window کے اندر ہونا چاہیے۔ سست VPS پر NTP drift auth کو خاموشی سے توڑ دیتا ہے۔ chrony یا systemd-timesyncd چلائیں۔
- ہر WebSocket reconnect پر REST book دوبارہ fetch کریں resubscribe کرنے سے پہلے۔ WebSocket deltas دیتا ہے؛ اگر reconnect کے دوران کوئی delta miss ہو جائے تو آپ کی local book حقیقت سے ہٹ جائے گی اور آپ نقصان دہ prices quote کریں گے۔
- فی سیکنڈ 10 orders سے زیادہ کبھی burst نہ کریں - /order endpoint 500/10s burst اور 3,000/10min sustained پر throttle کرتا ہے۔ client-side token-bucket rate limiter شامل کریں؛ Cloudflare reject کرنے کے بجائے queue کرتا ہے، اس لیے blind retries backlog بڑھا دیتے ہیں۔
- shutdown پر
cancel_market_orders(market=conditionId)استعمال کریںcancel_all()کے بجائے۔ market-scoped cancel idempotent ہے اور زیادہ محفوظ ہے اگر بوٹ ایک ہی market پر loop کے درمیان crash ہو جائے۔ - ہر asset کے لیے
heartbeatMstrack کریں - ایک watchdog شامل کریں جو live market پر 30s تک update نہ آنے والی کسی بھی market کو force-refresh کرے۔ stale WS feeds phantom edge کا سب سے عام ذریعہ ہیں۔ - بھیجنے سے پہلے order ID log کریں, بعد میں نہیں۔ idempotency کے لیے client کو ID کا مالک ہونا چاہیے تاکہ crash-recovery duplicate fills کے بغیر دوبارہ send کر سکے۔
- HeartBeats API (Jan 2026+) استعمال کریں تاکہ disconnect پر خودکار cancel ہو۔ heartbeat interval 5s رکھیں؛ اگر server دو heartbeats miss کرے تو وہ آپ کے تمام resting orders cancel کر دیتا ہے۔
- scale کرنے سے پہلے thin market پر $1 orders کے ساتھ paper-trade کریں 48 گھنٹوں تک۔ Polymarket میں کوئی testnet نہیں؛ auth، signing، fill handling، اور cancel flow validate کرنے کا واحد قابلِ اعتماد طریقہ چھوٹے real orders ہیں۔
Situation → Action Cheat Sheet
| صورتِ حال | کارروائی | کیوں |
|---|---|---|
| پہلی call پر 401 "invalid api key" | چیک کریں کہ signature_type wallet origin سے match کرتا ہے اور funder proxy address ہے | Type 1 بمقابلہ 2 mismatch 401 errors کا 80% ہے؛ باقی EOA-as-funder ہے |
| orders "insufficient balance" کے ساتھ reject ہوئیں | ہر order سے پہلے /balance-allowance query کریں اور locally reserve کریں | CLOB آپ کے post کرتے ہی collateral reserve کر لیتا ہے؛ دو concurrent orders double-book کر سکتے ہیں |
| /order endpoint پر 429 throttling | jitter کے ساتھ back off کریں: 2^attempt + random()، زیادہ سے زیادہ 30s | Cloudflare reject کرنے کے بجائے throttle کرتا ہے؛ naive retry backlog بڑھاتا ہے |
| WebSocket trade کے درمیان disconnected ہو گیا | REST کے ذریعے book snapshot لیں، local state reconcile کریں، پھر resubscribe کریں | gap کے دوران deltas کھو جاتے ہیں؛ snapshot price ladders کو دوبارہ sync کرتا ہے |
| order place ہوا مگر fill confirmation نہیں آئی | 5s کے اندر /data/order/{id} query کریں؛ اگر pending ہو تو انتظار کریں؛ اگر نہ ملے تو replace کریں | کم مگر قابلِ بحالی؛ default "state check کریں، پھر عمل کریں" ہونا چاہیے |
| active quote کے دوران market resolve ہو گیا | resolution event پر اس conditionId کے تمام open orders cancel کریں | resolution کے بعد orders zombie fills کے طور پر لٹک سکتی ہیں اگر adapter quirks trigger ہوں |
| market-making bot چلا رہے ہیں | midpoint کے 2 cents کے اندر 100+ share size کے ساتھ quote کریں | reward formula tightness + size + time-on-book کو weight کرتی ہے؛ tight + size + persistent wins |
| multi-outcome پر arbitrage bot چلا رہے ہیں | ہر leg کے لیے FOK استعمال کریں، GTC نہیں | leg A پر partial fills اور leg B مکمل = unhedged exposure اور فوری نقصان |
| پہلی بار bot بنا رہے ہیں | پہلے scanner بنائیں، پھر price engine، پھر signal - کبھی signal سے شروع نہ کریں | صاف book state کے بغیر signals correlation traps ہیں؛ پہلے pipes چلائیں |
| Production bot 3am پر crash ہو گیا | systemd auto-restart + Telegram alert + persistent state رکھیں | ہر unattended bot crash ہوگا؛ سوال صرف یہ ہے کہ آیا وہ صاف طریقے سے restart ہوتا ہے |
Target. ایک mid-volume politics market پر liquidity rewards earn کریں جو تقریباً 0.48 Yes / 0.52 No پر priced ہو، 2-cent اسپریڈ (spread) کے ساتھ۔ اس market کے لیے daily reward pool تقریباً $40 ہے۔
Setup. دونوں token_ids پر WebSocket subscribe کریں۔ last-seen mid cache کریں۔ spread_target = 0.02, size = 200 shares per side، reprice_threshold = 0.005 (5 ticks) define کریں۔
Loop. ہر WS book update پر: نیا mid = top-3 bids اور asks کا VWAP نکالیں۔ اگر |current quotes - target mid| > reprice_threshold ہو تو دونوں موجودہ orders cancel کریں، mid-0.01 پر نیا bid اور mid+0.01 پر نیا ask post کریں۔ repricing کو فی side ہر 2 seconds میں ایک بار تک rate-limit کریں۔
Risk. فی side max inventory = 1,000 shares۔ اگر inventory > 500 ہو تو اس side پر spread ہر 100 shares کے لیے 0.005 بڑھائیں۔ Circuit breaker: اگر mid 60 seconds میں >0.05 move کرے تو سب کچھ cancel کریں اور 5 minutes pause کریں۔
Outcome (real 7-day run). تقریباً 14,000 shares 680 orders کے ذریعے fill ہوئیں، $0 ٹیکر (taker) fees ادا کیں (maker side)، $31.40 liquidity rebates کمائے، net directional P&L -$4.10 تھا (چھوٹے inventory losses)۔ $500 working capital پر 7 دن میں net +$27.30 = تقریباً 8% ماہانہ۔ ایک ہی VPS پر 30-50 markets میں بیک وقت linearly scale ہوتا ہے۔
اہم نکتہ
وہ traders جو Polymarket پر مسلسل profit کماتے ہیں polymarket api guide کو ایک system سمجھتے ہیں، gut feel نہیں۔ اوپر والے numbers یاد رکھیں - یہی 7.6% profitable wallets اور باقی سب کے درمیان فرق ہیں۔
اگلا کیا ہے؟
- اوزار اور وسائل - فریقِ ثالث ڈیش بورڈز، اینالیٹکس، اور ڈیٹا فیڈز جو API کی تکمیل کرتے ہیں
- جدید حکمتِ عملیاں - ملٹی لیگ آربٹریج اور آپشنز جیسی ساختیں جو بوٹس کے لیے موزوں ہیں
- لیکویڈیٹی انعامات - مارکیٹ میکنگ ریبیٹس کمانے کے درست فارمولے
- آرڈر بک گائیڈ - اس پر کوڈ لکھنے سے پہلے بک کو پڑھنے کے لیے گہری سمجھ
- لغت - اس گائیڈ میں موجود ہر اصطلاح کی سادہ انگریزی میں تعریفیں
تجویز کردہ مطالعہ
اگر آپ نئے ہیں تو یہاں سے شروع کریں، یا سیدھا اس صفحے پر جائیں جو آپ کے مرحلے سے میل کھاتا ہے:











