Polymarket Bot Tutorial · Kapitel 17 von 32

Nutze das Order-Book-Imbalance von Polymarket als kurzfristiges Preissignal: bid-ask volume ratio, microprice-Berechnung, Signal-Halbwertszeit und wann imbalance bots random execution schlagen.

Was dieses Kapitel behandelt

Order-book imbalance ist das Verhältnis von buy-side depth zu sell-side depth im limit order book. Auf Polymarket hat es einen echten, aber kurzlebigen Predictive Edge - typischerweise 5-30 Sekunden, bevor sich der mid bewegt. Dieses Kapitel beschreibt das Berechnungsmuster und die Bedingungen, unter denen das Signal irrt.

  • Was Order-Book-Imbalance ist
  • Microprice-Berechnung
  • Imbalance als directional signal
  • Signal half-life auf Polymarket
  • Wann imbalance signals irren
  • Code: Imbalance bei jedem WS-Tick berechnen

Was Order-Book-Imbalance ist

Order-book imbalance ist das Verhältnis der gesamten buy-side depth zur gesamten sell-side depth im limit order book. Berechnet auf den Top-N-Levels (typischerweise N=5), erfasst es den aggregierten Trader-Druck, den der mid-price noch nicht widerspiegelt.

Formel: imbalance = (Σ bid[i].price × bid[i].size for i in [0..N]) − (Σ ask[i].price × ask[i].size) / (Σ both). Bereich -1 bis +1; positiv bedeutet mehr buy pressure, negativ mehr sell pressure.

Das Signal ist empirisch auf Polymarket real, aber noisy. Ein einzelner whale kann imbalance für 30-60 Sekunden fake-printen, bevor es wieder arbed out wird. Nützlich als ein Feature unter mehreren, gefährlich als alleiniger Trigger.

Microprice-Berechnung

Der microprice ist eine Verfeinerung des einfachen mid: ein gewichteter Durchschnitt von best bid und best ask, gewichtet nach ihren jeweiligen Größen.

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

Wenn die bid-side queue viel größer ist als die ask side, liegt der microprice näher am ask. Die Intuition: Mehr wartende Käufer bedeuten, dass der nächste Trade mit höherer Wahrscheinlichkeit den ask anhebt, also liegt der faire Wert näher am ask.

Microprice ist ein 5-30-Sekunden leading indicator für die tatsächliche Bewegung des mid. Production bots nutzen ihn als Referenzpreis für take-profit-Entscheidungen statt des naiven mid.

Imbalance als directional signal

Aus Production-Beobachtung: Wenn sich imbalance in 10 Sekunden von -0.3 auf +0.5 dreht, ohne ein begleitendes news event, steigt der mid in den nächsten 30-60 Sekunden in etwa 65% der Fälle um 1-2 Cent.

Das ist ein echter Edge, aber er löst sich bei kleinen Positionsgrößen nach fees auf. Um ihn zu monetarisieren, muss der Bot groß genug size'n, um die Bewegung abzüglich fees mitzunehmen, aber klein genug, um das book nicht selbst zu bewegen. Polymarket books sind typischerweise so dünn, dass alles über 50 shares den Markt bewegt.

Kombiniere imbalance mit anderen Features: trade velocity (mehr Trades = echtes Signal), best bid bewegt sich tatsächlich nach oben (nicht nur depth shifting), Markt ist nicht im news-driven mode.

Signal half-life auf Polymarket

Das imbalance-Signal decayed. Production-Daten aus unserem trader: imbalance > 0.6 → erwartete mid-Bewegung von 1.2c innerhalb von 60s, half-life von etwa 30s. Nach 90 Sekunden ist der predictive value bei null.

Implikation für bot design: schnell reagieren oder skippen. Ein Bot, der 15 Sekunden für die Entscheidung braucht, verbraucht bereits die Hälfte des Edges, bevor er den Auftrag platziert. Das latency budget für imbalance strategies sollte unter 5 Sekunden von signal bis FOK fired liegen.

