Polymarket Bot Tutorial · Sura ya 17 kati ya 32
Tumia Polymarket order book imbalance kama short-term price signal: bid-ask volume ratio, microprice computation, signal half-life, na wakati imbalance bots zinashinda random execution.
Sura hii inafunika nini
Order-book imbalance ni ratio ya buy-side depth kwa sell-side depth kwenye limit order book. Kwenye Polymarket ina real lakini short-lived predictive edge - kawaida sekunde 5-30 kabla mid imehama. Sura hii ni computation pattern na conditions ambapo signal inalala.
- Ni nini order book imbalance
- Microprice computation
- Imbalance kama directional signal
- Signal half-life kwenye Polymarket
- Wakati imbalance signals zinalala
- Code: compute imbalance kwenye kila WS tick
Ni nini order book imbalance
Order book imbalance ni ratio ya total buy-side depth kwa total sell-side depth kwenye limit order book. Imecomputed kwenye top-N levels (commonly N=5), inacapture aggregate trader pressure ambayo mid-price haijareflect bado.
Formula: imbalance = (Σ bid[i].price × bid[i].size for i in [0..N]) − (Σ ask[i].price × ask[i].size) / (Σ both). Range -1 hadi +1; positive inamaanisha buy pressure zaidi, negative inamaanisha sell pressure zaidi.
Signal ni empirically real kwenye Polymarket lakini noisy. Whale moja anaweza fake-print imbalance kwa sekunde 30-60 kabla ya kuarbed out. Inafaa kama feature moja kati ya kadhaa, hatari kama sole trigger.
Microprice computation
Microprice ni refinement ya simple mid: weighted average ya best bid na best ask, weighted na respective sizes zao.
microprice = (best_bid × ask_size + best_ask × bid_size) / (bid_size + ask_size)
Wakati bid-side queue ni kubwa zaidi kuliko ask side, microprice inaketi closer kwa ask. Intuition: buyers zaidi wanasubiri inamaanisha next trade ina likely zaidi kulift ask, kwa hivyo fair value iko closer kwa ask.
Microprice ni 5-30 second leading indicator ya actual mid kuhama. Production bots wanaitumia kama reference price kwa take-profit decisions badala ya naive mid.
Imbalance kama directional signal
Kutoka production observation: wakati imbalance inaflip kutoka -0.3 hadi +0.5 katika sekunde 10 bila accompanying news event, mid inahama juu kwa 1-2 cents ndani ya sekunde 30-60 zifuatazo karibu 65% ya muda.
Hiyo ni real edge lakini inadissolve katika small position sizes baada ya fees. Kuimonetize, bot lazima isize ya kutosha kucapture move minus fees, lakini ndogo ya kutosha kutohama book yenyewe. Polymarket books kawaida ni thin ya kutosha kwamba kitu chochote juu ya shares 50 inahama market.
Changanya imbalance na features nyingine: trade velocity (trades zaidi = real signal), best-bid kihalisi kuhama juu (sio tu depth kuhama), market sio katika news-driven mode.
Signal half-life kwenye Polymarket
Imbalance signal inadecay. Production data kutoka trader wetu: imbalance > 0.6 → expected mid move ya 1.2c ndani ya sekunde 60, half-life ya ~sekunde 30. Baada ya sekunde 90 predictive value imeenda kwa zero.
Implication kwa bot design: itikia haraka au skip. Bot inayochukua sekunde 15 kuamua inaconsume nusu ya edge kabla ya kuweka order. Latency budget kwa imbalance strategies inapaswa kuwa chini ya sekunde 5 kutoka signal hadi FOK fired.
Strategies zinazoshikilia positions kwa muda mrefu kuliko half-life (dakika 1-2) ni gambling kwenye next signal, sio current. Kuwa explicit kuhusu hii; usishikilie kwa bahati mbaya imbalance-driven positions hadi resolution.
Wakati imbalance signals zinalala
Signal inamisleads wakati moja ya conditions tatu inashikilia.
- News-driven move: imbalance ni consequence ya news ambazo hujaona. Kutrade dhidi yake kunapotezewa; kutrade nayo ni news arbitrage, strategy tofauti.
- Whale spoofing: large order iliyowekwa na kucancelled haraka inaunda fake imbalance kwa duration. Filter kwa kucheck kwamba imbalance inapersist kwa 10+ sekunde kabla ya kutrigger.
- End-of-period rebalancing: market makers wakipull quotes kwa inventory reasons badala ya information reasons. Imbalance inareverse dakika baadaye wakati MM inare-quote.
Combined filter ni: imbalance > threshold AND trade velocity > baseline AND hakuna news event katika dakika 5 za mwisho. Kila filter peke yake ina false positives nyingi sana.
Code: compute imbalance kwenye kila WS tick
Reference: jisajili kwa WebSocket book updates, recompute imbalance kwenye kila tick.
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 ni per-token. Cooldown inazuia over-firing kwenye signal sawa. Filters (news check, trade velocity) zinagate actual trade.





