Polymarket Bot Tutorial · अध्याय 17 of 32

Polymarket ऑर्डर बुक imbalance को short-term price signal के रूप में इस्तेमाल करें: bid-ask volume ratio, microprice computation, signal half-life, और कब imbalance bots random execution से बेहतर काम करते हैं।

यह अध्याय क्या कवर करता है

Order-book imbalance limit order book पर buy-side depth और sell-side depth का ratio है। Polymarket पर इसका वास्तविक लेकिन बहुत कम समय तक रहने वाला predictive edge होता है - आम तौर पर mid के move होने से 5-30 seconds पहले। यह अध्याय computation pattern और वे conditions बताता है जिनमें यह signal गलत साबित होता है।

  • Order book imbalance क्या है
  • Microprice computation
  • Directional signal के रूप में imbalance
  • Polymarket पर signal half-life
  • कब imbalance signals गलत साबित होते हैं
  • Code: हर WS tick पर imbalance compute करें

Order book imbalance क्या है

Order book imbalance limit order book पर total buy-side depth और total sell-side depth का ratio है। Top-N levels पर compute किया गया (आमतौर पर N=5), यह aggregate trader pressure को capture करता है जिसे mid-price अभी तक reflect नहीं कर पाया होता।

Formula: imbalance = (Σ bid[i].price × bid[i].size for i in [0..N]) − (Σ ask[i].price × ask[i].size) / (Σ both). Range -1 to +1; positive का मतलब अधिक buy pressure, negative का मतलब अधिक sell pressure।

Signal Polymarket पर empirically real है, लेकिन noisy है। एक single whale 30-60 seconds तक fake-print imbalance बना सकता है, उसके बाद उसे arbed out कर दिया जाता है। इसे कई features में से एक feature के रूप में उपयोग करना उपयोगी है, sole trigger के रूप में खतरनाक।

Microprice computation

Microprice simple mid का refined version है: best bid और best ask का weighted average, जिसे उनकी respective sizes से weight किया जाता है।

microprice = (best_bid × ask_size + best_ask × bid_size) / (bid_size + ask_size)

जब bid-side queue ask side से बहुत बड़ी होती है, microprice ask के ज्यादा करीब बैठता है। Logic यह है: अधिक buyers के wait करने का मतलब next trade के ask को lift करने की संभावना ज्यादा है, इसलिए fair value ask के करीब होती है।

Microprice actual mid के move होने का 5-30 second leading indicator है। Production bots इसे take-profit decisions के लिए naive mid के बजाय reference price के रूप में use करते हैं।

Directional signal के रूप में imbalance

Production observation के अनुसार: जब imbalance 10 seconds में -0.3 से +0.5 पर flip होता है, और साथ में कोई news event नहीं होता, तो अगले 30-60 seconds में mid के 1-2 cents ऊपर जाने की संभावना लगभग 65% होती है।

यह एक real edge है, लेकिन fees के बाद छोटे position sizes पर यह dissolve हो जाती है। इसे monetize करने के लिए bot को move minus fees capture करने के लिए पर्याप्त size लेना होगा, लेकिन इतना बड़ा नहीं कि खुद book को move कर दे। Polymarket की books आम तौर पर इतनी thin होती हैं कि 50 shares से ऊपर कुछ भी market को move कर सकता है।

Imbalance को अन्य features के साथ combine करें: trade velocity (जितने ज्यादा trades = उतना वास्तविक signal), best-bid का वास्तव में ऊपर जाना (सिर्फ depth shift नहीं), market का news-driven mode में न होना।

Polymarket पर signal half-life

Imbalance signal decay होता है। हमारे trader के production data के अनुसार: imbalance > 0.6 → 60s के भीतर 1.2c mid move की expected value, लगभग 30s की half-life। 90 seconds बाद predictive value zero हो जाती है।

Bot design के लिए implication: जल्दी react करें या skip करें। जो bot decision लेने में 15 seconds लगाता है, वह order place करने से पहले ही edge का आधा हिस्सा consume कर चुका होता है। Imbalance strategies के लिए latency budget signal से FOK fire होने तक 5 seconds से कम होना चाहिए।

जो strategies half-life (1-2 minutes) से ज्यादा देर position hold करती हैं, वे current signal पर नहीं बल्कि अगले signal पर gamble कर रही होती हैं। इसे स्पष्ट रखें; गलती से imbalance-driven positions को resolution तक hold न करें।

कब imbalance signals गलत साबित होते हैं

