Polymarket Bot Tutorial · Kapitel 29 von 32

Baue eine Polymarket Paper-Trading-Engine, bevor du live gehst: simuliere Orders gegen reale Preise, tracke P&L, setze das 30-Trade-Gate (>=55% Win Rate, +PnL) durch, bevor echtes Kapital eingesetzt wird, und Code-Skeleton.

Was dieses Kapitel abdeckt

Paper Trading ist der unverzichtbare Schritt zwischen Strategieidee und Live-Deployment. Dieses Kapitel ist die einfache Paper-Engine, die jeden Live-Bot, den wir ausgeliefert haben, abgesichert hat - unter 200 Zeilen Python, trackt jeden Trade in einem JSONL-Logbuch und verwendet dieselben Fees/Slippage wie der Live-Pfad.

  • Warum erst paper, dann live (immer)
  • Das 30-Trade-Gate (verifiziert +55% WR + positive PnL)
  • Eine einfache Paper-Engine bauen
  • Paper-Logbuch neben Live-Logbuch tracken
  • Wann Paper von Live abweicht (und warum)
  • Der Übergang zu Live: kleine erste Einzahlung
  • Code: minimale Paper-Engine

Warum erst paper, dann live (immer)

Das 30-Trade-Paper-Gate ist die eine Disziplin, die die 7,6% der profitablen Polymarket Trader von den 84,1% trennt, die Geld verlieren. Die meisten Builder überspringen es und zahlen Lehrgeld. Der ehrliche Grund, warum es funktioniert: Paper Trading zeigt die echte Win Rate einer Strategie über genügend Samples, um Signal von Glück zu unterscheiden.

Paper Trading zu überspringen kostet mehr, als es spart. Eine Strategie, die im Backtest profitabel aussieht, in Wirklichkeit aber nur ein Coin Flip ist, verbrennt $200-500 Live-Kapital, bevor überhaupt ein Live-Datensatz mit 30 Samples entstanden ist. Dieselben 30 Trades im Paper zu traden kostet $0.

Die Paper-Engine muss nicht hochkomplex sein. Sie muss ehrlich sein - dieselben Fees, dieselbe Slippage, dieselbe Fill-Latenz wie der Live-Pfad. Je einfacher, desto besser, denn alles Optionale wird sonst gestrichen und der Bot geht früher live, als er sollte.

Das 30-Trade-Gate (verifiziert +55% WR + positive PnL)

Das Gate ist binär: 30 geschlossene Paper-Trades, im Voraus festgelegte Erfolgskriterien (typischerweise WR ≥ 55% bei einer positiven EV-Strategie) oder kein Live-Deployment.

30 ist die minimale Stichprobengröße, bei der das 95%-Konfidenzintervall für die tatsächliche Win Rate eng genug ist, um Signal von Rauschen zu unterscheiden. Unter 30 könnten 60% beobachtete Trefferquote einer echten Rate von 45-75% entsprechen. Ab 30+ verengt sich das Intervall auf etwa 50-70% - immer noch breit, aber genug, um „die Strategie ist ein Coin Flip“ auszuschließen.

Die Erfolgskriterien müssen festgelegt werden, BEVOR der Paper-Lauf startet. Wenn man sie erst danach setzt, entsteht eine nachträgliche Rationalisierung (du wirst einen Weg finden, jeden Satz von 30 Trades als „gut genug“ zu interpretieren).

Eine einfache Paper-Engine bauen

Die Paper-Engine ist im Grunde der Live-Trading-Code, bei dem die Order-Platzierung durch einen simulierten Fill ersetzt wird. Die Simulation:

  • Live Order Book lesen: derselbe Call wie beim Live-Bot.
  • Fill simulieren: wenn man per FOK bei einem Preis ≥ Best Ask kauft, wird die Order zum volumengewichteten Durchschnitt der konsumierten Asks gefüllt; der Fill wird im Paper-Logbuch erfasst.
  • Fees anwenden: dieselben Fees abziehen, die auch der Live-Pfad zahlen würde.
  • Inventory tracken: ein paralleles Paper-Balance- und Paper-Positions-Dictionary führen.

