Polymarket Bot Tutorial · Chapter 18 of 32

Polymarket پر UMA dispute prediction bots: Optimistic Oracle proposals کو detect کریں، dispute likelihood کا اندازہ لگائیں، pre-and-post-dispute price asymmetry سے فائدہ اٹھائیں، اور disputed-market death spirals سے بچیں۔

اس chapter میں کیا شامل ہے

UMA کا Optimistic Oracle (OO) Polymarket markets کو resolve کرتا ہے، اور disputes ان کے fire ہونے سے پہلے اور بعد میں price anomalies پیدا کرتے ہیں۔ Dispute کے دونوں sides پر tradeable patterns موجود ہیں، لیکن یہ strategy operationally پیچیدہ ہے اور اس نے fed کرنے سے زیادہ bots جلائے ہیں۔ یہ chapter ایک honest playbook ہے۔

  • UMA Optimistic Oracle کیسے work کرتا ہے
  • On-chain proposal detect کرنا
  • Dispute predictors (volume, ambiguity, history)
  • Pre-dispute price asymmetry
  • Post-dispute trade setups
  • Disputed markets میں کب trade NOT کرنا چاہیے
  • Code: UMA proposed/disputed events کو subscribe کرنا

UMA Optimistic Oracle کیسے work کرتا ہے

UMA کا Optimistic Oracle (OO) Polymarket کے لیے dispute resolution layer ہے۔ ہر market resolution OO سے گزرتی ہے؛ زیادہ تر uncontested ہوتی ہیں اور خود بخود settle ہو جاتی ہیں۔ Contested ones - disputes - 24-72 hour voting period کو trigger کرتی ہیں جس کے دوران UMA token holders outcome decide کرتے ہیں۔

Lifecycle یہ ہے: Polymarket کا resolver ایک price propose کرتا ہے (0 = NO won، 1 = YES won)۔ 2-hour challenge window کے بعد، اگر کوئی dispute نہ کرے تو price final ہو جاتی ہے اور CTF contract payouts distribute کرتا ہے۔ اگر کوئی dispute کرے تو market voting window میں چلا جاتا ہے؛ UMA holders votes cast کرتے ہیں، majority win کرتی ہے۔

Bot کے لیے relevant events ProposePrice (proposal enter ہوا، challenge window کھلی) اور DisputePrice (dispute file ہوا، voting period شروع ہوا) ہیں۔ Real time میں market resolution state track کرنے کے لیے ان پر subscribe کریں۔

On-chain proposal detect کرنا

Polygon پر UMA OO contract ProposePrice event emit کرتا ہے جس کے parameters (requester, identifier, timestamp, ancillaryData, proposer, proposedPrice) ہوتے ہیں۔ Relevant proposals تک limit کرنے کے لیے Polymarket کے known requester address کے مطابق filter کریں۔

POLY_REQUESTER = "0x..."  # Polymarket Adjudicator
filt = oo_contract.events.ProposePrice.create_filter(
    fromBlock="latest",
    argument_filters={"requester": POLY_REQUESTER}
)
for event in filt.get_new_entries():
    market_id = decode_ancillary(event.args.ancillaryData)
    proposed = "YES" if event.args.proposedPrice == 1e18 else "NO"
    print(f"PROPOSE: market {market_id} → {proposed}")

ancillaryData field hex-encoded JSON ہوتا ہے جو market question کو describe کرتا ہے۔ اسے decode کرنے سے آپ کو market identifier ملتا ہے جسے آپ اپنی open positions کے ساتھ cross-reference کر سکتے ہیں۔

Dispute predictors (volume, ambiguity, history)

Pre-dispute کے تین signals بعد میں ہونے والے actual disputes سے correlate کرتے ہیں۔

  • Total volume: جن markets کا lifetime volume $1M سے زیادہ ہو، ان میں small markets کے مقابلے میں dispute rate 4x ہوتا ہے۔ زیادہ capital at stake = challenge کرنے کی زیادہ incentive۔
  • Ambiguous wording: کوئی بھی market جس میں "or similar," "officially confirmed," یا compound conditions (date AND specific outcome) ہوں، اس کی dispute rate زیادہ ہوتی ہے۔
  • Past disputes on the same event: اگر پہلے کوئی proposal پہلے ہی dispute ہو چکی ہو اور دوبارہ proposed کی گئی ہو، تو دوسری proposal عموماً normal rate سے 2-3x زیادہ dispute ہوتی ہے۔

