Polymarket Bot Tutorial · บทที่ 14 จาก 32
News arbitrage บน Polymarket: วิธีเอาชนะตลาดจากพาดหัวข่าว, source feeds (RSS/Twitter/AP), latency budgets, false-positive filters, และเมื่อ news edge กลายเป็นราคาตลาดไปแล้ว
บทนี้ครอบคลุมอะไรบ้าง
News arbitrage คือกลยุทธ์การเทรดจากข้อมูลสาธารณะให้เร็วกว่าตลาดที่ reprice ข้อมูลนั้น Edge นี้มีอยู่จริงแต่แคบมาก-ข่าวส่วนใหญ่ก็ถูกสะท้อนไปในราคาแล้วตอนที่มนุษย์อ่านได้ทัน บทนี้จะอธิบายว่าแหล่งข่าวแบบไหนที่เอาชนะตลาดได้จริง, latency budget ที่เป็นตัวกำหนดกลยุทธ์, และ false-positive filter ที่ไม่มีไม่ได้ เพราะไม่งั้นบอทจะเทรดทุกรีทวีต
- Information edge หน้าตาเป็นอย่างไร
- แหล่งข่าว: RSS, Twitter, AP, official feeds
- Latency budget: read-to-trade ให้ต่ำกว่า 2 วินาที
- False-positive filters
- เมื่อ news edge หมดอายุ
- Code: poll news feed และ place FOK ในตลาดที่เกี่ยวข้อง
- Risk: half-truths และพาดหัวที่ถูกถอนกลับ
Information edge หน้าตาเป็นอย่างไร
News arbitrage หมายถึงการเทรดบนข้อมูลสาธารณะให้เร็วกว่าตลาดที่ reprice มัน Edge จะมีอยู่ในช่วงสั้น ๆ-โดยทั่วไป 30-300 วินาที-ระหว่างที่ข้อเท็จจริงถูกเปิดเผยต่อสาธารณะกับตอนที่ Polymarket สะท้อนมัน
เพื่อให้ edge นี้เป็นของจริง ต้องมี 3 อย่างเกิดขึ้นพร้อมกัน อย่างแรก แหล่งข่าวต้องเร็วกว่า Polymarket trader ทั่วไป (Twitter เร็วกว่าข่าวกระแสหลัก; AP wire เร็วกว่่า Twitter) อย่างที่สอง ข่าวต้องไม่กำกวม (เช่น การประกาศอาการบาดเจ็บ, คำตัดสินของศาล)-การตีความจะกินเวลา latency ไปหมด อย่างที่สาม ตลาดต้องกว้างพอที่การเคลื่อนไหวของราคาจะคุ้มกับ spread tax
บอทที่ไล่จับ edge นี้จะแตกเป็นสองกลุ่ม: กลุ่มที่ subscribe แหล่งตรงและ parse ข้อมูล, กับกลุ่มที่คอยดูการเคลื่อนไหวของราคาที่ผิดปกติบน Polymarket แล้วอนุมานว่ามีข่าวเกิดขึ้น ทั้งสองแบบใช้ได้; แบบแรกเป็นฝ่ายนำ, แบบหลังเป็นฝ่ายตาม
แหล่งข่าว: RSS, Twitter, AP, official feeds
เรียงแหล่งข่าวตาม latency ไปสู่สถานะข้อมูลสาธารณะ โดยเร็วที่สุดอยู่ก่อน
- Direct primary sources: เอกสารยื่นต่อศาล, ข่าวประชาสัมพันธ์ของรัฐบาล, การประกาศของธนาคารกลาง มักมี public RSS หรือ API เร็วที่สุดและ false-positive rate ต่ำที่สุด
- AP wire / Reuters Eikon (paid). สายข่าวที่เทรดเดอร์แบบดั้งเดิมใช้ เร็วกว่่า consumer Twitter ประมาณ 5-30 วินาที
- Twitter (X, paid API). รายการบัญชีที่ยืนยันตัวตนแล้ว: บัญชีทางการขององค์กร, นักข่าวสายงาน Free API ถูกจำกัด rate มากเกินไป; ควรจ่าย Pro tier หรือใช้ relay service
- Specialized newsletters / Discord: paid Substacks, industry feeds ที่มี embargo เหมาะกับตลาดเฉพาะทาง (crypto, esports)
- Mainstream press websites: ช้าเกินไปสำหรับ news-arb edge
RSS ใช้กับทุกอย่างที่มี RSS-ฟรีและ polling interval เชื่อถือได้ Twitter ใช้กับที่เหลือ AP เหมาะกับ news desk ที่จริงจังระดับ production
Latency budget: read-to-trade ภายใน 2 วินาที
บอทต้อง ingest, classify, decide, และ place order ให้เสร็จภายในรวม 1-2 วินาที Budget โดยประมาณ:
- Ingest: 50-300ms (websocket feed, RSS poll, Twitter stream)
- Classify: 50-200ms (regex / keyword match, หรือ LLM ถ้าคุณ cache prompt)
- Decide: 50ms (rules table lookup; mapping จาก news tag ไปยัง market slug)
- Place: 200-500ms (FOK signed order ไปยัง CLOB)
ตัวกิน budget ที่ใหญ่ที่สุดคือ LLM classification การเรียก GPT-4 ที่ 500 tokens เพิ่มเวลา 1-3 วินาที; เท่ากับหมดหน้าต่าง arb ไปแล้ว สำหรับ production ควร classify ด้วย keyword rules; ใช้ LLM เฉพาะเพื่อ calibrate ชุด keyword แบบ offline
False-positive filters
News-arb bot ที่ไม่กรอง false positive จะเทรดทุกรีทวีตและค่อย ๆ เลือดออกผ่าน spread tax มี 3 ตัวกรองหลัก
- Source whitelist: ทำงานเฉพาะกับบัญชี/ฟีดที่อยู่ใน list ที่อนุมัติไว้ล่วงหน้า list นี้ควรเล็ก (10-30 sources)
- Keyword + confirmation pair: keyword ตรงแค่ครั้งเดียวคือ noise; ถ้าตรงจาก 2 แหล่งอิสระภายใน 30 วินาทีคือ signal
- Market-state guard: ข้ามตลาดที่ราคาเคลื่อนไหวไปแล้ว > 5% ใน 60 วินาทีล่าสุด-มีคนจับข่าวได้ก่อนแล้ว edge หมดไป
false-positive rate ของฟิลเตอร์ที่จูนดีแล้ว: ประมาณ 1 ใน 5-10 ถ้า false-positive rate 90% กลยุทธ์พังแน่; ถ้า 50% ยังพอใช้งานได้หากขนาดโพสิชันเล็ก
เมื่อ news edge หมดอายุ
หน้าต่างเวลาจาก "ข่าวถูกเปิดเผย" ไปถึง "ราคาสะท้อนข่าว" ปิดเร็วขึ้นทุกปี ในปี 2020 ตลาดการเมืองที่มีราคากลาง ๆ ต้องใช้เวลาหลายนาทีเพื่อดูดซับพาดหัวเดียวกัน แต่ในปี 2026 พาดหัวเดียวกันจะถูกบีบเหลือ 30-90 วินาที ก่อนที่ราคาจะเคลื่อนครบ
สัญญาณว่า edge ตายแล้ว: PnL ต่อเทรดของรายการที่ตั้งธงไว้ลดจาก +3c เหลือทรงตัวในช่วง 30 เทรด; อัตรา false positive ที่กลายเป็นข่าวที่ตลาด price-in ไปแล้วพุ่งเกิน 70%; ตลาดโดน FOK ask ของคุณภายใน 200ms เพราะมีคนอื่นไปถึงก่อน
ทาง pivot ที่ตรงไปตรงมาเมื่อ edge ตายแล้วคือ: ย้ายไปใช้ข่าวที่ช้ากว่าแต่ตีความยากกว่า (คำตัดสินศาล, รายงานการประชุมธนาคารกลาง) ซึ่งการ parse ความหมายใช้เวลานานกว่าการแข่ง latency หรือไม่ก็หยุดรันกลยุทธ์นี้
Code: poll news feed และ place FOK ในตลาดที่เกี่ยวข้อง
โครง production แบบย่อ: poll แหล่งข่าว, รัน rule match, แล้วส่ง FOK orders เมื่อเจอสัญญาณ
import feedparser, time, re
from py_clob_client.client import ClobClient
RULES = [
{"regex": re.compile(r"out for season|torn ACL", re.I), "tag":"injury-fade"},
{"regex": re.compile(r"federal reserve.*(rate cut|rate hike)", re.I), "tag":"fed-move"},
]
seen = set()
while True:
feed = feedparser.parse("https://example.com/news.rss")
for entry in feed.entries[:20]:
if entry.id in seen: continue
seen.add(entry.id)
for rule in RULES:
if rule["regex"].search(entry.title + " " + entry.summary):
# Look up relevant Polymarket markets, place FOK
fire(rule["tag"], entry)
break
time.sleep(15)
Polling interval: 5-15 วินาทีสำหรับ RSS. ใช้ WebSocket เมื่อมีให้ใช้ (Twitter, AP wire). ต้อง dedup ด้วย source-provided ID เสมอ; ห้ามสมมุติว่า polling จะ exactly-once
Risk: half-truths และพาดหัวที่ถูกถอนกลับ
วันที่แย่ที่สุดของ news-arb bot คือวันที่พาดหัวดันผิด ตัวอย่าง: Reuters tweet ว่า "Trump fires Yellen" ตลาดพุ่ง 8 เซนต์ 12 นาทีต่อมา tweet ถูกลบและแก้ไข บอทที่ซื้อที่ +8c ตอนนี้ถือ inventory ที่ -3c โดยไม่มีทางแก้
แนวป้องกัน:
- Two-source confirmation: อย่าเทรดจาก tweet เดียว; ต้องมีสัญญาณยืนยันจากแหล่งอิสระที่สองภายใน 60-180 วินาที
- Position size scaled to source confidence: AP wire = เต็มขนาด; Twitter จาก verified beat reporter = 50%; rumor source = 25%
- Auto-exit on retraction signal: ถ้า source ที่คุณใช้มีการออก correction ภายใน 30 นาที ให้ออกจากสถานะทันทีตาม market price โดยไม่สน PnL
ปัญหา walk-back เป็นเพดานแข็งสำหรับการกำหนดขนาดโพสิชันของ news-arb การเทรด $50 ต่อสัญญาณช่วยให้รอดจาก false-positive rate 30%; แต่ถ้า $500 จะไม่รอด