Die ganze Engine passt in 100-200 Zeilen Python. Die wichtigste Disziplin: Jede Annahme, die der Live-Pfad macht (Fill-Rate, Latenz, Fee), muss im Paper reproduziert werden, selbst wenn sie etwas schlechter als die Realität ist - Paper sollte der Floor sein, nicht die Obergrenze.

Paper-Logbuch neben Live-Logbuch tracken

Der Paper-Trading-Lauf erzeugt ein JSONL-Logbuch, das in seiner Struktur nicht vom Live-Logbuch zu unterscheiden ist, das der Bot später schreiben wird. Dieselben Felder: timestamp, action, market_slug, side, size, price, expected_fill_price, simulated_pnl_at_exit.

Zwei Gründe, dasselbe Format zu verwenden. Erstens funktionieren die Analyse-Tools, die Live-Trades lesen (PnL-Reports, Win-Rate-Calculator), ohne Änderungen auch mit Paper. Zweitens erkennt ein späterer Vergleich von Paper und Live Abweichungen, die auf Bugs hindeuten.

Production-Tipp: Lass die Paper-Engine in per_trade_paper.jsonl im selben Verzeichnis schreiben wie das Live-per_trade.jsonl. Ein einzelner Befehl vergleicht beide: diff -y <(jq -r .market_slug per_trade.jsonl) <(jq -r .market_slug per_trade_paper.jsonl).

Wann Paper von Live abweicht (und warum)

Unvermeidliche Abweichungen zwischen Paper und Live. Drei häufige.

  • Slippage: Paper füllt zum Ask-Snapshot; Live läuft durch das Order Book und kann auf dünnen Märkten 1-2c schlechter gefüllt werden. Lösung: Slippage im Paper simulieren, indem pro Trade eine Strafe in Höhe der Hälfte des Spreads addiert wird.
  • Fill-Latenz: Paper füllt sofort; Live braucht 200-500 ms, in denen sich der Preis bewegen kann. Lösung: durch Warten simulieren und das Book vor dem „Fill“ im Paper erneut lesen.
  • Adverse Selection: Paper geht davon aus, dass du den besten Ask bekommst; Live konkurriert mit anderen Bots, die diesen Ask womöglich bereits weggekauft haben. Lösung: schwerer zu simulieren; sei dir ehrlich darüber bewusst, dass Paper überschätzt.

Wenn Paper +5%/Monat sagt und Live bei -2%/Monat läuft, liegt die Lücke meist an einem dieser Punkte. Prüfe sie einzeln, statt anzunehmen, dass die Strategie selbst falsch war.

Der Übergang zu Live: kleine erste Einzahlung

Paper besteht 30 Trades. Live-Deployment-Plan:

  1. Depositiere $25-50 als Smoke-Test-Kapital. Betrachte es als Lehrgeld; wenn du es verlierst, war die Lektion den Preis wert.
  2. Lass den Bot im Live-Modus 5-10 Trades mit Positionen in Minimalgröße (5 Shares) laufen.
  3. Verifiziere, dass jeder Fill innerhalb von 2c den Paper-Erwartungen entspricht. Untersuche jede größere Abweichung, bevor du weitermachst.
  4. Wenn 5-10 Live-Trades mit dem Paper übereinstimmen, depositiere $200-500 und nutze normale Positionsgrößen.
  5. Wenn sie nicht übereinstimmen, stoppen, debuggen, fixen, von Schritt 1 neu starten.

Die häufigste Live-Paper-Differenz beim ersten Deployment ist eine fehlende Fee oder eine falsch geschätzte Slippage. Das zu beheben ist unkompliziert; die Disziplin besteht darin, die Lücke zu erkennen, bevor du Kapital skalierst.

Code: minimale Paper-Engine

Referenz: einfache Paper-Engine, die das Live-Book liest + FOK-Fill simuliert.

import json, time
PAPER_BAL = 10_000.0   # USD starting
positions = {}         # token_id -> shares

