Polymarket Bot Tutorial · Capitolo 11 di 32
Come funzionano i mercati multi-outcome NegRisk su Polymarket: meccanica sum-to-1, il flag negRisk negli ordini CLOB, perché i YES leg su NegRisk non sono intercambiabili e le best practice di execution.
Cosa copre questo capitolo
I mercati NegRisk sono il meccanismo di Polymarket per eventi multi-outcome mutuamente esclusivi — i candidati delle elezioni 2024, il vincitore della Premier League, i tabelloni dei tornei. La maggior parte dei bot non li gestisce correttamente al primo tentativo perché il placement dell'ordine richiede un flag che, se mancante, viene scartato silenziosamente. Questo capitolo copre la meccanica e il production code path.
Questo è il capitolo 11 della nostra serie in 32 parti su come costruire un trading bot per Polymarket. Trattiamo l'argomento in profondità nelle sezioni qui sotto. I contenuti principali di ciascuna sezione vengono scritti e pubblicati capitolo per capitolo; le risposte FAQ e i riferimenti sono già completi e riflettono l'esperienza in produzione maturata gestendo il nostro trader.
- Cosa significa NegRisk (YES leg mutuamente esclusivi]
- Perché i totali YES restano vicini a 1 USD
- Il parametro neg_risk nel placement degli ordini
- Hedging tra i leg NegRisk
- Quando l'arb NegRisk funziona (e quando no)
- Casi limite di resolution
- Code: piazzare un ordine NegRisk
Cosa significa NegRisk (YES leg mutuamente esclusivi]
NegRisk (abbreviazione di "negative risk") è il meccanismo di Polymarket per eventi con più outcome mutuamente esclusivi — solo uno può risolvere YES. Le elezioni presidenziali 2024 erano un evento con NegRisk: una posizione Trump-YES e una posizione Harris-YES non possono entrambe andare in payout.
Sotto il cofano: un singolo evento NegRisk ha un parent question_id e N mercati child, ciascuno con il proprio YES/NO. L'exchange applica il sum-to-1 tra i YES leg al momento della resolution — esattamente uno risolve a 1.0 e tutti gli altri a 0.0.
Dal punto di vista di un bot, il YES leg di ogni outcome viene scambiato come un token a sé stante, con il proprio book e il proprio prezzo. Il flag negRisk nel placement degli ordini (sotto) instrada il trade verso il contratto exchange specifico per NegRisk; se manca, l'ordine va al CTF exchange standard e non si settle correttamente, in modo silenzioso.
Perché i totali YES restano vicini a 1 USD
Gli arbitraggisti mantengono continuamente la somma dei prezzi YES su tutti i leg NegRisk a ≈ 1.0. Se Trump-YES è a 0.55 e Harris-YES è a 0.40 e non ci sono altri candidati competitivi, il 0.05 mancante è approssimativamente la probabilità implicita di "qualunque altro outcome". Quando la fetta mancante supera la probabilità implicita della coda, esiste un'opportunità di arb: comprare tutti i YES leg in proporzione, con somma inferiore a 1.0, e bloccare la differenza.
In pratica, l'arb è competitivo — lo sconto visibile è di solito 1-2 cent su eventi liquidi, e sparisce entro pochi minuti dall'apertura. L'arb è anche limitato dalla liquidità: puoi bloccare $1k di sconto ma non $20k.
La maggior parte dei bot non fa NegRisk arb; tradea singoli leg e deve rispettare il flag negRisk per un'execution corretta.
Il parametro neg_risk nel placement degli ordini
Negli SDK CLOB v2, il placement dell'ordine accetta un oggetto flags con un booleano negRisk. Il valore deve corrispondere al tipo di mercato:
// 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
);
Il flag è anche un parametro nella signature dell'operazione daemon che la maggior parte dei bot in produzione utilizza:
{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }
Source of truth: market.negRisk dalla Gamma API. Leggilo sempre; non hardcodarlo mai. Un mercato BTC up/down è negRisk: false (binary); un mercato sul vincitore di un torneo è negRisk: true (multi-outcome). Invertire i cavi invia gli ordini all'exchange sbagliato e provoca fallimenti nel transfer al settlement.
Hedging tra i leg NegRisk
Se tieni Trump-YES a 0.50 e vuoi coprirti contro una sconfitta di Trump, all'interno di NegRisk esistono due opzioni.
Compra un NO leg concorrente (per esempio Harris-NO a 0.45). Paga se Harris perde, il che include la vittoria di Trump. Asimmetrico — payoff se Trump vince, ma inutile se Trump perde contro un terzo candidato.
Compra tutti i YES leg concorrenti in proporzione. Se il tuo portafoglio è perfettamente bilanciato tra i leg NegRisk, la tua esposizione è hedged: esattamente uno andrà in payout. Questa è la synthetic-cash position.
Lo strumento di hedging che non funziona come previsto: un NO leg sul mercato che già possiedi. Trump-NO è correlato agli altri YES leg, ma non in modo perfetto — se la resolution è "Other", sia il tuo Trump-YES sia il tuo Trump-NO vanno a 0. I leg NegRisk non sono binary puri.
Quando l'arb NegRisk funziona (e quando no)
L'arb NegRisk del tipo "somma inferiore a 1.0" funziona quando sono vere tre condizioni.
- Tutti i leg hanno liquidità: ogni leg che devi comprare ha almeno $1k di depth al prezzo che ti serve. L'arb richiede di colpire più book contemporaneamente; un leg illiquido rompe l'intero trade.
- Spread abbastanza stretto: il costo cumulativo di spread-tax su tutti i leg deve essere inferiore allo sconto. Cinque leg con spread da 0.5c ciascuno fanno 2.5c di costo; se lo sconto è 1.5c, l'arb è negativo.
- Puoi tenere fino alla resolution: l'arb NegRisk è settlement arb. Ricevi il payout quando si risolve l'evento parent; se è tra 6 mesi, il tuo capitale resta bloccato.
Per il 95% dei bot, l'arb NegRisk non è la strategia. Le strategie rimanenti tradeano singoli leg e il flag negRisk esiste solo per garantire che l'ordine venga instradato correttamente.
Casi limite di resolution
Due casi limite da tenere presenti quando si mantengono posizioni NegRisk fino alla resolution.
Outcome "None of the above": alcuni eventi NegRisk includono un leg esplicito "Other" o "None of the above". Se la risposta reale non corrisponde a nessun leg nominato, questo è il vincitore. I bot che non modellano il leg Other esplicito a volte lo trattano come un caso degenerato e perdono il payout.
Resolution contestate: la resolution di NegRisk passa attraverso UMA come qualsiasi altro mercato. Se contestato, il mercato può restare non risolto per 24-72 ore. Durante questa finestra, il front-end può mostrare "resolved" mentre i payout on-chain non sono ancora stati impostati. Leggere payoutNumerators sul contratto CTF è l'unico modo sicuro per confermarlo.
Code: piazzare un ordine NegRisk
Esempio completo in Node che piazza un buy sul YES leg di 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);
Il bug singolo più comune per chi inizia: omettere negRisk: true su un mercato NegRisk. L'ordine viene accettato dal CLOB ma il settlement fallisce. Leggi sempre market.negRisk da Gamma e passalo attraverso; non affidarti mai all'interpretazione del titolo della domanda.











