The Bot Ledger
DE

Start / Anleitungen

Predict.fun-API-Anleitung: Trading-Bot in 5 Schritten anbinden

Predict.fun-API für einen Bot: Auth, 5-Minuten-Märkte auflisten, Preisleiter, Taker-Orders, Fills und die Abrechnungsregel, die anders ist als beim Rest.

A dark blue circuit board, close up
Foto: Vishnu Mohanan, Unsplash
Auth
API-Key aus den Kontoeinstellungen, als Header gesendet.
Lesen
REST für Märkte und Preisleitern; ein Orderbuch-Stream für Live-Updates.
Handeln
Limit- und Taker-Orders pro Anteil, Tick 0.01.
Taker-Gebühr
0.018 x min(p, 1-p) pro Anteil, berechnet in Outcome-Anteilen. Maker zahlen nichts.
Abrechnung
Ein Punktwert des Orakelpreises an jeder Grenze. Keine Mittelung. Unentschieden zahlen 50/50.
Geografie
Sperrt die USA.
Doku
docs.predict.fun

Fünf Schritte, vereinfacht. Die Endpunkt-Namen unten sind Platzhalter für die Form jedes Aufrufs; nimm die exakten Pfade aus der Referenz, die sich öfter ändert als bei den größeren Börsen.

  1. Authentifizieren

    import requests
    BASE = "https://api.predict.fun"          # in der Doku bestätigen
    H = {"X-API-Key": API_KEY}
  2. Die aktuellen Fenster auflisten

    markets = requests.get(f"{BASE}/markets", params={"category": "crypto", "status": "open"}, headers=H).json()
    m = next(x for x in markets if x["timeframe"] == "5m" and x["asset"] == "BTC")
    start_price = m["startPrice"]              # die deklarierte Eröffnung, exakt auf den Tick

    Die Fenster schließen aneinander an: der Endpreis eines Fensters ist der Startpreis des nächsten. Wenn dein eigener Spot-Feed vom deklarierten Startpreis abweicht, vertrau dem deklarierten.

  3. Die Preisleiter lesen

    book = requests.get(f"{BASE}/markets/{m['id']}/orderbook", headers=H).json()
    best_ask = book["asks"][0]                 # [price, size]
    best_bid = book["bids"][0]

    In der letzten Minute nimmt fast jeder Abschluss den Ask oder trifft das Bid; innerhalb des Spreads wird nichts gehandelt. Modelliere deine Fills am Touch, nicht am Mid.

  4. Einen Taker-Kauf platzieren

    order = {"marketId": m["id"], "outcome": "UP", "side": "BUY", "type": "LIMIT",
             "price": best_ask[0], "size": 30, "timeInForce": "FOK"}
    r = requests.post(f"{BASE}/orders", json=order, headers=H).json()

    Die Gebühr geht von den Anteilen ab, die du bekommst; ein Kauf von 30 Anteilen zu 50 Cent liefert also etwa 29,7 Anteile.

  5. Fills lesen

    fills = requests.get(f"{BASE}/fills", headers=H).json()

Die Abrechnung macht den Unterschied

Polymarket, Limitless und Kalshi rechnen kurze Krypto-Märkte alle über einen Durchschnitt der letzten Minute ab. Predict.fun rechnet über einen einzigen Messwert ab. In flachen Fenstern widersprechen sich die beiden Regeln etwa in einem von zehn Fällen, also wirf Predict.fun-Ergebnisse nicht mit den anderen zusammen, und übertrag ein auf den anderen trainiertes Modell nicht ohne erneutes Training.