
- Auth
- Wallet-Signatur; Orders sind signierte Nachrichten, die auf Base abgewickelt werden.
- Lesen
- REST für Märkte und Orderbücher; Orderbuch-Snapshots tragen die Bedingungen des Liquiditätsprogramms inline.
- Handeln
- Signierte Limit-Orders; Fills sind On-Chain-Events.
- Taker-Gebühr
- Etwa 3 Prozent bei 50 Cent, fallend auf unter 0,5 Prozent nahe 1.00, bezahlt in Outcome-Token. Maker zahlen nichts.
- Abrechnung
- 60-Sekunden-Orakel-Durchschnitt; Schluss auf oder über Eröffnung löst als Up auf.
- Geografie
- Sperrt die USA.
- Doku
- docs.limitless.exchange
Fünf Schritte, vereinfacht. Wie bei Predict.fun ändern sich die exakten Pfade; die Form ist das, was zählt.
Mit der Wallet anmelden
from eth_account import Account from eth_account.messages import encode_defunct import requests BASE = "https://api.limitless.exchange" # in der Doku bestätigen acct = Account.from_key(PRIVATE_KEY) nonce = requests.get(f"{BASE}/auth/nonce", params={"address": acct.address}).json()["nonce"] sig = acct.sign_message(encode_defunct(text=nonce)).signature.hex() token = requests.post(f"{BASE}/auth/login", json={"address": acct.address, "signature": sig}).json()["token"] H = {"Authorization": f"Bearer {token}"}Das aktuelle Fenster finden
m = requests.get(f"{BASE}/markets/btc-updown-5m-1757500800", headers=H).json() print(m["resolvePrice"], m["metadata"]) # resolvePrice erscheint nach der AbrechnungDas Orderbuch lesen
book = requests.get(f"{BASE}/markets/{m['slug']}/orderbook", headers=H).json() best_ask, best_bid = book["asks"][0], book["bids"][0] if best_ask[0] - best_bid[0] > 0.08: pass # die meisten späten Fenster scheitern an diesem FilterDas späte Orderbuch ist oft 20 Cent breit. Ein Spread-Filter, der auf Polymarket funktioniert, blockiert hier fast jede Auslösung; entscheide vorher, ob du den breiteren Spread akzeptierst oder die Börse auslässt.
Einen Taker-Kauf platzieren
order = {"market": m["slug"], "outcome": "UP", "side": "BUY", "price": best_ask[0], "size": 30} signed = sign_order(order, acct) # die Doku zeigt das Typed-Data-Layout r = requests.post(f"{BASE}/orders", json=signed, headers=H).json()Fills von der Chain lesen
Jeder Fill ist ein Event auf Base. Ein Indexer wie HyperSync zieht die komplette Historie einer Wallet in Minuten, was auch der günstigste Weg ist, einen Konkurrenten zu prüfen.
fills = requests.get(f"{BASE}/fills", params={"address": acct.address}, headers=H).json()
Zwei Fakten, die die Rechnung ändern
- Die Kaufgebühr ist ein Prozentsatz des Preises, nicht p(1-p), also sind billige Kontrakte teuer zu kaufen und teure Kontrakte fast kostenlos. Der Break-even-Rechner auf der Startseite nutzt die veröffentlichte Kurve.
- Modelle, die auf Fill-Preisen statt auf ausführbaren Asks trainiert wurden, sahen in der Validierung hervorragend aus und verloren auf echten Orderbüchern. Bepreise die Down-Seite aus dem Down-Orderbuch, nie als eins minus dem Up-Ask.