Polymarket Bot Tutorial · باب 13 از 32
Polymarket پر market making: bid اور ask کو کیسے quote کریں، spread capture کریں، maker rebates کمائیں (taker fees کا 20-25%)، inventory risk math، اور prediction markets پر MM کب کام کرتا ہے۔
یہ باب کیا cover کرتا ہے
Polymarket پر market making کا مطلب ہے market book کے دونوں sides کو مسلسل quote کرنا اور ہر round trip پر spread earn کرنا۔ یہ strategy traditional finance میں اچھی طرح سمجھی جاتی ہے؛ Polymarket کے مخصوص فرق maker-rebate program اور prediction markets کی adverse-selection profile ہیں، جو CFD venues سے زیادہ ہوتی ہے۔ یہ باب خالص math ہے۔
- سادہ English میں market making
- Spread + rebate edge
- Inventory risk اور skew
- Polymarket پر MM کب کام کرتا ہے (اور کب نہیں)
- Code skeleton: دونوں sides کو +/- N cents پر quote کرنا
- News flow کے مطابق quotes adjust کرنا
- Adverse selection spike ہونے پر bot kill کرنا
سادہ English میں market making
ایک market maker مسلسل دونوں sides quote کرتا ہے: buy price (bid) اور sell price (ask)، جو mid سے ایک fixed spread کے ساتھ wider ہوتے ہیں۔ جب کوئی bid کو hit کرتا ہے تو maker سستا buy کرتا ہے؛ جب کوئی ask کو lift کرتا ہے تو maker مہنگا sell کرتا ہے؛ bid اور ask کے درمیان فرق maker کی round trip revenue ہوتی ہے۔
یہ strategy order-flow-driven ہوتی ہے، directional نہیں۔ Maker اس بارے میں کوئی رائے نہیں رکھتا کہ YES جیتے گا یا نہیں؛ وہ یہ position لیتا ہے کہ flow آتا رہے گا اور spread pay ہوتا رہے گا۔
Risk adverse selection ہے: جو لوگ آپ کی bid hit کر رہے ہیں ان کے پاس وہ information ہو سکتی ہے جو آپ کے پاس نہیں۔ وقت کے ساتھ MM profits اس بات پر depend کرتے ہیں کہ spread informed traders کی slippage کو cover کرنے کے لیے کافی wide ہے یا نہیں۔
Spread + rebate edge
Polymarket maker کے لیے آمدنی کے دو streams ہیں۔
Spread capture: 0.46 mid کے ارد گرد bid 0.45 اور ask 0.47 quote کریں۔ bid پر ہر fill جسے آپ بعد میں ask پر exit کر سکیں، 2 cents earn کرتا ہے۔ Net edge fill imbalance اور price drift پر depend کرتا ہے۔
Maker rebate: Polymarket کا liquidity-rewards program eligible markets میں maker fills پر per-share rebate دیتا ہے۔ Numbers بدلتے رہتے ہیں؛ current values کے لیے official rewards page چیک کریں۔ Rebate trade سے الگ، periodic طور پر pUSD میں pay کیا جاتا ہے۔
زیادہ تر markets میں spread capture بڑی revenue stream ہوتی ہے۔ Rebate اس وقت meaningful ہوتا ہے جب آپ wide markets quote کر سکیں (election year، بڑے sports playoffs) جہاں Polymarket liquidity attract کرنے کے لیے rebates boost کرتا ہے۔
Inventory risk اور skew
ایک MM جو بار بار bid پر hit ہوتا ہے، long position accumulate کرتا ہے۔ Risk یہ ہے کہ mid نیچے آ جائے جبکہ inventory long ہو؛ maker spread revenue کے باوجود position پر loss realize کرتا ہے۔
Defenses: quote skew (جب inventory long ہو تو bid کو lower کریں، short ہو تو ask کو higher کریں، تاکہ one-sided fills discourage ہوں); inventory cap (اس side پر quoting روک دیں جہاں آپ پہلے ہی بہت زیادہ long ہیں); active rebalancing (جب inventory limit پر ہو تو position reduce کرنے کے لیے کبھی کبھار spread cross کریں)۔
Math: اگر bid پر ہونے والے 60% fills قیمت کے 2 cents adverse move کرنے سے پہلے exit ہی نہیں کرتے، تو strategy صرف انہی fills پر loss میں ہے۔ جب fill imbalance > 65/35 ہو تو aggressively skew کریں۔
Polymarket پر MM کب کام کرتا ہے (اور کب نہیں)
MM Polymarket پر تب کام کرتا ہے جب تین conditions پوری ہوں۔
- Liquid book: اتنی quote competition کہ آپ کا spread competitive ہو مگر zero نہ ہو۔ 2024 election markets، بڑے NFL/NBA games، BTC up/down 5m سب qualify کرتے ہیں۔
- Two-sided flow: buyers اور sellers دونوں active ہوں۔ One-sided markets (0.95+ کے قریب resolved-ish) میں maker کے لیے capture کرنے کو کچھ نہیں ہوتا۔
- Bounded price moves: spread captures کو 5-cent jumps کھا جائیں۔ Stable mid-range markets (0.40-0.60) سب سے friendly ہوتے ہیں۔
MM ان cases میں fail کرتا ہے: news-driven markets جہاں mid آپ کے re-quote کرنے سے پہلے ہی jump کر جائے؛ illiquid books جہاں آپ ہی واحد quote ہوں اور اگلی trade 5 levels walk کر جائے؛ resolution-imminent markets جہاں ایک side 0 یا 1 کی طرف converge کر رہی ہو۔
Code skeleton: دونوں sides کو +/- N cents پر quote کرنا
سب سے سادہ viable maker کے لیے pseudocode۔
SPREAD_CENTS = 2
INVENTORY_CAP_SHARES = 50
def make_loop(token_id):
while True:
book = fetch_book(token_id)
mid = (book.best_bid + book.best_ask) / 2
inv = chain_balance(token_id)
# Skew: pull the side we are too long on
bid_px = mid - SPREAD_CENTS/200 - (0.005 if inv > INVENTORY_CAP_SHARES * 0.6 else 0)
ask_px = mid + SPREAD_CENTS/200 + (0.005 if inv < -INVENTORY_CAP_SHARES * 0.6 else 0)
cancel_my_existing_quotes(token_id)
if inv < INVENTORY_CAP_SHARES:
place_gtc(token_id, side="BUY", price=bid_px, size=5)
if inv > -INVENTORY_CAP_SHARES:
place_gtc(token_id, side="SELL", price=ask_px, size=min(5, inv))
time.sleep(2)
Production makers یہ شامل کرتے ہیں: per-side inventory tracking، cancel-before-place ordering، re-quote interval پر jitter تاکہ آپ predictable نہ بنیں، adverse selection کے لیے kill-switch (اگلا section)۔
News flow کے مطابق quotes adjust کرنا
جب کوئی news event hit کرتی ہے، fair value آپ کے quotes سے پہلے move ہو جاتی ہے۔ جو MM news flow کے دوران quotes pull نہیں کرتا وہ pick off ہو جاتا ہے۔
Signal: incoming fills کا cancel rate 30 seconds میں baseline کے مقابلے میں تقریباً 3x سے اوپر jump کرنا، یا ایک broader event-stream cross-check (Polymarket Twitter/Discord، Bloomberg headline feed)۔ جب detect ہو جائے تو maker 60-120 seconds کے لیے تمام quotes pull کرتا ہے، نئے mid کو stabilize ہونے دیتا ہے، پھر نئے center کے گرد re-quote کرتا ہے۔
سب سے سادہ implementation token کے لیے last-trade-price stream دیکھتی ہے۔ rolling-window mean سے 2 standard deviations سے زیادہ jump pause trigger کرتا ہے۔ Bot تب دوبارہ engage کرتا ہے جب price 30+ seconds تک stabilized ہو جائے۔
Adverse selection spike ہونے پر bot kill کرنا
Hard exit۔ اگر bot کا last 50 fills کا fill PnL اچانک negative ہو جائے، تو کچھ نہ کچھ غلط ہے: یا تو market اب news-driven ہے اور آپ کو making نہیں کرنی چاہیے، یا آپ کا spread current adverse-selection level کے لیے بہت tight ہے۔
جو kill conditions encode کرنی چاہئیں:
- 5 consecutive bid fills مگر کوئی ask fill نہیں، اور first fill کے بعد mid > 1c down ہو۔
- Last 25 round-trip fills پر realized PnL expected کے -25% سے نیچے ہو۔
- WebSocket disconnect یا stale book detect ہو۔
- کسی بھی side پر inventory cap پر > 5 minutes رہے۔
Trigger ہونے پر سب کچھ cancel کریں، inventory کو market پر flatten کریں، 15+ minutes کے لیے halt کریں۔ جس market maker کے پاس kill switch نہیں ہوتا وہ volatile periods میں manual notice آنے تک loss کرتا رہے گا - اور یہ ہمیشہ آپ کے اندازے سے زیادہ وقت لیتا ہے۔





