Polymarket Bot Tutorial · Chapitre 13 sur 32
Market making sur Polymarket: comment coter le bid et l'ask, capter le spread, gagner des maker rebates (20-25% des taker fees), le math du risk d'inventory, et quand le MM fonctionne sur les prediction markets.
Ce que couvre ce chapitre
Le market making sur Polymarket consiste à coter en continu les deux côtés d'un market book et à gagner le spread à chaque round trip. La stratégie est bien comprise dans la finance traditionnelle ; les particularités propres à Polymarket sont le maker-rebate program et le profil d'adverse selection des prediction markets, qui est plus élevé que sur les plateformes de CFD. Ce chapitre présente le math sans détour.
- Market making en français simple
- L'avantage du spread + rebate
- Risk d'inventory et skew
- Quand le MM fonctionne sur Polymarket (et quand non)
- Code skeleton: coter les deux côtés à +/- N cents
- Ajuster les quotes selon le news flow
- Couper le bot quand l'adverse selection explose
Market making en français simple
Un market maker cote en continu à la fois un prix d'achat (bid) et un prix de vente (ask), plus larges que le mid d'un spread fixe. Quand quelqu'un tape le bid, le maker achète à bon prix ; quand quelqu'un lift l'ask, le maker vend cher ; la différence entre le bid et l'ask constitue le revenu du maker par round trip.
La stratégie est pilotée par le order flow, pas par une direction. Le maker n'émet aucun avis sur le fait que le YES l'emportera ; il parie simplement que le flow va continuer et que le spread continuera d'être payé.
Le risque est l'adverse selection: les personnes qui tapent votre bid ont une information que vous n'avez pas. Avec le temps, les profits du MM dépendent de savoir si le spread est assez large pour compenser le slippage causé par les traders informés.
L'avantage du spread + rebate
Deux sources de revenus pour un maker Polymarket.
Spread capture: coter un bid à 0.45 et un ask à 0.47 autour d'un mid à 0.46. Chaque fill sur le bid que vous pouvez ensuite sortir à l'ask rapporte 2 cents. Le net edge dépend du déséquilibre des fills et du price drift.
Maker rebate: le liquidity-rewards program de Polymarket verse un rebate par part sur les maker fills dans les marchés éligibles. Les chiffres évoluent ; vérifiez la page officielle des rewards pour les valeurs actuelles. Le rebate est payé en pUSD périodiquement, séparément du trade lui-même.
Pour la plupart des marchés, la spread capture est la source de revenus la plus importante. Le rebate devient significatif lorsque vous pouvez coter des marchés larges (année électorale, grands playoffs sportifs) où Polymarket augmente les rebates pour attirer la liquidité.
Risk d'inventory et skew
Un MM qui se fait régulièrement taper sur le bid accumule une position longue. Le risque est que le mid baisse alors que l'inventory est longue ; le maker réalise alors une perte sur la position, même après les revenus du spread.
Les défenses: quote skew (baisser le bid lorsque l'inventory est longue, remonter l'ask lorsque l'inventory est courte, afin de décourager les fills unilatéraux); inventory cap (arrêter de coter du côté où vous êtes déjà trop long); active rebalancing (parfois cross le spread pour réduire la position lorsque l'inventory atteint sa limite).
Le math: si 60% des fills sur le bid ne sortent jamais avant que le prix ne bouge de 2 cents à l'encontre, la stratégie perd de l'argent sur ces fills à elles seules. Skew agressivement lorsque le déséquilibre des fills est > 65/35.
Quand le MM fonctionne sur Polymarket (et quand non)
Le MM fonctionne sur Polymarket lorsque trois conditions sont réunies.
- Liquid book: assez de concurrence sur les quotes pour que votre spread soit compétitif mais pas nul. Les marchés de l'élection 2024, les grands matchs NFL/NBA, BTC up/down 5m, tout cela convient.
- Flux bidirectionnel: acheteurs et vendeurs actifs. Les marchés à sens unique (plus ou moins résolus à 0.95+) n'offrent rien à capter pour le maker.
- Mouvements de prix bornés: les spread captures sont mangés par des sauts de 5 cents. Les marchés stables en milieu de fourchette (0.40-0.60) sont les plus favorables.
Le MM échoue sur: les marchés driven by news où le mid bouge plus vite que vous ne pouvez re-quote; les books illiquides où vous êtes la seule quote et où le trade suivant remonte 5 levels; les marchés proches de la résolution où un côté converge vers 0 ou 1.
Code skeleton: coter les deux côtés à +/- N cents
Pseudocode pour le maker le plus simple viable.
SPREAD_CENTS = 2
INVENTORY_CAP_SHARES = 50
def make_loop(token_id):
while True:
book = fetch_book(token_id)
mid = (book.best_bid + book.best_ask) / 2
inv = chain_balance(token_id)
# Skew: pull the side we are too long on
bid_px = mid - SPREAD_CENTS/200 - (0.005 if inv > INVENTORY_CAP_SHARES * 0.6 else 0)
ask_px = mid + SPREAD_CENTS/200 + (0.005 if inv < -INVENTORY_CAP_SHARES * 0.6 else 0)
cancel_my_existing_quotes(token_id)
if inv < INVENTORY_CAP_SHARES:
place_gtc(token_id, side="BUY", price=bid_px, size=5)
if inv > -INVENTORY_CAP_SHARES:
place_gtc(token_id, side="SELL", price=ask_px, size=min(5, inv))
time.sleep(2)
Les makers en production ajoutent: le tracking de l'inventory par côté, un order of cancel-before-place, du jitter sur l'intervalle de re-quote pour éviter d'être prévisible, un kill-switch en cas d'adverse selection (section suivante).
Ajuster les quotes selon le news flow
Lorsqu'un news event survient, la fair value bouge avant vos quotes. Un MM qui ne retire pas ses quotes pendant le news flow se fait ramasser.
Le signal: un taux de cancel ou de fills entrants qui grimpe à environ 3x le baseline en moins de 30 secondes, ou une vérification croisée plus large de l'event stream (Polymarket Twitter/Discord, Bloomberg headline feed). Lorsqu'il est détecté, le maker retire toutes ses quotes pendant 60 à 120 secondes, laisse le nouveau mid se stabiliser, puis re-quote autour du nouveau centre.
L'implémentation la plus simple surveille le stream last-trade-price du token. Un saut de plus de 2 écarts-types par rapport à la moyenne de la fenêtre glissante déclenche une pause. Le bot se réengage lorsque le prix s'est stabilisé pendant 30 secondes ou plus.
Couper le bot quand l'adverse selection explose
La sortie d'urgence. Si le fill PnL du bot sur les 50 derniers fills devient nettement négatif, quelque chose ne va pas: soit le marché est désormais driven by news et vous ne devriez pas market make, soit votre spread est trop serré pour le niveau actuel d'adverse selection.
Conditions de kill à coder:
- 5 bid fills consécutifs sans ask fill, mid en baisse de > 1c depuis le premier fill.
- Realized PnL sur les 25 derniers round-trip fills inférieur à -25% de l'attendu.
- Déconnexion WebSocket ou stale book détecté.
- Inventory au cap d'un côté ou de l'autre pendant > 5 minutes.
Lorsqu'un seuil est déclenché, tout annuler, flatten l'inventory au market, puis suspendre pendant au moins 15 minutes. Un market maker qui n'a pas de kill switch perdra de l'argent pendant les périodes volatiles jusqu'à ce que le trader s'en rende compte manuellement - ce qui prend toujours plus de temps qu'on ne le pense.





