Polymarket Bot Tutorial · Chapitre 11 sur 32
Comment fonctionnent les marchés multi-outcomes NegRisk sur Polymarket : mécanisme sum-to-1, le flag negRisk dans les ordres CLOB, pourquoi les YES legs d’un NegRisk ne sont pas interchangeables, et les bonnes pratiques d’exécution.
Ce que couvre ce chapitre
Les marchés NegRisk sont le mécanisme de Polymarket pour les événements multi-outcomes mutuellement exclusifs - les candidats à l’élection de 2024, le vainqueur de la Premier League, les brackets de tournoi. La plupart des bots ne les gèrent pas correctement du premier coup, car le placement d’ordre nécessite un flag qui est supprimé silencieusement s’il manque. Ce chapitre couvre la mécanique et le chemin de code en production.
- Ce que signifie NegRisk (YES legs mutuellement exclusifs)
- Pourquoi les totaux YES restent proches de 1 USD
- Le paramètre neg_risk dans le placement d’ordre
- Hedging entre les legs NegRisk
- Quand l’arb NegRisk fonctionne (et quand il ne fonctionne pas)
- Cas limites de résolution
- Code : placer un ordre NegRisk
Ce que signifie NegRisk (YES legs mutuellement exclusifs)
NegRisk (abréviation de "negative risk") est le mécanisme de Polymarket pour les événements à outcomes multiples mutuellement exclusifs - un seul peut se résoudre YES. L’élection présidentielle de 2024 était un événement avec NegRisk : une position Trump-YES et une position Harris-YES ne peuvent pas toutes les deux générer un payout.
En coulisses : un seul événement NegRisk possède un parent question_id et N marchés enfants, chacun avec son propre YES/NO. L’exchange impose une contrainte sum-to-1 sur les YES legs à la résolution - exactement un se résout à 1.0 et les autres à 0.0.
Du point de vue d’un bot, le YES leg de chaque outcome se négocie comme son propre token, avec son propre book et son propre prix. Le flag negRisk dans le placement d’ordre (ci-dessous) route le trade vers le contrat d’exchange spécifique NegRisk ; s’il manque, l’ordre est envoyé au CTF exchange standard et échoue silencieusement à se régler correctement.
Pourquoi les totaux YES restent proches de 1 USD
Les arbitragistes maintiennent en continu la somme des prix YES sur tous les legs NegRisk à ≈ 1.0. Si Trump-YES est à 0.55 et Harris-YES à 0.40 et qu’il n’y a pas d’autres candidats compétitifs, le 0.05 manquant représente approximativement la probabilité implicite de "tout autre outcome". Lorsque la portion manquante dépasse la probabilité implicite de la queue, une opportunité d’arb existe : acheter tous les legs YES proportionnellement, sommer à moins de 1.0, verrouiller la différence.
En pratique, l’arb est compétitif - la remise visible n’est généralement que de 1 à 2 cents sur les événements liquides, et elle disparaît en quelques minutes après l’ouverture. L’arb est aussi limité par la liquidité : vous pouvez verrouiller 1 k$ de remise, mais pas 20 k$.
La plupart des bots ne font pas d’arb NegRisk ; ils tradent des legs individuels et doivent respecter le flag negRisk pour que l’exécution soit correcte.
Le paramètre neg_risk dans le placement d’ordre
Dans les SDK CLOB v2, le placement d’ordre prend un objet flags avec un booléen negRisk. La valeur doit correspondre au type de marché :
// Node (CLOB v2)
await client.createAndPostOrder(
{ tokenID, price: 0.45, size: 10, side: Side.BUY },
{ tickSize: '0.01', negRisk: true }, // <-- TRUE for NegRisk
OrderType.FOK
);
Le flag est aussi un paramètre dans la signature de l’opération daemon que la plupart des bots en production utilisent :
{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }
Source de vérité : market.negRisk depuis l’API Gamma. Lisez-le toujours ; ne le hardcodez jamais. Un marché BTC-up/down est negRisk: false (binary) ; un marché de vainqueur de tournoi est negRisk: true (multi-outcome). Mélanger les deux envoie les ordres au mauvais exchange et provoque des échecs de transfert au règlement.
Hedging entre les legs NegRisk
Si vous détenez Trump-YES à 0.50 et que vous voulez vous couvrir contre une perte de Trump, deux options existent dans NegRisk.
Acheter un leg NO concurrent (par exemple Harris-NO à 0.45). Cela paie si Harris perd, ce qui inclut le fait que Trump gagne. Asymétrique - le payout se produit si Trump gagne, mais il est sans valeur si Trump perd face à un troisième candidat.
Acheter tous les legs YES concurrents proportionnellement. Si votre portefeuille est entièrement équilibré entre les legs NegRisk, votre exposition est couverte : exactement un paiera. C’est la position synthetic-cash.
L’instrument de hedging qui NE fonctionne pas comme attendu : un leg NO sur votre marché existant. Trump-NO est corrélé avec les autres legs YES mais pas parfaitement - si la résolution est "Other", votre Trump-YES et votre Trump-NO tombent tous deux à 0. Les legs NegRisk ne sont pas des binaires purs.
Quand l’arb NegRisk fonctionne (et quand il ne fonctionne pas)
L’arb NegRisk de "somme inférieure à 1.0" fonctionne lorsque trois conditions sont réunies.
- Tous les legs sont liquides : chaque leg que vous devez acheter a au moins 1 k$ de profondeur au prix requis. L’arb nécessite de taper plusieurs books simultanément ; un leg illiquide casse tout le trade.
- Spread suffisamment serré : le spread-tax cumulé sur tous les legs doit être inférieur à la remise. Cinq legs avec 0.5c de spread chacun, c’est 2.5c de coût ; si la remise est de 1.5c, l’arb est négatif.
- Vous pouvez tenir jusqu’à la résolution : l’arb NegRisk est un settlement arb. Vous recevez le payout lorsque l’événement parent se résout ; si cela prend 6 mois, votre capital est bloqué.
Pour 95 % des bots, l’arb NegRisk n’est pas la stratégie. Les stratégies restantes tradent des legs individuels et le flag negRisk existe uniquement pour garantir que l’ordre est routé correctement.
Cas limites de résolution
Deux cas limites à connaître lorsque vous détenez des positions NegRisk jusqu’à la résolution.
Résultats "None of the above" : certains événements NegRisk incluent un leg explicite "Other" ou "None of the above". Si la réponse réelle ne correspond à aucun leg nommé, c’est celui-ci qui gagne. Les bots qui ne modélisent pas le leg Other explicite le traitent parfois comme un cas dégénéré et ratent le payout.
Résolutions contestées : la résolution NegRisk passe par UMA comme n’importe quel autre marché. En cas de contestation, le marché peut rester non résolu pendant 24 à 72 heures. Pendant cette fenêtre, le front-end peut afficher "resolved" alors que les payouts on-chain ne sont pas encore définis. Lire payoutNumerators sur le contrat CTF est la seule manière sûre de confirmer.
Code : placer un ordre NegRisk
Exemple Node complet plaçant un buy d’un YES leg NegRisk.
import { ClobClient, Side, OrderType } from "@polymarket/clob-client-v2";
import { Wallet } from "ethers";
const c = new ClobClient({
host: "https://clob.polymarket.com", chain: 137,
signer: new Wallet(process.env.PRIVATE_KEY),
creds: { key: K, secret: S, passphrase: P },
signatureType: 2,
funderAddress: process.env.POLY_FUNDER,
});
// market.negRisk === true (verified via Gamma earlier)
const resp = await c.createAndPostOrder(
{ tokenID: "<YES_TOKEN_ID>", price: 0.42, size: 25, side: Side.BUY },
{ tickSize: "0.01", negRisk: true },
OrderType.FOK
);
console.log(resp.status, resp.orderID);
Le bug le plus courant pour les nouveaux builders : omettre negRisk: true sur un marché NegRisk. L’ordre est accepté par le CLOB mais le règlement échoue. Lisez toujours market.negRisk depuis Gamma et transmettez-le ; ne vous fiez jamais à une supposition à partir du titre de la question.














