Polymarket Bot Tutorial · Kapitel 16 von 32
Statistical arbitrage auf Polymarket: cross-market pairs (korrelierte Ereignisse), Polymarket-vs-Kalshi-Spreads, mean reversion und wie man stat-arb-Positionen dimensioniert, wenn Markets irgendwann aufgelöst werden.
Was dieses Kapitel abdeckt
Statistical arbitrage auf Prediction Markets nutzt vorübergehende Fehlbewertungen zwischen korrelierten Markets aus - dasselbe Event auf Polymarket vs. Kalshi oder verwandte Markets innerhalb von Polymarket selbst. Die Edges sind klein (typisch 1-3 Cent) und operativ fragil. Dieses Kapitel ist ehrlich darüber, was funktioniert, was nicht funktioniert, und über das Multi-leg-Execution-Risiko, das die meisten Versuche scheitern lässt.
Cross-market statistical arbitrage nutzt vorübergehende Preisinkonsistenzen zwischen Polymarket und Kalshi, Polymarket und Manifold oder zwischen korrelierten Markets innerhalb von Polymarket aus. Die Edges sind klein (typisch 1-3 Cent) und erfordern schnelle Ausführung auf beiden Legs. Dieses Kapitel ist das ehrliche Playbook einschließlich der operativen Komplexität, die die meisten Versuche scheitern lässt.
- Was stat-arb in Prediction Markets bedeutet
- Polymarket-vs-Kalshi Spread-Beispiele
- Pairs innerhalb von Polymarket (korrelierte Events)
- Mean reversion vs. Trend continuation
- Sizing für sich auflösende (nicht permanente) Markets
- Risiko: Divergenz über die Auflösung hinaus
- Code: Pairs-Monitor und Threshold-Trigger
Was stat-arb in Prediction Markets bedeutet
Statistical arbitrage in Prediction Markets bedeutet, den Spread zwischen zwei Markets zu handeln, die konsistent bepreist sein sollten. Auf Polymarket sind drei Varianten üblich.
- Cross-venue: dasselbe Event auf Polymarket und Kalshi (oder Manifold, PredictIt). Die Preise sollten konvergieren; in der Praxis driften sie um 2-5 Cent auseinander.
- Same-event-pair: Parent vs. Summe der Legs in NegRisk-Multi-Outcome-Markets. Die Sum-to-1-Invariante erlaubt Arbitrage, wenn die Legs zusammen weniger als 1.0 ergeben.
- Correlated-event-pair: zwei Markets über zusammenhängende Outcomes (z. B. „Trump Präsident am 1. Januar“ vs. „Trump Präsident am 1. März“). Sie sollten sich innerhalb von 2-3 Cent zueinander bepreisen.
Die Edges sind klein. Die operative Komplexität ist real. Die meisten Versuche scheitern an der Ausführung, nicht an der Theorie.
Polymarket-vs-Kalshi Spread-Beispiele
Aus Beobachtungen in 2025-26: Polymarket und Kalshi listen dieselben wichtigen US-Events, bepreisen sie aber dauerhaft 1-4 Cent auseinander. Diese Lücke existiert aus strukturellen Gründen, die du in jedem Arb-Modell berücksichtigen musst.
Strukturelle Treiber:
- Fee asymmetry: Kalshi nimmt 4-7% auf gewinnende Trades (je nach Market unterschiedlich); Polymarket erhebt 0 Taker Fee. Die Arb-Formel muss Kalshis Abzug netto einrechnen.
- Settlement risk premium: Wenn die Auflösung eines Markets unklar ist, kann das UMA der einen Venue anders entscheiden als die Judges der anderen. Der Market preist das ein.
- Trader population: Polymarket ist tendenziell jünger und crypto-nativer; Kalshi tendiert zu professionell / hedge. Sie sind sich bei denselben Events systematisch uneinig.
Arbitrage funktioniert, wenn die Lücke die strukturelle Prämie plus Fees übersteigt. Ein 5-Cent-Gap in einem Market, in dem die strukturelle Prämie 1c und die kombinierten Fees 1c betragen, ist eine echte 3c-Edge.
Pairs innerhalb von Polymarket (korrelierte Events)
Innerhalb von Polymarket sind korrelierte Event-Pairs leichter zu arbitrieren als Cross-venue-Pairs. Gleiche Fee-Struktur, gleiche Wallet, atomische Ausführung möglich.
Beispiele, die konsistent inkonsistent bepreist werden:
- Trump Präsident an Datum A vs. Trump Präsident an Datum B (wobei B weniger als 90 Tage später liegt).
- Wird Bitcoin bis zum 31. Juli $100k erreichen vs. bis zum 31. August $100k.
- Yes vs. No Legs im selben Binary Market (Summe sollte = 1.0 sein; driftet in dünnen Books manchmal bis auf 1.04).
Das Yes+No=1-Arbitrage ist das sauberste: Beide Legs aus demselben Market lesen und FOK auf beide ausführen, wenn die Summe unter 0.97 fällt (unter Berücksichtigung der Spread-Tax). Das benötigte Kapital ist auf beiden Legs ungefähr gleich; die Ausführung ist atomisch, wenn beide Fills in derselben Response zurückkommen.
Mean reversion vs. Trend continuation
Zwei stat-arb-Regime. Mean reversion: Das Pair ist aus einem Noise-Grund auseinander gelaufen; du setzt auf Konvergenz. Trend continuation: Das Pair beginnt sich zu divergieren, weil neue Informationen angekommen sind; du setzt auf weitere Divergenz.
Sie zu unterscheiden ist der schwierige Teil. Heuristik: Wenn die Divergenz bei sichtbarem Volumen passiert ist (ein Whale hat ein Leg aus dem Book gedrückt), dann ist es News - nur gegenhalten, wenn du ein Modell hast. Wenn sie langsam bei niedrigem Volumen entstanden ist, ist es Noise - dann mit Überzeugung auf Reversion handeln.
Für neue Builder: handle nur Mean reversion, und zwar nur auf Pairs, bei denen die Divergenz weniger als 1 Standardabweichung des historischen Drifts beträgt. Trend continuation erfordert ein Modell, das die News erkennt; ohne eines handelst du gegen informed Flow.
Sizing für sich auflösende (nicht permanente) Markets
Prediction Markets werden aufgelöst. Crypto-Pairs nicht. Das ändert die Mathematik.
Eine Pair-Arb-Position auf Polymarket hat einen festen Auszahlungsplan: Wenn beide Markets aufgelöst sind, ist die Differenz zwischen vorhergesagtem Spread und tatsächlichem Spread festgeschrieben. Es gibt kein Rolling, kein unbegrenztes Halten.
Implikation für das Sizing: Die maximale Position, die du halten kannst, ist durch die Time-to-Resolution begrenzt, weil Kapital bis dahin gebunden ist. Ein Pair, das in 6 Monaten aufgelöst wird, kann dir 3c pro Share einbringen, aber du kannst in der Zwischenzeit nicht mehr Kapital einsetzen, wenn beide Markets voll allokiert sind.
Das richtige Framing: stat-arb auf Polymarket ist eine Serie von Trades mit begrenzter Laufzeit, keine kontinuierliche Strategie. Vergleiche PnL pro Einheit gebundenen Kapitals pro Tag, nicht den Brutto-PnL.
Risiko: Divergenz über die Auflösung hinaus
Das schlimmste stat-arb-Ergebnis ist, dass deine Vorhersage der Konvergenz falsch ist, weil die zugrunde liegende Prämisse falsch war. Beispiele:
- Du hast „Trump Präsident am 1. April“ geshortet in der Erwartung, dass es zu „Trump Präsident am 1. März“ konvergiert - aber der Markt für Datum 1 wird mit YES aufgelöst und der Markt für Datum 2 mit NO wegen eines Impeachments im März. Deine These „der Spread sollte flat sein“ war falsch.
- Du hast Polymarket vs. Kalshi auf denselben NBA- Finals-Sieger ge-arb-t. Polymarket wird auf das Team aufgelöst, das die offizielle Serie gewonnen hat; Kalshi wird nach einer leicht anderen Definition aufgelöst, die Overtime-Tiebreaker anders einbezieht. Beide werden nach ihren jeweiligen Regeln YES aufgelöst, aber in entgegengesetzte Richtungen.
Lies die Auflösungskriterien jedes Markets sorgfältig. Cross-venue-Arb ist nur eine einzige Resolution-Mismatch von einem Totalverlust auf beiden Legs entfernt.
Code: Pairs-Monitor und Threshold-Trigger
Referenz: Zwei korrelierte Tokens monitoren, Arbitrage ausführen, wenn der Spread den Threshold überschreitet.
def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
"""Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
while True:
book_a = fetch_book(token_a)
book_b = fetch_book(token_b)
if not (book_a.best_ask and book_b.best_bid):
time.sleep(2); continue
# implied: cost of buying A at ask + value of selling B at bid
edge = (1 - book_a.best_ask) + book_b.best_bid - 1
if edge > threshold_cents / 100:
print(f"ARB edge={edge:.3f}; firing")
r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
if r_a.status != "matched": continue
r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
if r_b.status != "matched":
# leg A filled, B failed -- unhedged, exit A
fok_sell(token_a, price=book_a.best_bid, size=size)
time.sleep(3)
Das Cleanup bei einem Partial Fill ist kritisch. Ohne es bleibt der Bot directional exponiert, was genau das Gegenteil von dem ist, worum es bei stat-arb geht.





