Polymarket Bot Tutorial · Chapter 11 of 32
Polymarket-এ NegRisk multi-outcome market কীভাবে কাজ করে: sum-to-1 mechanics, CLOB orders-এ negRisk flag, কেন NegRisk জুড়ে YES legs একে অপরের সাথে interchangeable নয়, এবং execution-এর best practices।
এই chapter-এ কী covered আছে
NegRisk markets হলো Polymarket-এর mechanism, যা mutually exclusive multi-outcome events-এর জন্য ব্যবহৃত হয় - যেমন 2024 election candidates, Premier League winner, tournament brackets। বেশিরভাগ bots প্রথম চেষ্টায় এগুলো সঠিকভাবে handle করতে পারে না, কারণ order placement-এর জন্য একটি flag লাগে, যা missing থাকলে silently drop হয়ে যায়। এই chapter-এ mechanics এবং production code path covered আছে।
- NegRisk কী বোঝায় (mutually exclusive Yes legs)
- কেন YES totals 1 USD-এর কাছাকাছি থাকে
- Order placement-এ neg_risk parameter
- NegRisk legs জুড়ে hedging
- কখন NegRisk arb কাজ করে (আর কখন করে না)
- Resolution edge cases
- Code: একটি NegRisk order place করা
NegRisk কী বোঝায় (mutually exclusive Yes legs)
NegRisk ("negative risk" এর সংক্ষিপ্ত রূপ) হলো এমন events-এর জন্য Polymarket-এর mechanism, যেখানে multiple mutually exclusive outcomes থাকে - শুধুমাত্র একটি outcome YES resolve করতে পারে। 2024 Presidential Election ছিল NegRisk-সহ একটি event: একটি Trump-YES position এবং একটি Harris-YES position উভয়ই payout করতে পারে না।
ভেতরে ভেতরে: একটি single NegRisk event-এর একটি parent question_id থাকে এবং Nটি child market থাকে, প্রতিটির নিজস্ব YES/NO থাকে। Exchange resolution-এ YES legs জুড়ে sum-to-1 enforce করে - ঠিক একটি 1.0-এ resolve হয় এবং বাকিগুলো 0.0-এ।
একটি bot-এর দৃষ্টিকোণ থেকে, প্রতিটি outcome-এর YES leg নিজস্ব token হিসেবে trade করে, নিজস্ব book ও price সহ। Order placement-এ negRisk flag (নিচে) trade-টিকে NegRisk-specific exchange contract-এ route করে; এটি missing থাকলে standard CTF exchange-এ যাবে এবং settlement-এ সঠিকভাবে resolve হবে না।
কেন YES totals 1 USD-এর কাছাকাছি থাকে
Arbitrageurs ধারাবাহিকভাবে সব NegRisk legs-এর YES prices-এর sum-কে ≈ 1.0-এর কাছাকাছি রাখে। যদি Trump-YES হয় 0.55, Harris-YES হয় 0.40, এবং অন্য কোনো competitive candidate না থাকে, তবে missing 0.05 আনুমানিক "any other outcome" এর implied probability। Missing slice যখন implied tail probability-কে ছাড়িয়ে যায়, তখন একটি arb opportunity তৈরি হয়: সব YES legs proportionally buy করুন, sum 1.0-এর কমে lock করুন, পার্থক্যটি নিশ্চিত করুন।
বাস্তবে arb খুবই competitive - liquid events-এ visible discount সাধারণত 1-2 cents, এবং opening-এর কয়েক মিনিটের মধ্যেই gone হয়ে যায়। Arb liquidity-boundও বটে: আপনি $1k discount lock করতে পারেন, কিন্তু $20k নয়।
বেশিরভাগ bots NegRisk arb করছে না; তারা individual legs trade করছে এবং execution correctness-এর জন্য শুধু negRisk flag respect করতে হয়।
Order placement-এ neg_risk parameter
CLOB v2 SDKs-এ order placement একটি flags object নেয়, যেখানে boolean negRisk থাকে। এর value market type-এর সাথে match করতে হবে:
// 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
);
এই flag daemon op signature-এও একটি parameter, যা বেশিরভাগ production bots ব্যবহার করে:
{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }
Source of truth: Gamma API থেকে market.negRisk। সবসময় এটি read করুন; কখনও hardcode করবেন না। BTC-up/down market হলো negRisk: false (binary); tournament-winner market হলো negRisk: true (multi-outcome)। wires cross করলে order ভুল exchange-এ যায় এবং settlement-এ transfer failure তৈরি করে।
NegRisk legs জুড়ে hedging
যদি আপনার কাছে 0.50-এ Trump-YES থাকে এবং আপনি Trump loss-এর বিরুদ্ধে hedge করতে চান, তাহলে NegRisk-এর মধ্যে দুটি option আছে।
একটি competing NO leg buy করুন (যেমন Harris-NO at 0.45)। এটি Harris হারলে payout করে, যার মধ্যে Trump জেতাও অন্তর্ভুক্ত। Asymmetric - Trump জিতলে payoff আছে, কিন্তু Trump কোনো third candidate-এর কাছে হারলে worthless।
সব competing YES legs buy করুন proportion অনুযায়ী। যদি আপনার portfolio NegRisk legs জুড়ে fully balanced থাকে, তাহলে আপনার exposure hedged: ঠিক একটি payout করবে। এটিই synthetic-cash position।
যে hedging instrumentটি expected মতো কাজ করে না: আপনার existing market-এর একটি NO leg। Trump-NO অন্য YES legs-এর সাথে correlated, কিন্তু perfectly নয় - যদি resolution হয় "Other", তাহলে আপনার Trump-YES এবং আপনার Trump-NO দুটোই 0-এ যাবে। NegRisk legs pure binaries নয়।
কখন NegRisk arb কাজ করে (আর কখন করে না)
"sum to less than 1.0" ধরনের NegRisk arb তখনই কাজ করে, যখন তিনটি শর্ত পূরণ হয়।
- সব legs liquid: আপনি যেসব leg buy করতে চান, প্রতিটির price-এ অন্তত $1k depth থাকতে হবে। Arb-এ একসাথে multiple books hit করতে হয়; একটি illiquid leg পুরো trade ভেঙে দেয়।
- Spread যথেষ্ট tight: সব legs জুড়ে cumulative spread-tax discount-এর চেয়ে কম হতে হবে। পাঁচটি leg-এ প্রত্যেকটিতে 0.5c spread হলে মোট cost 2.5c; discount যদি 1.5c হয়, তবে arb negative।
- আপনি resolution পর্যন্ত hold করতে পারবেন: NegRisk arb হলো settlement arb। Parent event resolve হলে আপনি payout পান; যদি তা 6 মাস পরে হয়, তাহলে আপনার capital locked থাকে।
95% bots-এর জন্য NegRisk arb strategy নয়। বাকি strategies individual legs trade করে, এবং negRisk flag শুধুমাত্র order সঠিকভাবে route হওয়া নিশ্চিত করার জন্য থাকে।
Resolution edge cases
Resolution-এর মাধ্যমে NegRisk positions hold করার সময় দুটি edge case মাথায় রাখতে হবে।
"None of the above" outcomes: কিছু NegRisk event-এ explicit "Other" বা "None of the above" leg থাকে। যদি actual answer কোনো named leg-এর সাথে না মেলে, তাহলে এটিই winner। যেসব bots explicit Other leg model করে না, তারা কখনও এটিকে degenerate case ধরে payout miss করে।
Disputed resolutions: অন্য যেকোনো market-এর মতো NegRisk resolution-ও UMA-এর মাধ্যমে যায়। Dispute হলে market 24-72 hours unresolved থাকতে পারে। এই window-তে front-end "resolved" দেখাতে পারে, অথচ on-chain payouts এখনো set হয়নি। নিশ্চিত হওয়ার safe way হলো CTF contract-এ payoutNumerators read করা।
Code: একটি NegRisk order place করা
একটি NegRisk YES leg buy করার full Node example।
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);
নতুন builders-এর জন্য সবচেয়ে common bug: NegRisk market-এ negRisk: true বাদ দেওয়া। Order CLOB দ্বারা accepted হয়, কিন্তু settlement fail করে। সবসময় Gamma থেকে market.negRisk read করে সেটি pass করুন; question title দেখে আন্দাজের ওপর কখনও ভরসা করবেন না।












