Polymarket Bot Tutorial · Hoofdstuk 11 van 32
Hoe NegRisk multi-outcome markten werken op Polymarket: sum-to-1 mechanics, de negRisk flag in CLOB orders, waarom YES legs over NegRisk niet uitwisselbaar zijn en best practices voor executie.
Wat dit hoofdstuk behandelt
NegRisk markten zijn Polymarkets mechanisme voor wederzijds exclusieve multi-outcome events — de 2024-verkiezingskandidaten, de Premier League-winnaar, toernooi-brackets. De meeste bots falen ze correct te hanteren bij de eerste poging omdat de order-plaatsing een flag vereist die stil wordt gedropt als hij ontbreekt. Dit hoofdstuk behandelt de mechanics en het productie-codepad.
Dit is hoofdstuk 11 van onze 32-delige serie over het bouwen van een Polymarket trading bot. We behandelen het onderwerp in detail in de secties hieronder. De body content voor elke sectie wordt geschreven en hoofdstuk-per-hoofdstuk uitgerold; FAQ-antwoorden en referenties zijn al compleet en weerspiegelen production-ervaring van het draaien van onze eigen trader.
- Wat NegRisk betekent (wederzijds exclusieve Yes legs)
- Waarom YES-totalen dichtbij 1 USD blijven
- De neg_risk parameter in order-plaatsing
- Hedgen over NegRisk legs
- Wanneer NegRisk arb werkt (en wanneer niet)
- Resolution edge cases
- Code: plaats een NegRisk order
Wat NegRisk betekent (wederzijds exclusieve Yes legs)
NegRisk (kort voor "negative risk") is Polymarkets mechanisme voor events met meerdere wederzijds exclusieve uitkomsten — slechts één kan YES resolven. De Presidential Election 2024 was één event met NegRisk: een Trump-YES positie en een Harris-YES positie kunnen niet beide uitbetalen.
Onder de motorkap: een enkele NegRisk event heeft één parent question_id en N child markten, elk met eigen YES/NO. De exchange dwingt sum-to-1 af over de YES legs bij resolution — precies één resolved naar 1,0 en de rest naar 0,0.
Vanuit het perspectief van een bot trade de YES leg van elke outcome als eigen token, met eigen book en prijs. De negRisk flag in order-plaatsing (hieronder) routeert de trade naar het NegRisk-specifieke exchange contract; hem missen stuurt naar het standaard CTF exchange en faalt stil correct te settelen.
Waarom YES-totalen dichtbij 1 USD blijven
Arbitrageurs houden de som van YES-prijzen over alle NegRisk legs continu op ≈ 1,0. Als Trump-YES 0,55 is en Harris-YES 0,40 en er geen andere competitieve kandidaten zijn, is de ontbrekende 0,05 ongeveer de geïmpliceerde probability van "elke andere uitkomst." Wanneer de ontbrekende slice de geïmpliceerde tail-probability overstijgt, bestaat een arb-kans: koop alle YES legs proportioneel, sommeer tot minder dan 1,0, lock het verschil in.
In de praktijk is de arb competitief — de zichtbare discount is meestal 1-2 cent op liquide events, weg binnen minuten na opening. De arb is ook liquidity-bound: je kunt 1k $ aan discount inlocken maar geen 20k $.
De meeste bots doen geen NegRisk arb; ze traden individuele legs en moeten de negRisk flag respecteren voor executie-correctheid.
De neg_risk parameter in order-plaatsing
In CLOB v2 SDK's neemt order-plaatsing een flags-object met een boolean negRisk. De waarde moet matchen met het market-type:
// 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
);
De flag is ook een parameter in de daemon op-signature die de meeste productie-bots gebruiken:
{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }
Source of truth: market.negRisk uit de Gamma API. Lees hem altijd; hardcode nooit. Een BTC-up/down markt is negRisk: false (binary); een tournament-winner markt is negRisk: true (multi-outcome). De draden kruisen stuurt orders naar het verkeerde exchange en produceert transfer-failures bij settlement.
Hedgen over NegRisk legs
Als je Trump-YES op 0,50 houdt en wilt hedgen tegen een Trump-verlies, bestaan binnen NegRisk twee opties.
Koop een concurrerende NO leg (bijv. Harris-NO op 0,45). Dit betaalt uit als Harris verliest, wat Trump-winnen omvat. Asymmetrisch — payoff als Trump wint maar waardeloos als Trump verliest van een derde kandidaat.
Koop alle concurrerende YES legs in proportie. Als je portfolio volledig in balans is over de NegRisk legs, is je exposure gehedged: precies één zal uitbetalen. Dit is de synthetische-cash positie.
Het hedging-instrument dat NIET werkt zoals verwacht: een NO leg op je bestaande markt. Trump-NO is gecorreleerd met de andere YES legs maar niet perfect — als de resolution "Other" is gaan je Trump-YES en je Trump-NO beide naar 0. NegRisk legs zijn geen pure binaries.
Wanneer NegRisk arb werkt (en wanneer niet)
De NegRisk arb van "som tot minder dan 1,0" werkt wanneer drie condities gelden.
- Alle legs liquide: elke leg die je moet kopen heeft minstens 1k $ aan depth op de prijs die je nodig hebt. Arb vereist meerdere books gelijktijdig raken; één illiquide leg breekt de hele trade.
- Spread strak genoeg: de cumulatieve spread-tax over alle legs moet minder zijn dan de discount. Vijf legs op 0,5c spread elk is 2,5c aan kosten; als de discount 1,5c is, is de arb negatief.
- Je kunt vasthouden tot resolution: NegRisk arb is settlement arb. Je ontvangt payout wanneer het parent event resolved; als dat 6 maanden weg is, is je kapitaal vast.
Voor 95% van de bots is NegRisk arb niet de strategie. De overige strategieën traden individuele legs en de negRisk flag bestaat alleen om ervoor te zorgen dat de order correct routeert.
Resolution edge cases
Twee edge cases om bewust van te zijn bij het houden van NegRisk-posities tot aan resolution.
"None of the above"-uitkomsten: sommige NegRisk-events bevatten een expliciete "Other"- of "None of the above"-leg. Als het werkelijke antwoord met geen genoemde leg matcht, is dit de winnaar. Bots die de expliciete Other-leg niet modelleren behandelen het soms als een degeneratie en missen de payout.
Disputed resolutions: NegRisk-resolution gaat door UMA zoals elke andere markt. Bij dispute kan de markt 24-72 uur onopgelost blijven. Tijdens dit venster kan de front-end "resolved" tonen terwijl de on-chain payouts nog niet zijn gezet. Het lezen van payoutNumerators op het CTF-contract is de enige veilige manier om te bevestigen.
Code: plaats een NegRisk order
Volledig Node-voorbeeld dat een NegRisk YES leg buy plaatst.
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);
De enkele meest voorkomende bug voor nieuwe builders: negRisk: true weglaten op een NegRisk-markt. De order wordt geaccepteerd door de CLOB maar settlement faalt. Lees altijd market.negRisk uit Gamma en geef hem door; vertrouw nooit op gokken vanuit de vraagtitel.











