Polymarket Bot Tutorial · Kabanata 17 ng 32
Gamitin ang Polymarket order book imbalance bilang short-term price signal: bid-ask volume ratio, microprice computation, signal half-life, at kailan tinatalo ng imbalance bots ang random execution.
Ano ang sinasaklaw ng kabanatang ito
Ang order-book imbalance ay ang ratio ng buy-side depth sa sell-side depth sa limit order book. Sa Polymarket may totoo ngunit panandaliang predictive edge - karaniwang 5-30 segundo bago lumipat ang mid. Ang kabanatang ito ay ang computation pattern at ang mga kondisyon kung saan nagsisinungaling ang signal.
- Ano ang order book imbalance
- Microprice computation
- Imbalance bilang directional signal
- Signal half-life sa Polymarket
- Kailan nagsisinungaling ang imbalance signals
- Code: kalkulahin ang imbalance bawat WS tick
Ano ang order book imbalance
Ang order book imbalance ay ang ratio ng total buy-side depth sa total sell-side depth sa limit order book. Kinakalkula sa top-N levels (karaniwang N=5), kinakapture nito ang aggregate trader pressure na hindi pa nasasalamin ng mid-price.
Formula: imbalance = (Σ bid[i].price × bid[i].size for i in [0..N]) − (Σ ask[i].price × ask[i].size) / (Σ both). Range -1 hanggang +1; positive ay nangangahulugang mas maraming buy pressure, negative ay mas maraming sell pressure.
Ang signal ay empirically totoo sa Polymarket ngunit maingay. Ang isang whale ay maaaring mag-fake-print ng imbalance sa loob ng 30-60 segundo bago ma-arb out. Kapaki-pakinabang bilang isang feature kasama ng ilan, mapanganib bilang nag-iisang trigger.
Microprice computation
Ang microprice ay refinement ng simpleng mid: weighted average ng best bid at best ask, na weighted ng kanilang respective sizes.
microprice = (best_bid × ask_size + best_ask × bid_size) / (bid_size + ask_size)
Kapag ang bid-side queue ay mas malaki kaysa sa ask side, ang microprice ay nakaupo nang mas malapit sa ask. Ang intuwisyon: mas maraming buyers na naghihintay ay nangangahulugang ang susunod na trade ay mas malamang na mag-lift sa ask, kaya ang fair value ay mas malapit sa ask.
Ang microprice ay 5-30 segundong leading indicator ng aktwal na mid na gumagalaw. Ang production bots ay gumagamit nito bilang reference price para sa take-profit decisions sa halip na naive mid.
Imbalance bilang directional signal
Mula sa production observation: kapag ang imbalance ay lumipat mula -0.3 papuntang +0.5 sa 10 segundo nang walang kasamang news event, ang mid ay gumagalaw pataas ng 1-2 cents sa loob ng susunod na 30-60 segundo halos 65% ng oras.
Iyan ay totoong edge ngunit nalulusaw sa maliit na position sizes pagkatapos ng fees. Upang ma-monetize, ang bot ay dapat may sapat na sukat upang ma-capture ang move minus fees, ngunit sapat na maliit na hindi gumagalaw ang book mismo. Ang Polymarket books ay karaniwang sapat na manipis na ang anumang higit sa 50 shares ay nagpapalipat sa market.
Pagsamahin ang imbalance sa ibang features: trade velocity (mas maraming trades = totoong signal), best-bid na aktwal na gumagalaw pataas (hindi lang nag-shift ang depth), market na wala sa news-driven mode.
Signal half-life sa Polymarket
Ang imbalance signal ay nabubulok. Production data mula sa aming trader: imbalance > 0.6 → inaasahang mid move ng 1.2c sa loob ng 60s, half-life na ~30s. Pagkatapos ng 90 segundo ang predictive value ay napupunta sa zero.
Implication para sa bot design: mabilis na mag-react o laktawan. Ang bot na tumatagal ng 15 segundo upang magdesisyon ay kumakain ng kalahati ng edge bago mag-place ng order. Ang latency budget para sa imbalance strategies ay dapat wala pang 5 segundo mula signal papuntang FOK fired.
Ang mga strategies na humahawak ng positions nang mas matagal kaysa sa half-life (1-2 minuto) ay nagsusugal sa susunod na signal, hindi sa kasalukuyan. Maging explicit dito; huwag aksidenteng hawakan ang imbalance-driven positions hanggang sa resolution.
Kailan nagsisinungaling ang imbalance signals
Ang signal ay nakakalito kapag may isa sa tatlong kondisyon.
- News-driven move: ang imbalance ay consequence ng news na hindi mo nakita. Ang pag-trade laban dito ay natatalo; ang pag-trade kasama nito ay news arbitrage, ibang strategy.
- Whale spoofing: ang malaking order na inilagay at mabilis na kinansela ay lumilikha ng fake imbalance sa loob ng duration. Mag-filter sa pamamagitan ng pagsusuri na ang imbalance ay nananatili nang 10+ segundo bago mag-trigger.
- End-of-period rebalancing: ang market makers na humihila ng quotes para sa dahilan ng inventory sa halip na dahilan ng information. Ang imbalance ay bumabaligtad mamaya kapag nag-requote ang MM.
Ang combined filter ay: imbalance > threshold AT trade velocity > baseline AT walang news event sa nakaraang 5 minuto. Ang bawat filter mag-isa ay may masyadong maraming false positives.
Code: kalkulahin ang imbalance bawat WS tick
Reference: mag-subscribe sa WebSocket book updates, kalkulahin muli ang imbalance bawat 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"])
Ang state ay per-token. Pinipigilan ng cooldown ang over-firing sa parehong signal. Ang filters (news check, trade velocity) ay nag-gate sa aktwal na trade.