Bot ان features سے "dispute probability" score compute کر سکتا ہے اور resolution کے قریب threshold سے اوپر والے markets میں positions لینے سے بچ سکتا ہے۔

Pre-dispute price asymmetry

Likely dispute سے پہلے کے hours میں market price اکثر asymmetric movement دکھاتی ہے: جس side کو proposer نے YES کہا ہو وہ نیچے drift کرتی ہے (کیونکہ traders کو fear ہوتا ہے کہ dispute اسے flip کر دے گی)، اور دوسری side اوپر drift کرتی ہے۔

اگر آپ کے پاس اس بارے میں directional view ہے کہ dispute کس طرف resolve ہوگی، تو یہ ایک tradeable window ہے۔ Risk یہ ہے: اگر dispute نہ ہو، تو challenge window بغیر مسئلے کے close ہونے پر asymmetry reverse ہو جاتی ہے اور prices proposed direction کی طرف snap back کر جاتی ہیں۔

سچ یہ ہے: زیادہ تر pre-dispute asymmetry trades losing trades ہوتے ہیں کیونکہ زیادہ تر challenges original proposal کے حق میں resolve ہوتے ہیں۔ یہ strategy صرف تب کام کرتی ہے جب آپ کے پاس اس بات کی specific information ہو کہ یہ dispute کیوں sustained رہنے کا امکان رکھتی ہے۔

Post-dispute trade setups

Dispute file ہونے کے بعد market 24-72 hours تک "limbo" میں trade کرتی ہے - یعنی معلوم ہے کہ dispute ہے، مگر outcome vote سے طے ہونا ہے۔ دو setups موجود ہیں۔

UMA consensus کی طرف convergence: اگر dispute resolution کا signal early مل جائے (مثلاً کوئی prominent UMA voter public طور پر کسی ایک side لے لے)، تو price اسی resolution کی طرف move کرتی ہے۔ UMA Discord / Twitter signals + price action دیکھنے والا bot اس move کو 30-60% وقت پکڑ سکتا ہے۔

Volatility farming: limbo periods میں spreads وسیع ہوتے ہیں۔ ایک patient market maker voting window کے دوران اندر اور باہر rotate ہونے والے متعدد traders سے spread tax earn کر سکتا ہے۔ Inventory risk high ہوتا ہے؛ size accordingly رکھیں۔

دونوں کے لیے اس genuine possibility کے ساتھ comfortable ہونا ضروری ہے کہ resolution آپ کی position کے خلاف بھی ہو سکتی ہے۔ Dispute-period inventory کو زیادہ سے زیادہ half-size سمجھیں۔

Disputed markets میں کب trade NOT کرنا چاہیے

تین situations ایسی ہیں جہاں dispute trade default طور پر غلط ہوتی ہے۔

  • آپ کے پاس UMA-specific view نہیں ہے۔ اگر آپ کی only edge یہ ہے کہ "اصل proposal مجھے درست لگتی ہے،" تو آپ کے پاس original proposer پر کوئی edge نہیں - اور dispute filer اس کے برعکس سوچتا ہے۔ Voting outcome ایک coin flip ہے جس کی آپ predict نہیں کر سکتے۔
  • Dispute ambiguous wording پر ہو۔ UMA voters عموماً question کی strict reading کے ساتھ side لیتے ہیں۔ اگر market میں "by January 31" لکھا تھا اور event February 1 کو ہوئی، تو UMA NO resolve کرے گا چاہے trader population کی intuition کچھ بھی ہو۔
  • آپ dispute سے پہلے inventory hold کر رہے ہیں۔ Limbo سے گزرنے کے لیے existing position میں مزید add کرنا capital-destruction کا classic pattern ہے۔ Hold کریں یا exit کریں، کبھی add نہ کریں۔

Code: UMA proposed/disputed events کو subscribe کرنا

Reference: UMA OO events کے لیے WebSocket subscription، Polymarket requester کے مطابق filtered۔

