
- Auth
- Signature de portefeuille ; les ordres sont des messages signés qui se règlent sur Base.
- Lecture
- REST pour les marchés et les carnets ; les instantanés de carnet contiennent les conditions du programme de liquidité.
- Trading
- Ordres limite signés ; les exécutions sont des événements on-chain.
- Frais taker
- Environ 3 pour cent à 50 cents, tombant sous 0,5 pour cent près de 1.00, payés en tokens d'issue. Les makers ne paient rien.
- Règlement
- Moyenne d'oracle de 60 secondes ; une clôture égale ou supérieure à l'ouverture se résout en Up.
- Géographie
- Bloque les États-Unis.
- Docs
- docs.limitless.exchange
Cinq étapes, simplifiées. Comme pour Predict.fun, les chemins exacts changent ; c'est la forme qui compte.
Se connecter avec le portefeuille
from eth_account import Account from eth_account.messages import encode_defunct import requests BASE = "https://api.limitless.exchange" # à confirmer dans la documentation 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}"}Trouver la fenêtre en cours
m = requests.get(f"{BASE}/markets/btc-updown-5m-1757500800", headers=H).json() print(m["resolvePrice"], m["metadata"]) # resolvePrice apparaît après le règlementLire le carnet
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 # la plupart des fenêtres tardives échouent à ce filtreLe carnet de fin de fenêtre est souvent large de 20 cents. Un filtre de spread qui fonctionne sur Polymarket bloque presque chaque déclenchement ici ; décidez à l'avance si vous acceptez le spread plus large ou si vous sautez l'exchange.
Passer un achat taker
order = {"market": m["slug"], "outcome": "UP", "side": "BUY", "price": best_ask[0], "size": 30} signed = sign_order(order, acct) # la documentation montre la structure typed-data r = requests.post(f"{BASE}/orders", json=signed, headers=H).json()Lire les exécutions depuis la chaîne
Chaque exécution est un événement sur Base. Un indexeur comme HyperSync récupère l'historique complet d'un portefeuille en quelques minutes, ce qui est aussi la façon la moins chère d'auditer un concurrent.
fills = requests.get(f"{BASE}/fills", params={"address": acct.address}, headers=H).json()
Deux faits qui changent le calcul
- Les frais d'achat sont un pourcentage du prix, pas p(1-p), donc les contrats bon marché coûtent cher à l'achat et les contrats chers sont presque gratuits. Le calculateur de seuil de rentabilité sur la page d'accueil utilise la courbe publiée.
- Les modèles entraînés sur les prix d'exécution plutôt que sur les asks exécutables avaient l'air excellents en validation et ont perdu sur les vrais carnets. Fixez le prix du côté down à partir du carnet down, jamais comme un moins l'ask up.