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.

Mga madalas na tanong

Ano ang order book imbalance?
Ang ratio ng bid volume sa ask volume sa tuktok ng book. Ang heavily bid-skewed na book (mas maraming buyers kaysa sellers malapit sa touch) ay nagmumungkahi ng upward price pressure sa napakaikling termino. Ang signal ay well-known sa crypto at equities; sa Polymarket ito ay gumagana sa liquid markets ngunit nawawala sa manipis.
Paano ko kakalkulahin ang microprice?
microprice = (best_ask * bid_size + best_bid * ask_size) / (bid_size + ask_size). Ito ay volume-weighted na bersyon ng mid-price na sumasandig sa panig na may mas kaunting volume - ang panig na "naubusan" muna. Gumagamit ang bots nito bilang fair-value estimate na nagsasama ng imbalance.
Ano ang half-life ng imbalance signal sa Polymarket?
Sa active markets, 5-30 segundo. Sa manipis na markets, mas matagal (dahil ang mga bagong order ay tumatagal nang mas matagal upang madaig ang imbalance). Kung ang iyong bot ay nag-re-react sa wala pang segundo, maaari mong i-capture ang ilan dito. Kung nag-re-react ito sa 5+ segundo, karaniwang huli ka na.
Kailan nagsisinungaling ang imbalance?
Kapag ang isang malaking order ay nakaupo sa isang panig na naghihintay na tamaan (isang malaking resting bid, walang ibang aktibidad). Ang imbalance ay totoo ngunit hindi ito nagpe-predict ng presyo - ipinakikita lamang nito ang isang motivated buyer. I-filter sa pamamagitan ng pagbilang ng orders, hindi lang volume: imbalance ng N orders sa 1 order ay mas informative kaysa 5x volume sa 1 order bawat isa.
Sapat na ba ang order book imbalance upang mag-trade nang nag-iisa?
Karaniwang hindi. Bilang standalone signal ito ay mahina at na-aarbitrage. Pagsamahin sa iba pang signal (e.g., macroprice mean reversion, news flag, o sports state) para sa mas matibay na edge. Ang imbalance lamang ay madalas na underperform sa random execution pagkatapos ng fees.
Anong Python library ang makakakalkula ng imbalance mula sa Polymarket WS?
Walang off-the-shelf library na alam namin - ito ay ilang dosenang linya ng code. Mag-subscribe sa pamamagitan ng py-clob-client sa market book, sa bawat price_change event kalkulahin muli ang top-of-book bid/ask sizes, at i-emit ang iyong imbalance metric. I-cache ang huling value at mag-re-trigger lamang sa meaningful changes.