Kurs budowy bota na Polymarket · Rozdział 11 z 32
Jak działają rynki NegRisk z wieloma wynikami na Polymarket: mechanika sumy-do-1, flaga negRisk w zleceniach CLOB, dlaczego nogi YES w ramach NegRisk nie są wymienne oraz najlepsze praktyki realizacji.
Co obejmuje ten rozdział
Rynki NegRisk to mechanizm Polymarket dla wzajemnie wykluczających się wydarzeń z wieloma wynikami - kandydaci w wyborach 2024, zwycięzca Premier League, drabinki turniejowe. Większość botów nie obsługuje ich poprawnie przy pierwszej próbie, ponieważ składanie zlecenia wymaga flagi, która po cichu jest pomijana, jeśli jej zabraknie. Ten rozdział omawia mechanikę oraz produkcyjną ścieżkę kodu.
To jest rozdział 11 z naszej 32-częściowej serii o budowie bota handlowego na Polymarket. Temat omawiamy szczegółowo w sekcjach poniżej. Treść główna dla każdej sekcji jest pisana i publikowana rozdział po rozdziale; odpowiedzi w FAQ oraz referencje są już gotowe i odzwierciedlają doświadczenie produkcyjne z uruchamiania naszego własnego bota handlowego.
- Co oznacza NegRisk (wzajemnie wykluczające się nogi YES)
- Dlaczego suma YES pozostaje blisko 1 USD
- Parametr neg_risk przy składaniu zlecenia
- Zabezpieczanie między nogami NegRisk
- Kiedy arbitraż na NegRisk działa (a kiedy nie)
- Przypadki brzegowe przy rozliczeniu
- Kod: złożenie zlecenia NegRisk
Co oznacza NegRisk (wzajemnie wykluczające się nogi YES)
NegRisk (skrót od „negative risk") to mechanizm Polymarket dla wydarzeń z wieloma wzajemnie wykluczającymi się wynikami - tylko jeden może rozliczyć się jako YES. Wybory prezydenckie 2024 były wydarzeniem z NegRisk: pozycja Trump-YES i pozycja Harris-YES nie mogą obie wypłacić.
Pod maską: pojedyncze wydarzenie NegRisk ma jeden nadrzędny question_id i N podrzędnych rynków, każdy z własnym YES/NO. Giełda wymusza sumę-do-1 wśród nóg YES przy rozliczeniu - dokładnie jedna rozlicza się na 1,0, a pozostałe na 0,0.
Z perspektywy bota noga YES każdego wyniku handluje jak osobny token, z własnym arkuszem zleceń i ceną. Flaga negRisk w składaniu zlecenia (poniżej) kieruje transakcję do kontraktu giełdy właściwego dla NegRisk; brak flagi wysyła zlecenie do standardowej giełdy CTF i cicho powoduje nieprawidłowe rozliczenie.
Dlaczego suma YES pozostaje blisko 1 USD
Arbitrażyści stale utrzymują sumę cen YES wśród wszystkich nóg NegRisk w pobliżu ≈ 1,0. Jeśli Trump-YES kosztuje 0,55, Harris-YES 0,40, a nie ma innych poważnych kandydatów, brakujące 0,05 to w przybliżeniu implikowane prawdopodobieństwo „jakiegokolwiek innego wyniku". Gdy brakująca część przekracza implikowane prawdopodobieństwo ogona, pojawia się okazja arbitrażowa: kup wszystkie nogi YES proporcjonalnie, suma jest niższa niż 1,0, zatrzymaj różnicę.
W praktyce arbitraż jest konkurencyjny - widoczne dyskonto to zwykle 1-2 centy na płynnych wydarzeniach i znika w ciągu minut od otwarcia. Arbitraż jest też ograniczony płynnością: możesz zablokować 1 tys. USD dyskonta, ale nie 20 tys. USD.
Większość botów nie robi arbitrażu NegRisk; handlują one pojedynczymi nogami i potrzebują flagi negRisk wyłącznie dla poprawności realizacji.
Parametr neg_risk przy składaniu zlecenia
W CLOB v2 SDK składanie zlecenia przyjmuje obiekt flags z wartością logiczną negRisk. Wartość musi odpowiadać typowi rynku:
// 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
);
Flaga jest też parametrem w sygnaturze operacji demona, z której korzysta większość produkcyjnych botów:
{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }
Źródło prawdy: market.negRisk z Gamma API. Zawsze to odczytuj; nigdy nie koduj na sztywno. Rynek BTC w górę/w dół ma negRisk: false (binarny); rynek zwycięzcy turnieju ma negRisk: true (wielowynikowy). Pomylenie tych wartości wysyła zlecenia do złej giełdy i powoduje błędy transferu przy rozliczeniu.
Zabezpieczanie między nogami NegRisk
Jeśli trzymasz Trump-YES po 0,50 i chcesz zabezpieczyć się przed porażką Trumpa, w ramach NegRisk masz dwie opcje.
Kup konkurencyjną nogę NO (np. Harris-NO po 0,45). To wypłaca, jeśli Harris przegra, co obejmuje zwycięstwo Trumpa. Asymetryczne - wypłata, gdy Trump wygrywa, ale bezwartościowe, jeśli Trump przegrywa z trzecim kandydatem.
Kup wszystkie konkurencyjne nogi YES proporcjonalnie. Jeśli twój portfel jest w pełni zbalansowany wśród nóg NegRisk, ekspozycja jest zabezpieczona: dokładnie jedna noga wypłaci. To jest pozycja syntetycznej gotówki.
Instrument zabezpieczający, który NIE działa zgodnie z oczekiwaniami: noga NO na twoim istniejącym rynku. Trump-NO jest skorelowany z innymi nogami YES, ale nie idealnie - jeśli rozliczenie to „Other", zarówno Trump-YES, jak i Trump-NO spadają do 0. Nogi NegRisk nie są czystymi binarnymi instrumentami.
Kiedy arbitraż na NegRisk działa (a kiedy nie)
Arbitraż NegRisk typu „suma mniejsza niż 1,0" działa, gdy spełnione są trzy warunki.
- Wszystkie nogi płynne: każda noga, którą musisz kupić, ma co najmniej 1 tys. USD głębokości po cenie, której potrzebujesz. Arbitraż wymaga jednoczesnego wejścia w kilka arkuszy zleceń; jedna mało płynna noga psuje całą transakcję.
- Spread wystarczająco ciasny: łączny koszt spreadu wśród wszystkich nóg musi być mniejszy niż dyskonto. Pięć nóg ze spreadem 0,5c każda to 2,5c kosztu; jeśli dyskonto wynosi 1,5c, arbitraż jest ujemny.
- Możesz trzymać do rozliczenia: arbitraż NegRisk to arbitraż rozliczeniowy. Otrzymujesz wypłatę, gdy nadrzędne wydarzenie zostanie rozliczone; jeśli to za 6 miesięcy, twój kapitał jest zamrożony.
Dla 95% botów arbitraż NegRisk nie jest strategią. Pozostałe strategie handlują pojedynczymi nogami, a flaga negRisk istnieje tylko po to, aby zlecenie zostało poprawnie skierowane.
Przypadki brzegowe przy rozliczeniu
Dwa przypadki brzegowe, o których trzeba pamiętać, trzymając pozycje NegRisk do rozliczenia.
Wyniki „żaden z powyższych": niektóre wydarzenia NegRisk zawierają jawną nogę „Other" lub „None of the above". Jeśli rzeczywista odpowiedź nie pasuje do żadnej nazwanej nogi, to ona wygrywa. Boty, które nie modelują jawnej nogi Other, czasem traktują ją jako przypadek zdegenerowany i tracą wypłatę.
Sporne rozliczenia: rozliczenie NegRisk przechodzi przez UMA jak każdy inny rynek. Jeśli jest sporne, rynek może pozostać nierozliczony przez 24-72 godziny. W tym oknie interfejs może pokazywać „resolved", podczas gdy wypłaty on-chain jeszcze nie są ustawione. Odczyt payoutNumerators z kontraktu CTF to jedyny bezpieczny sposób potwierdzenia.
Kod: złożenie zlecenia NegRisk
Pełny przykład Node składający zakup nogi YES w 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);
Najczęstszy błąd nowych twórców: pominięcie negRisk: true na rynku NegRisk. Zlecenie zostaje przyjęte przez CLOB, ale rozliczenie kończy się niepowodzeniem. Zawsze czytaj market.negRisk z Gamma i przekazuj tę wartość dalej; nigdy nie zgaduj na podstawie tytułu pytania.



