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.

Questions fréquemment posées

Un bot retail peut-il vraiment gagner de l'argent en market-making sur Polymarket?
Parfois, sur certains marchés. Le maker rebate (20-25% des taker fees) plus un spread de 1 à 3 cents par round trip peut se cumuler en un vrai rendement. Mais sur Polymarket, le news flow peut déplacer un marché de plus de 20 cents en quelques secondes - un market maker sans flux d'actualité rapide se fait adverse selected. Le plus adapté est aux marchés sportifs liquides avant le match et pendant les périodes avec peu de news.
À quelle largeur dois-je coter sur Polymarket?
Au minimum, le spread nécessaire pour couvrir le pire adverse-selection attendu. Pour les sports/politiques liquides: 1 à 3 cents de chaque côté du mid. Pour les marchés peu profonds: 5 cents ou plus. Si vous ne pouvez pas coter assez serré pour concurrencer les autres makers tout en restant assez large pour survivre aux moves, le marché n'est pas market-makeable pour vous.
Quels limites d'inventory dois-je fixer?
Fixez une hard cap d'inventory par marché à 50-200 USD jusqu'à ce que vous ayez prouvé la rentabilité pendant plusieurs mois. Skewez les quotes pour ramener l'inventory vers le neutre - si vous accumulez du Yes, baissez votre bid Yes et baissez votre ask No pour encourager les achats de No en retour. Ne laissez jamais un seul marché représenter plus de 20% de votre bankroll.
Ai-je besoin d'un VPS rapide pour market-maker Polymarket?
Oui. Le market making est la stratégie Polymarket la plus sensible à la latence. Un VPS instable produit des quotes obsolètes qui se font ramasser. Nous utilisons TradingVPS pour nos bots MM précisément parce que le jitter y est constamment faible. Le cloud commodity (DO/Vultr) fonctionne pour du paper trading MM mais pas en live.
En quoi le Polymarket MM est-il différent du crypto MM?
Deux grandes différences: (1) Polymarket a des hard outcome events (news, finales sportives) qui peuvent faire bouger le prix de 30 à 100 cents instantanément - beaucoup plus violemment que la crypto. (2) Les marchés Polymarket se résolvent à terme, donc contrairement aux paires crypto, les positions de MM ont une expiration ferme. Les deux vous poussent vers des holds plus courts et des limites de risk plus strictes.
Puis-je faire du market-making sur les marchés crypto 5 minutes de Polymarket?
C'est possible mais très difficile. Les marchés 5 minutes voient environ 288 expirations par jour et par pair, sont dominés par des bots plus rapides et ont des spreads plus serrés. La plupart des bots MM retail y perdent de l'argent à cause de l'adverse selection. Nous couvrons correctement la stratégie crypto 5 minutes au chapitre 23 de cette série.