API · עיון
ה-CLOB (Central Limit Order Book) בכתובת clob.polymarket.com הוא המקום שבו פקודות
ממתינות ומתמזגות. אתם קוראים את ספר הפקודות, המחירים וגודל הטיק ללא אימות, וסוחרים
(ביצוע / ביטול פקודות, קריאת היתרה שלכם) עם פרטי הזדהות של API וחתימה.
זהו עיון ב-CLOB V2 - הבטוחה היא pUSD, העמלות הן און-צ׳יין,
ועושי שוק משלמים אפס.
קריאת ספר הפקודות (ללא אימות)
from py_clob_client_v2 import ClobClient # pip install py-clob-client-v2
client = ClobClient(host="https://clob.polymarket.com", chain_id=137) # read-only: no key
book = client.get_order_book(token_id)
mid = client.get_midpoint(token_id)
print(book.bids[0].price, book.asks[0].price, mid)
// polymarket_client_sdk_v2 (official, repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::request::OrderBookSummaryRequest;
let client = Client::new("https://clob.polymarket.com", Config::default())?;
let book = client.order_book(&OrderBookSummaryRequest::builder().token_id(token_id).build()).await?;
curl -s "https://clob.polymarket.com/book?token_id=$TOKEN_ID"
תגובה לדוגמה
{
"market": "0x...",
"bids": [ { "price": "0.62", "size": "1400" }, { "price": "0.61", "size": "900" } ],
"asks": [ { "price": "0.64", "size": "1100" }, { "price": "0.65", "size": "2000" } ]
}
endpoints לקריאה
| Endpoint | מחזיר |
|---|---|
GET /book?token_id= | ספר פקודות מלא (bids / asks). |
GET /price?token_id=&side= | ה-bid או ה-ask הטוב ביותר. |
GET /midpoint?token_id= | אמצע = (best bid + best ask) / 2. |
GET /spread?token_id= | best ask − best bid. |
GET /tick-size?token_id= | תוספת המחיר המינימלית (עגלו אליה את המחיר שלכם). |
המגבלות גבוהות: CLOB כ-9,000 בקשות / 10 שניות, /book ו-/price 1,500 / 10 שניות,
ובקשות מעבר למגבלה נחנקות, לא נדחות. עוד על 429.
ביצוע וביטול פקודה (אימות)
קריאה אחת בונה, חותמת (על מבנה הפקודה של V2) ומפרסמת את הפקודה שלכם. אתם בוחרים סוג פקודה:
| סוג | התנהגות |
|---|---|
GTC | Good-Till-Cancelled - ממתינה בספר הפקודות עד שתתמלא או תבוטל. |
GTD | Good-Till-Date - ממתינה עד חותמת זמן של פקיעה. |
FOK | Fill-Or-Kill - למלא את כל הפקודה מיד או לבטל אותה. |
FAK | Fill-And-Kill - למלא את מה שאפשר מיד, לבטל את השאר. |
from py_clob_client_v2 import (ClobClient, OrderArgs, OrderType,
PartialCreateOrderOptions, Side, OrderPayload)
# authenticated client (creds from create_or_derive_api_key - see Authentication)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PK, creds=creds)
resp = client.create_and_post_order(
order_args=OrderArgs(token_id=token_id, price=0.62, side=Side.BUY, size=10),
options=PartialCreateOrderOptions(tick_size="0.01", neg_risk=False), # read both off the market
order_type=OrderType.GTC, # GTC, GTD, FOK or FAK
)
# resp -> {"success": true, "orderID": "0x...", "status": "live"}
client.cancel_order(OrderPayload(orderID=resp["orderID"])) # cancel
tick_size האמיתי של
השוק ("0.01" או "0.001") והגדירו neg_risk=True לשווקי
"סיכון שלילי" רב-תוצאתיים - קראו את שניהם מ-Gamma (orderPriceMinTickSize,
negRisk) לפני החתימה. כמו כן: גודל הפקודה המינימלי הוא 5 מניות, והמחיר שלכם
חייב להיות כבר מעוגל לטיק אחרת הפקודה נדחית.nonce,
feeRateBps, taker ו-expiration והוסיף timestamp,
metadata ו-builder; גרסת דומיין ה-Exchange ב-EIP-712 היא "2".
העמלות נגבות און-צ׳יין בזמן ההתאמה - עושי שוק משלמים 0, רק לוקחים משלמים.
לפני מסחר עליכם לאשר pUSD + טוקנים מותנים לשלושת חוזי ה-V2
(ראו את תיקון ההרשאה).עמלות: רק לוקחים משלמים, והשיעור מתעקל
עושי שוק לעולם אינם מחויבים. לוקחים משלמים עמלה שאינה קבועה - היא מתכווננת עם אי-הוודאות של השוק ומשתנה לפי קטגוריה. הנוסחה:
fee = shares × feeRate × p × (1 - p) # p = share price, 0..1
האיבר p·(1-p) אומר שהעמלה שיאה ב-50/50 ומצטמצמת לקראת קצוות ה-1 סנט
וה-99 סנט - כך שתוצאה כמעט-ודאית זולה לקחת, והטלת מטבע יקרה. feeRate של לוקח לפי קטגוריה:
| קטגוריה | feeRate של לוקח |
|---|---|
| קריפטו | 0.07 (7 bps) - הגבוה ביותר |
| כלכלה / תרבות / מזג אוויר | 0.05 |
| פיננסים / פוליטיקה / טכנולוגיה / אזכורים | 0.04 |
| ספורט | 0.03 |
| גיאופוליטיקה ואירועי עולם | 0 - ללא עמלה |
קראו את השיעור החי לכל טוקן עם GET /fee-rate-bps?token_id= במקום לקבוע אותו בקוד קשיח; העמלות
מעוגלות ל-5 ספרות עשרוניות (מינימום 0.00001 pUSD). העובדה שעושי שוק משלמים אפס היא הסיבה שרוב הבוטים
חסרי-היתרון מצטטים במקום לקחת.
שווקי סיכון-שלילי (רב-תוצאתיים)
אירועים רב-מועמדים ("מי ינצח בבחירות?") הם שווקי neg-risk: התוצאות שלהם מקושרות, כך
שמניית No בתוצאה אחת מומרת למניית Yes בכל תוצאה אחרת דרך ה-Neg Risk Adapter -
יעיל-הון, אך שונה מכנית. הם רצים על חוזים שונים משווקים בינאריים, ולכן חובה
להעביר neg_risk=True באפשרויות הפקודה (קראו את דגל ה-negRisk של השוק מ-Gamma).
השמיטו אותו והפקודה תיחתם מול הבורסה השגויה ותידחה.
טוקנים מותנים: split, merge, redeem (מעבר לספר הפקודות)
מתחת לכל שוק נמצא ה-Conditional Token Framework (CTF). טוקני התוצאה הם טוקני ERC-1155, וכל זוג Yes/No מגובה בדיוק ב-1.00$ של pUSD הנעול בחוזה ה-CTF. זה נותן לכם שלושה פרימיטיבים שספר הפקודות לבדו אינו נותן:
| פעולה | מה היא עושה | מדוע בוט משתמש בה |
|---|---|---|
| Split | לנעול 1$ pUSD ← לטבוע 1 Yes + 1 No | ליצור מלאי בלי לחצות את המרווח; לצטט את שני הצדדים. |
| Merge | לשרוף 1 Yes + 1 No ← לשחזר 1$ pUSD | לצאת מזוג מגודר מיד - ללא המתנה להכרעה, ללא עמלת לוקח. |
| Redeem | אחרי הכרעה, טוקן מנצח ← 1.00$ pUSD | לפדות פוזיציה מוכרעת (redeemPositions). |
Split ו-merge הם הבסיס ל-ארביטראז' CTF: אם Yes + No נסחרים מתחת
ל-1.00$ בספר הפקודות, קנו את שניהם ו-merge חזרה ל-1.00$; אם הם נסחרים מעל 1.00$,
split של 1$ לזוג חדש ומכרו את שניהם. הפדיון מתיישב דרך חוזה ה-
ConditionalTokens ברגע שהאורקל מפרסם את התוצאה און-צ׳יין - פוזיציה מציגה
redeemable: true ב-Data API כשהיא ניתנת לתביעה.
מזהי פוזיציה נגזרים דרך getConditionId → getCollectionId → getPositionId.
מתקדם: RFQ ושווקי קומבו (לעושי שוק רציניים)
מעבר לספר הפקודות, פולימרקט מפעילה מערכת Request-for-Quote (RFQ), בשימוש במיוחד עבור שווקי קומבו - שווקים קיימים המקובצים לפוזיציות מורכבות רב-רגליות. לזרימה שלושה שלבים: לוקח מבקש ציטוט, עושי שוק מתחרים בציטוטים, ועושה השוק הנבחר מקבל מבט אחרון לאשר או לסרב לפני הביצוע.
- גילוי קומבואים:
GET /v1/rfq/combo-markets(ציבורי;limit1-100,cursor,exclude). כל קומבו חושף שני מזהי פוזיציה (Yes = אינדקס 0, No = אינדקס 1). - ציטוט כעושה שוק:
POST combos-rfq-api.polymarket.com/v1/maker/quotes(אימות L2). אתם מייצרים בעצמכם את ה-quote_id, ושולחיםrfq_id,maker_address,signature_type, פקודת Exchange חתומה, ו-price_e6/size_e6כ- מחרוזות נקודה-קבועה של שש ספרות עשרוניות (מוסכמת ה-*_e6מונעת אובדן דיוק float). - מבט אחרון: בזמן שה-RFQ הוא
AWAITING_MAKER_CONFIRMATION, השיבוCONFIRM,DECLINE, או תנו לוTIMED_OUT.
מכונת המצבים של RFQ: CREATED → COLLECTING_QUOTES → AWAITING_REQUESTER_ACCEPTANCE →
AWAITING_MAKER_CONFIRMATION → EXECUTING → FILLED (אחרת FAILED / EXPIRED / CANCELED / REJECTED). הירשמו
לשער ה-WebSocket של RFQ למצב חי. זה נישתי - רוב הבוטים צריכים רק את ספר הפקודות של CLOB למעלה - אך כך
נזילות רב-רגלית וקומבו מתומחרת.
בדיקת יתרה והרשאה
client.get_balance_allowance(...) # collateral (pUSD) and conditional-token allowances
אם זה מציג הרשאה אפס, אשרו pUSD/CTF לחוזי בורסת ה-V2 לפני ביצוע פקודות.
outcomes המפוענח (Gamma מחזיר אותו, ואת
clobTokenIds, כמחרוזות מקודדות-JSON שיש לפענח) ומפו לפי שם.הבא: אימות וארנקים · WebSocket: שידור ספר הפקודות · תיקון שגיאת CLOB.