from web3 import Web3
w3 = Web3(Web3.WebsocketProvider(POLYGON_WSS))
oo = w3.eth.contract(address=UMA_OO_ADDR, abi=UMA_OO_ABI)
POLY = "0x...".lower()

dispute_filter = oo.events.DisputePrice.create_filter(fromBlock="latest")
propose_filter = oo.events.ProposePrice.create_filter(fromBlock="latest")

while True:
    for event in dispute_filter.get_new_entries():
        if event.args.requester.lower() == POLY:
            on_dispute(event)
    for event in propose_filter.get_new_entries():
        if event.args.requester.lower() == POLY:
            on_propose(event)
    time.sleep(2)

def on_dispute(event):
    market_q = decode_ancillary_to_question(event.args.ancillaryData)
    send_telegram(f"DISPUTE: {market_q}")
    # If we hold a position in this market, alert + consider exit
    if market_q in our_positions:
        flag_position_for_review(market_q)

Pattern یہ ہے: subscribe کریں، decode کریں، alert کریں۔ Disputes پر algorithmically action لینا high-risk ہے؛ bot کا کام عموماً event کو human reviewer تک پہنچانا ہوتا ہے۔

اکثر پوچھے جانے والے سوالات

UMA Optimistic Oracle کیا ہے؟
UMA کا Optimistic Oracle وہ system ہے جو Polymarket markets کو resolve کرتا ہے۔ ایک proposer proposed answer submit کرتا ہے؛ اگر window کے اندر کوئی dispute نہ کرے تو answer final ہو جاتا ہے۔ اگر dispute ہو جائے تو UMA token holders vote (DVM) کے ذریعے settle کرتے ہیں۔ زیادہ تر Polymarket markets بلا dispute resolve ہو جاتے ہیں - disputes edge case ہیں۔
میں real time میں UMA proposal کیسے detect کر سکتا ہوں؟
Polygon پر UMA Optimistic Oracle V2 contract کو ProposePrice events کے لیے subscribe کریں، Polymarket adapter address کے مطابق filtered۔ Proposal 2-hour dispute window trigger کرتا ہے، جس دوران market price اکثر 1.00 / 0.00 سے ہٹ جاتی ہے کیونکہ traders dispute risk کو price میں شامل کرتے ہیں۔
UMA dispute کی prediction کیا کرتی ہے؟
تین signals: (1) Volume - high-volume markets (>$10M) میں disputes زیادہ attract ہوتے ہیں کیونکہ prize بڑا ہوتا ہے۔ (2) Resolution criteria میں ambiguity - اگر market title fuzzy ہو تو dispute risk بڑھتی ہے۔ (3) Proposer wallet کی past dispute history۔ Baseline dispute predictor کے لیے ان سب کو logistic regression میں combine کریں۔
کیا dispute file ہونے کے بعد بھی میں trade کر سکتا ہوں؟
کر سکتے ہیں، لیکن risk زیادہ ہے۔ ایک بار dispute ہو جائے تو market DVM voting میں چلا جاتا ہے، جو تقریباً ~48-72 hours لیتا ہے اور outcome binary (اور final) ہوتا ہے۔ Price عموماً voting سے پہلے ایک side کی طرف converge کرتی ہے۔ جو bots legal/factual analysis کی بنیاد پر side لیتے ہیں وہ profit کما سکتے ہیں، لیکن غلط call مکمل loss ہے۔
کیا UMA dispute strategy crowded ہے؟
Market making کے مقابلے میں کم۔ UMA dispute prediction کے لیے legal اور political context پڑھنا پڑتا ہے، جو زیادہ تر quant bots نہیں کرتے۔ اس strategy میں human judgment + quant infrastructure دونوں کے لیے جگہ ہے - hybrid bots کے لیے اچھی طرح suited ہے۔
UMA dispute bot کے لیے worst case کیا ہے؟
جب DVM آپ کی position کے الٹ vote کرے تو position hold کرنا۔ ہر disputed market کے لیے risk cap کریں - ہم confidence سے قطع نظر ہر single disputed market پر 50 USD max استعمال کرتے ہیں، کیونکہ ہر "obvious" call آخرکار miss ہو جاتی ہے۔