def paper_fok_buy(token_id, max_price, size):
    book = fetch_book(token_id)
    # Walk asks, fill what we can within max_price
    filled = 0; cost = 0
    for level in book.asks:
        px = float(level["price"])
        if px > max_price: break
        avail = float(level["size"])
        take = min(avail, size - filled)
        filled += take
        cost += take * px
        if filled >= size: break
    if filled < size:
        return {"status":"rejected","filled":0}  # FOK semantics

    global PAPER_BAL
    PAPER_BAL -= cost
    positions[token_id] = positions.get(token_id, 0) + filled

    log_paper({"ts": int(time.time()), "action":"buy",
               "token": token_id, "size": filled, "price": cost/filled})
    return {"status":"matched","filled":filled,"cost":cost}

Ergänzungen für Production: Paper-Sell-Funktion (Gegenstück zum Buy), Paper-GTC-Simulation (Order bei Preis ins Book stellen, Fill simulieren, wenn Mid den Preis erreicht), Reconciliation zwischen Paper-Logbuch und „wäre-live-gewesen“-Live-Logbuch.

Häufig gestellte Fragen

Was ist das 30-Trade-Gate?
Unsere interne Gate-Regel für den Übergang von Paper zu Live: mindestens 30 geschlossene Paper-Trades, Win Rate >= 55% und net PnL positiv nach Slippage. Wenn eines davon nicht erfüllt ist, bleibst du im Paper. Wir haben diese Regel nach mehreren zu frühen Go-Live-Versuchen erfunden, die 2025 Konten auslöschten.
Warum 30 Trades und nicht 100?
Statistische Power. Bei 30 Trades hat eine Win Rate von 55% ungefähr eine 70%ige Wahrscheinlichkeit, echter Edge zu sein (nicht Rauschen). Bei 100 Trades steigt diese Sicherheit auf 90%+. Wir haben 30 als minimale Hürde gewählt, weil längere Paper-Phasen oft zu Overfitting führen - Trader optimieren die Strategie zu lange, statt sie zu testen.
Kann ich Paper Trading überspringen, wenn ich überzeugt bin?
Gerade wenn du überzeugt bist, solltest du es nicht überspringen. Die besten Bots auf Polymarket werden von Leuten betrieben, die schon einmal falsch lagen. Das 30-Trade-Gate existiert, um die Strategien zu erwischen, die richtig aussehen, es aber nicht sind. Viele unserer eigenen Strategien sind anfangs im Paper gescheitert - genau darin liegt der Wert.
Stimmen Paper-Ergebnisse mit Live-Ergebnissen überein?
Bei langsamen Strategien (Politik, Wetter) meistens ja, bei schnellen nicht (5-Minuten-Krypto, Sports Microstructure). Die Lücke ist: „Paper Trading zahlt keine Slippage“ - reale Fills sind schlechter als der Preis, den du gesehen hast. Wir diskontieren Paper-Returns um 30-50%, bevor wir sie für Live ernst nehmen, besonders bei schnellen Strategien.
Wie implementiere ich eine Paper-Engine in Python?
Abonniere den echten CLOB WebSocket für die Märkte, die du tradest. Wenn deine Strategie entscheidet, eine Order zu platzieren, logge sie in eine JSONL-Datei mit dem Fill-Preis, den sie gehabt hätte (aktueller Bid für Buy, aktueller Ask für Sell). Tracke Positionen virtuell. Führe Mark-to-Market gegen den Live-Preis durch. Die ganze Engine umfasst etwa 200 Zeilen Python.
Wie lange sollte ich Paper Trading machen, bevor ich live gehe?
Bis das 30-Trade-Gate erfüllt ist, oder 2-4 Wochen, je nachdem, was länger dauert. Wenn du das Gate zu schnell erreichst, überfit-test du; verlangsame und prüfe, ob deine Win Rate robust gegenüber kleinen Parameteränderungen ist. Wenn du das Gate nach Monaten nicht erreichst, hat die Strategie wahrscheinlich keinen Edge und du solltest sie beerdigen.