Strategien, die Positionen länger als die half-life halten (1-2 Minuten), spekulieren auf das nächste Signal, nicht auf das aktuelle. Sei hier explizit; halte imbalance-getriebene Positionen nicht versehentlich bis zur resolution.

Wann imbalance signals irren

Das Signal führt in die Irre, wenn eine von drei Bedingungen zutrifft.

  • News-driven move: Die imbalance ist eine Folge von News, die du noch nicht gesehen hast. Dagegen zu traden verliert; mit ihr zu traden ist news arbitrage, also eine andere Strategie.
  • Whale spoofing: Ein großer Order, der platziert und schnell gecancelt wird, erzeugt für die Dauer fake imbalance. Filtere, indem du prüfst, dass die imbalance 10+ Sekunden bestehen bleibt, bevor sie auslöst.
  • End-of-period rebalancing: Market makers ziehen Quotes aus Inventory-Gründen statt wegen Information zurück. Die imbalance kehrt Minuten später um, wenn der MM neu quotiert.

Der kombinierte Filter lautet: imbalance > threshold UND trade velocity > baseline UND kein news event in den letzten 5 Minuten. Jeder Filter allein hat zu viele false positives.

Code: Imbalance bei jedem WS-Tick berechnen

Referenz: Abonniere WebSocket book updates und berechne imbalance bei jedem Tick neu.

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 ist pro Token. Cooldown verhindert übermäßiges Auslösen auf dasselbe Signal. Filters (news check, trade velocity) gate die eigentliche Trade-Ausführung.

Häufig gestellte Fragen

Was ist Order-Book-Imbalance?
Das Verhältnis von bid volume zu ask volume an der Spitze des Books. Ein stark bid-lastiges Book (mehr Käufer als Verkäufer nahe am Touch) deutet auf kurzfristigen Aufwärtsdruck auf den Preis hin. Das Signal ist in Krypto und Equities bekannt; auf Polymarket funktioniert es in liquiden Märkten, verschwindet aber in dünnen.
Wie berechne ich den microprice?
microprice = (best_ask * bid_size + best_bid * ask_size) / (bid_size + ask_size). Es ist eine volumen-gewichtete Version des mid-price, die sich zur Seite mit weniger Volumen neigt - also zu der Seite, die zuerst "ausgeht". Bots nutzen ihn als fair-value-Schätzung, die imbalance berücksichtigt.
Wie lang ist die half-life eines imbalance signals auf Polymarket?
In aktiven Märkten 5-30 Sekunden. In dünnen Märkten länger (weil neue Orders länger brauchen, um die imbalance zu überrollen). Wenn dein Bot unter einer Sekunde reagiert, kannst du einen Teil davon mitnehmen. Wenn er in 5+ Sekunden reagiert, bist du normalerweise zu spät.
Wann irrt imbalance?
Wenn eine einzelne große Order auf einer Seite wartet, getroffen zu werden (ein großer resting bid, keine weitere Aktivität). Die imbalance ist real, sagt aber den Preis nicht voraus - sie zeigt nur einen motivierten Käufer. Filtere, indem du Orders zählst, nicht nur Volumen: imbalance N Orders zu 1 Order ist aussagekräftiger als 5x Volumen über jeweils 1 Order.
Reicht Order-Book-Imbalance allein zum Traden?
Meistens nein. Als standalone signal ist es schwach und wird arbed. Kombiniere es mit einem anderen Signal (z. B. macroprice mean reversion, news flag oder sports state) für einen robusteren Edge. Imbalance allein underperformt nach fees oft random execution.
Welche Python-Library kann imbalance aus dem Polymarket WS berechnen?
Soweit wir wissen, keine fertige Library - es sind nur ein paar Dutzend Zeilen Code. Abonniere über py-clob-client das market book, berechne bei jedem price_change event die top-of-book bid/ask sizes neu und gib deine imbalance-Metrik aus. Cache den letzten Wert und trigger nur bei relevanten Änderungen neu.