สร้างบอทสำหรับ Polymarket: สถาปัตยกรรมสำหรับสแกนเนอร์, การกำหนดขนาด, การดำเนินการ
คู่มือสำหรับนักพัฒนาในการสร้างบอท Polymarket: สแกนเนอร์ การกำหนดขนาดความเสี่ยง ตัวดำเนินการ และการมอนิเตอร์ พร้อมรายการอ้างอิง API และรูปแบบสถาปัตยกรรมที่ปฏิบัติได้จริง.
Build a Polymarket bot: scanner, sizing, execution, monitoring
เอกสารนี้อธิบายวิธีสร้างบอท Polymarket ที่สแกนตลาดอย่างต่อเนื่อง กำหนดขนาดตำแหน่ง ดำเนินการผ่าน CLOB และมอนิเตอร์ประสิทธิภาพ โดยเน้นสถาปัตยกรรมและรูปแบบสำหรับนักพัฒนาที่สามารถนำไปใช้ร่วมกับ API สาธารณะของ Polymarket และรูปแบบ Relayer.
ประเด็นสำคัญ
- ออกแบบบอทเป็นสี่บริการแยกกัน: scanner, sizer, executor, และ monitor.
- ใช้ Gamma และ CLOB APIs ของ Polymarket เพื่อดึงรายการตลาดและวางคำสั่ง; ใช้ WebSocket สำหรับอัปเดตหนังสือคำสั่งแบบเรียลไทม์.
- ให้ใช้คำสั่งตลาดแบบ FAK สำหรับการดำเนินการที่ต้องเร็ว แต่ต้องเผื่อสลิปเพจและค่าธรรมเนียมเสมอ.
- ติดตั้งการมอนิเตอร์และสวิตช์ฆ่าด่วนสำหรับกรณีข้อพิพาท oracle, ความล่าช้าในการชำระบัญชี, หรือการเติมคำสั่งที่ไม่คาดฝัน.
ทำไมต้องมีโครงสร้างนี้
ระบบการเทรดจะเข้าใจง่ายขึ้นเมื่อแยกความรับผิดชอบออกจากกัน Scanner ค้นหา edge ที่เป็นไปได้, sizer แปลง edge เป็นขนาดตำแหน่ง, executor วางคำสั่งผ่าน CLOB, และ monitor ตรวจสอบความถูกต้องและความปลอดภัย การแยกส่วนนี้ช่วยให้คุณสเกล ทดสอบ และพิจารณาความหน่วงและความเสี่ยงได้อย่างอิสระ.
H2: Data sources and APIs
เริ่มต่อเชื่อมปลายทางของ Polymarket เหล่านี้เข้ากับบริการของคุณ:
- Gamma (metadata ตลาด): https://gamma-api.polymarket.com — markets, events, tags, series. ใช้การแบ่งหน้าด้วย after_cursor; อย่าใช้ offset.
- CLOB (order book และการเทรด): https://clob.polymarket.com — การอ่าน orderbook เป็นสาธารณะ; การเทรดต้องมี API key + HMAC. SDK ของ CLOB ช่วยจัดการการวางคำสั่ง.
- Market WebSocket (หนังสือแบบเรียลไทม์): wss://ws-subscriptions-clob.polymarket.com/ws/market — สมัครรับข้อมูลสำหรับ book, price_change, best_bid_ask, และ tick_size_change. PING ทุก 10s.
- Data API (positions, open interest): https://data-api.polymarket.com สำหรับการวิเคราะห์หลังการเทรด.
บันทึกการออกแบบ: รวมรายการจาก Gamma เข้ากับฟีด WebSocket เพื่อการสแกนสดที่มีประสิทธิภาพ ให้เคารพขีดจำกัดอัตราเรียกของ Gamma (เช่น /markets) และข้อกำหนดคีย์ของ CLOB สำหรับการวางคำสั่ง.
H2: Scanner — finding candidate opportunities
หน้าที่
scanner ค้นหาโอกาสที่ตรงกับกลยุทธ์ของคุณ: สเปรด intra-market binary, ผลรวมของหลายผลลัพธ์, หรือรูปแบบ endgame ควรเป็น stateless, สเกลตามแนวนอนได้, และมุ่งคำนวณ raw edges.
อินพุตและความถี่
- สมัครรับ Market WebSocket พร้อม custom_feature_enabled: true เพื่อรับ best_bid_ask และการเปลี่ยนแปลง tick.
- ดึง backfill จาก Gamma /markets เมื่อพบ instrument ใหม่ครั้งแรกเพื่อรับ metadata และ outcomes.
- รักษา view เล็กในหน่วยความจำของ best asks/bids สำหรับแต่ละ outcome.
การคำนวณ edge
- Binary intra-market: คำนวณ edge = 1.00 - (bestAsk(YES) + bestAsk(NO)). edge ที่เป็นบวกคือผู้สมัคร.
- Multi-outcome: edge = 1.00 - sum(bestAsk(outcomes)).
เกณฑ์และตัวกรอง
- เกณฑ์ edge ขั้นต่ำ (เช่น > เซนต์ที่กำหนด) เพื่อครอบคลุมค่าธรรมเนียม taker และความเสี่ยงในการดำเนินการ.
- ตรวจสอบสภาพคล่องขั้นต่ำ: ความลึกที่ best ask ต้องพอสำหรับขนาดการเติมขั้นต่ำ.
- ตระหนักถึงขนาด tick: รับมือกับ tick_size_change — ความละเอียดราคาอาจเปลี่ยนเป็น $0.001 เมื่อเข้าใกล้ค่าสูงสุด/ต่ำสุด.
H2: Sizing — risk and capital allocation
เป้าหมาย
Sizing แปลง raw edge เป็นแผนการสั่งซื้อ: ซื้อกี่หุ้นต่อ outcome และจะแบ่งเป็นคำสั่งอย่างไรเพื่อลดสลิปเพจ.
ส่วนประกอบ
- ขีดจำกัดการเปิดรับความเสี่ยง: ขีดจำกัดการเปิดรับ pUSD ต่อ-ตลาดและระดับทั่วโลก.
- การกำหนดขนาดจำกัดด้วยความลึก: คำนวณปริมาณสะสมที่มีในระดับราคาถัดไปบนฝั่ง ask; กำหนดขนาดให้เท่ากับปริมาณที่ทำให้สลิปเพจคาดหวังอยู่ในขอบเขตที่ยอมรับได้.
- ค่าเผื่อค่าธรรมเนียม: หักค่าธรรมเนียม taker ที่คาดไว้ (ผันแปร, สูงสุดถึง 1.8% ในบางหมวด) จาก gross edge ก่อนตัดสินใจเทรด.
รูปแบบปฏิบัติ
- เริ่มด้วยการเติมแบบอนุรักษ์นิยม: ชอบหลายคำสั่ง FAK ขนาดเล็กแทนคำสั่งใหญ่เดียว เว้นแต่ว่าคุณควบคุมหนังสือได้.
- หากซื้อ complete set โดยใช้ CTF split/merge ให้รวมต้นทุนของการ split/merge (gas ถูกรับผิดชอบโดย Relayer) และการปัดเศษที่อาจเกิดจากขนาด tick.
H2: Executor — placing orders and handling fills
ประเภทคำสั่งและข้อจำกัด
- ใช้ endpoint การเทรดของ CLOB สำหรับการวางคำสั่ง: https://clob.polymarket.com. SDK ของ CLOB และ Relayer จัดการการดีพลอยวอลเล็ท การอนุญาต และการเซ็นคำสั่ง.
- สำหรับความเร็ว ให้ใช้ FAK (Fill-And-Kill) market orders เมื่อเหมาะสม FAK จะดำเนินการทันทีหรือยกเลิก; ช่วยหลีกเลี่ยงการเปิดรับที่ยังคงค้าง แต่สามารถถูก partial-fill ได้.
ลำดับการดำเนินการ
- เตรียม trade intent: รายการ token id ของ outcome และปริมาณเป้าหมายที่ส่งกลับโดย sizer.
- หากดำเนินการเป็น multi-outcome complete-set คุณอาจทำ CTF split (มินต์ complete set) แล้วค่อยขายแต่ละขา — Relayer และ SDK จะ abstra ct การปฏิบัติการ CTF.
- ยื่นคำสั่งผ่าน CLOB trading API พร้อม header การอ้างอิงหากคุณเป็นส่วนหนึ่งของ Builder Program.
- สังเกตการเติมจาก WebSocket last_trade_price และการอัปเดต best_bid_ask หรือจากการตอบกลับการเทรดของ CLOB.
ความปลอดภัยและการกระทบยอด
- ติดตาม partial fills และยกเลิกส่วนที่เหลือหรือปรับราคาใหม่ทันที.
- กระทบยอดยอดคงเหลือ CTF บน-chain (ผ่าน Data API) หลังการเติมเพื่อให้แน่ใจว่าคุณถือ outcome tokens ตามที่คาด.
- ใช้ idempotency keys และการจัดการ nonce สำหรับการลองคำสั่งซ้ำ.
H2: Monitoring and operational safety
สิ่งที่ต้องมอนิเตอร์
- อัตราการเติม, สลิปเพจเฉลี่ยเทียบกับที่คาดไว้, edge ที่ทำได้หลังหักค่าธรรมเนียม.
- ความหน่วงระหว่างการอัปเดต WebSocket กับการส่งคำสั่ง.
- เหตุการณ์ผิดปกติ: ข้อพิพาท UMA, tick_size_change, การหยุดให้บริการของ marketplace.
การแจ้งเตือนและสวิตช์ฆ่า
- soft kill อัตโนมัติ: หยุดวางคำสั่งใหม่เมื่อ P&L สุทธิที่ทำได้ต่ำกว่าขีดจำกัด หรือเมื่อสลิปเพจการเติมเกินขอบเขต.
- hard kill: หยุดการจราจรทั้งหมดทันทีถ้า UMA รายงานข้อพิพาทสำหรับตลาดที่คุณถือสถานะอยู่ หรือถ้า Relayer แจ้งปัญหาการชำระบัญชี.
บันทึกตรวจสอบและการสังเกต
- เก็บ intent ของคำสั่งทั้งหมด snapshot ตลาดดิบ และการเติมที่ดำเนินการ ใช้บันทึกเหล่านี้สำหรับ post-mortem และ backtesting.
- ติดแท็กบันทึกด้วย market id, condition_ids, และ request ids เพื่อจับคู่กับระเบียนของ Gamma และ CLOB.
H2: Builder Program, credentials, and rate limits
หากคุณวางแผนจะส่งคำสั่งพร้อมการอ้างอิง ให้เข้าร่วม Builder Program และจัดการคีย์ผ่านการตั้งค่าใน Polymarket. ชั้นของ Builder ควบคุมขีดจำกัด relayer ต่อวันและรางวัล สำหรับการเทรดผ่าน CLOB คุณจะต้องมี API key + HMAC และต้องเคารพอัตราจำกัดและโควต้าของ relayer.
H2: Common risks and mitigations
อย่าสมมติว่า edge ทางคณิตศาสตร์จะเป็นการันตี ความเสี่ยงที่ต้องคำนึงถึง:
- ความเสี่ยงการตัดสินผล: ข้อพิพาท UMA อาจหยุดหรือเปลี่ยนการจ่ายเงิน.
- สลิปเพจและ partial fills: FAK อาจถูก partial-fill; วางแผนรับมือการเปิดรับที่เหลือ.
- ค่าธรรมเนียม: ค่าธรรมเนียม taker แตกต่างตามหมวดและสามารถกัดกร่อน edge เล็กๆ (Geopolitics ไม่มีค่าธรรมเนียม).
- เวลาการชำระบัญชี: เวลาในการ redeem/merge และความล่าช้าของ oracle อาจกักทุนไว้.
- ความล้มเหลวของสมาร์ตคอนแทรกต์หรือ Relayer: เตรียม fallback และแจ้งเตือนให้คนรับทราบ.
ผลกระทบต่อการเทรดของคุณ
ออกแบบบอทให้แต่ละหน่วยการเทรดมีขนาดเล็ก สังเกตได้ และสามารถย้อนกลับภายในขอบเขตความเสี่ยงของคุณ การกำหนดขนาดแบบอนุรักษ์นิยม การมอนิเตอร์อย่างรวดเร็ว และเงื่อนไขการฆ่าที่ชัดเจนจะลดความเสี่ยงช่วงหาง ใช้ Gamma และ CLOB endpoints เพื่อสถานะตลาดที่กำหนดได้อย่างแน่นอนและให้ใช้ FAK orders สำหรับการดำเนินการที่รวดเร็ว แต่ต้องวัดสลิปเพจที่ทำได้จริงเทียบกับที่คาดไว้เสมอ.
บทสรุป
สถาปัตยกรรมข้างต้นให้พิมพ์เขียวเชิงปฏิบัติสำหรับสร้างบอทเทรดบน Polymarket: scanner ที่ให้ผ่านปริมาณสูง, sizer แบบอนุรักษ์นิยม, executor ที่ทนทานโดยใช้ CLOB และ Relayer, และการมอนิเตอร์เป็นชั้นๆ เริ่มจากขนาดเล็ก ติดตั้งการวัดอย่างเข้มข้น และวนปรับขนาดและตัวกรองเมื่อคุณสะสมข้อมูลสด.
Frequently asked questions
Which APIs should I use to get market listings and live book data?
ใช้ https://gamma-api.polymarket.com สำหรับ metadata ตลาด (/markets) และ wss://ws-subscriptions-clob.polymarket.com/ws/market สำหรับหนังสือคำสั่งแบบเรียลไทม์และเหตุการณ์ best_bid_ask. ใช้ https://clob.polymarket.com สำหรับการอ่าน order-book และการเทรด; การอ่านเป็นสาธารณะ แต่การเทรดต้องมี API key + HMAC.
Should I use limit orders or market (FAK) orders for arbitrage?
คำสั่ง FAK (Fill-And-Kill) มักถูกใช้เพื่อความเร็วและเพื่อหลีกเลี่ยงการเปิดรับค้างไว้ พวกมันสามารถ partial-fill ได้ ดังนั้นออกแบบการกำหนดขนาดและการกระทบยอดให้เหมาะสม SDK ของ CLOB มี helper สำหรับสร้าง FAK market orders.
How do I account for fees when sizing trades?
หักค่าธรรมเนียม taker ที่คาดไว้จาก gross edge ก่อนการเทรด ค่าธรรมเนียม taker ผันแปรตามหมวด (0% ถึง 1.8% ปัจจุบัน). ใช้ threshold edge สุทธิที่ครอบคลุมค่าธรรมเนียม บวกสลิปเพจที่คาดไว้และเผื่อการมอนิเตอร์.
What monitoring is essential for a live bot?
มอนิเตอร์อัตราการเติม สลิปเพจที่ทำได้จริง ความหน่วง เวลาแจ้งข้อพิพาท UMA เหตุการณ์ tick_size_change และสถานะของ Relayer. ติดตั้ง soft และ hard kill-switches สำหรับสลิปเพจขนาดใหญ่ การขาดทุนของ P&L หรือข้อพิพาท oracle.
Can I route orders through the Builder Program?
ใช่. Builder Program อนุญาตให้บุคคลที่สามส่งคำสั่งพร้อมการอ้างอิงและรับ builder fees ชั้นต่างๆ ควบคุมขีดจำกัด relayer ต่อวันและรางวัล; รับ credentials ได้ที่ polymarket.com/settings.
คำศัพท์อ้างอิง
คู่มือที่เกี่ยวข้อง
เพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำด้านการเงิน กฎหมาย หรือภาษี Polymarket อาจไม่สามารถใช้งานได้ในเขตอำนาจของคุณ