Signal तब misleading होता है जब नीचे दी गई तीन में से कोई एक condition मौजूद हो।

  • News-driven move: imbalance किसी ऐसी news का परिणाम है जिसे आपने नहीं देखा। इसके खिलाफ trade करना नुकसानदेह है; इसके साथ trade करना news arbitrage है, जो एक अलग strategy है।
  • Whale spoofing: एक बड़ा order लगाया जाता है और जल्दी cancel कर दिया जाता है, जिससे duration भर fake imbalance बनता है। Trigger करने से पहले verify करें कि imbalance 10+ seconds तक persist करे।
  • End-of-period rebalancing: market makers inventory reasons के लिए quotes pull कर रहे होते हैं, information reasons के लिए नहीं। जब MM re-quote करता है, कुछ minutes बाद imbalance उलट जाता है।

Combined filter यह है: imbalance > threshold AND trade velocity > baseline AND पिछले 5 minutes में कोई news event नहीं। हर filter अकेले बहुत सारे false positives देता है।

Code: हर WS tick पर imbalance compute करें

Reference: WebSocket book updates subscribe करें, और हर tick पर imbalance recompute करें।

def on_book_message(msg):
    bids = msg.get("bids", [])[:5]
    asks = msg.get("asks", [])[:5]
    bid_usd = sum(float(b["price"]) * float(b["size"]) for b in bids)
    ask_usd = sum(float(a["price"]) * float(a["size"]) for a in asks)
    total = bid_usd + ask_usd
    if total < 100: return  # illiquid
    imb = (bid_usd - ask_usd) / total
    state[msg["asset_id"]] = {
        "imb": imb,
        "best_bid": float(bids[0]["price"]) if bids else 0,
        "best_ask": float(asks[0]["price"]) if asks else 1,
        "ts": time.time()
    }
    # decision logic with cooldown + filters
    if imb > 0.6 and time.time() - last_fired.get(msg["asset_id"], 0) > 60:
        check_filters_and_maybe_fire(msg["asset_id"])

State हर token के लिए अलग होता है। Cooldown एक ही signal पर बार-बार fire होने से रोकता है। Filters (news check, trade velocity) actual trade को gate करते हैं।

अक्सर पूछे जाने वाले प्रश्न

Order book imbalance क्या है?
बुक के top पर bid volume और ask volume का ratio। बहुत ज्यादा bid-skewed book (touch के पास buyers, sellers से ज्यादा) बहुत short term में ऊपर की price pressure का संकेत देता है। यह signal crypto और equities में well-known है; Polymarket पर यह liquid markets में काम करता है, लेकिन thin markets में गायब हो जाता है।
Microprice कैसे compute करें?
microprice = (best_ask * bid_size + best_bid * ask_size) / (bid_size + ask_size). यह mid-price का volume-weighted version है जो कम volume वाली side की ओर झुकता है - वही side जो पहले "खत्म" हो रही होती है। Bots इसे imbalance को शामिल करने वाले fair-value estimate के रूप में उपयोग करते हैं।
Polymarket पर imbalance signal की half-life क्या है?
Active markets में 5-30 seconds। Thin markets में ज्यादा लंबी (क्योंकि नए orders को imbalance overpower करने में समय लगता है)। अगर आपका bot एक second से कम में react करता है, तो आप इसका कुछ हिस्सा capture कर सकते हैं। अगर वह 5+ seconds लेता है, तो आप आम तौर पर देर कर चुके होते हैं।
Imbalance कब गलत साबित होता है?
जब एक ही side पर एक बड़ा order रखा हो और hit होने का इंतजार कर रहा हो (एक बड़ा resting bid, दूसरी कोई activity नहीं)। Imbalance real है, लेकिन वह price predict नहीं करता - वह सिर्फ एक motivated buyer दिखाता है। Volume के बजाय orders count करके filter करें: N orders to 1 order वाला imbalance, 1 order each पर 5x volume से ज्यादा informative होता है।
क्या order book imbalance अकेले trade करने के लिए पर्याप्त है?
आमतौर पर नहीं। Standalone signal के रूप में यह कमजोर है और arbitrage हो जाता है। एक और signal (जैसे macroprice mean reversion, news flag, या sports state) के साथ combine करें ताकि edge ज्यादा durable हो। Fees के बाद imbalance अकेले अक्सर random execution से कमजोर perform करता है।
Polymarket WS से imbalance compute करने के लिए कौन-सी Python library है?
हमारी जानकारी के अनुसार कोई off-the-shelf library नहीं है - यह बस कुछ दर्जन lines of code है। py-clob-client के जरिए market book subscribe करें, हर price_change event पर top-of-book bid/ask sizes recompute करें, और अपना imbalance metric emit करें। Last value cache करें और meaningful changes पर ही re-trigger करें।