آموزش Polymarket Bot · فصل 14 از 32

آربیتراژ خبری در Polymarket: چطور روی headlineها از بازار جلو بزنیم، source feedها (RSS/Twitter/AP)، latency budget، false-positive filterها، و اینکه news edge چه زمانی در قیمت بازار از بین می‌رود.

این فصل چه چیزهایی را پوشش می‌دهد

News arbitrage یعنی معامله روی public information، سریع‌تر از آن‌که بازار آن را reprice کند. این edge واقعی است اما باریک - بیشتر "news" تا وقتی انسان آن را بخواند، از قبل در قیمت لحاظ شده است. این فصل توضیح می‌دهد کدام sourceها واقعاً از بازار جلو می‌زنند، latency budget که این strategy را تعریف می‌کند چیست، و false-positive filter‌ای که بدون آن bot روی هر retweet معامله می‌کند.

  • Information edge چه شکلی دارد
  • News sourceها: RSS، Twitter، AP، official feedها
  • Latency budget: از read تا trade در کمتر از 2 ثانیه
  • False-positive filterها
  • چه زمانی news edge از بین می‌رود
  • Code: poll کردن news feed و ثبت FOK روی marketهای مرتبط
  • Risk: نیمه‌حقیقت‌ها و headlineهای پس‌گرفته‌شده

Information edge چه شکلی دارد

News arbitrage یعنی معامله روی public information سریع‌تر از آن‌که بازار آن را reprice کند. این edge در یک بازه باریک وجود دارد - معمولاً 30 تا 300 ثانیه - بین زمانی که یک fact عمومی می‌شود و زمانی که Polymarket آن را منعکس می‌کند.

برای اینکه این edge واقعی باشد، سه چیز باید درست باشد. اول، source خبر باید از median Polymarket trader سریع‌تر باشد (Twitter از mainstream press سریع‌تر است؛ AP wire از Twitter سریع‌تر است). دوم، خبر باید بدون ابهام باشد (اعلام injury، حکم دادگاه) - interpretation latency را می‌بلعد. سوم، market باید به‌اندازه کافی گسترده باشد که حرکت قیمت ارزش spread tax را داشته باشد.

Botهایی که این edge را شکار می‌کنند معمولاً به دو دسته تقسیم می‌شوند: آن‌هایی که به sourceهای مستقیم subscribe می‌کنند و parse انجام می‌دهند، و آن‌هایی که یک حرکت غیرعادی قیمت در Polymarket را می‌بینند و نتیجه می‌گیرند که خبر رخ داده است. هر دو معتبرند؛ اولی leading است، دومی following.

News sourceها: RSS، Twitter، AP، official feedها

Sourceها بر اساس latency تا public-information-status، از سریع‌ترین به کندترین.

  • Direct primary sourceها: court filingها، government press releaseها، central-bank announcementها. اغلب RSS یا API عمومی دارند. سریع‌ترین و با کمترین false-positive rate.
  • AP wire / Reuters Eikon (paid). همان wireی که traditional traderها استفاده می‌کنند. حدود 5 تا 30 ثانیه جلوتر از consumer Twitter.
  • Twitter (X، paid API). فهرست accountهای verified: حساب‌های رسمی سازمان‌ها، beat reporterها. APIهای رایگان rate-limit زیادی دارند؛ برای tier Pro پرداخت کنید یا از relay service استفاده کنید.
  • Specialized newsletterها / Discord: Substackهای پولی، industry feedهای embargo شده. برای marketهای niche مفیدند (crypto، esports).
  • Mainstream press websiteها: برای news-arb edge خیلی کند هستند.

RSS برای هر چیزی که RSS منتشر می‌کند - رایگان است و polling intervalها قابل اتکا هستند. Twitter برای بقیه. AP برای news deskهای جدی در production.

Latency budget: read-to-trade در کمتر از 2 ثانیه

Bot باید در مجموع ظرف 1 تا 2 ثانیه ingest، classify، decide و order ثبت کند. Budget:

  • Ingest: 50 تا 300ms (websocket feed، RSS poll، Twitter stream).
  • Classify: 50 تا 200ms (regex / keyword match، و در صورت نیاز LLM اگر prompt را cache کرده باشید).
  • Decide: 50ms (lookup در rules table؛ mapping از news tag به market slug).
  • Place: 200 تا 500ms (FOK signed order به CLOB).

بزرگ‌ترین مصرف‌کننده budget، LLM classification است. یک GPT-4 call با 500 token، 1 تا 3 ثانیه اضافه می‌کند؛ یعنی کل arb window از بین می‌رود. برای production، با keyword ruleها classify کنید؛ از LLM فقط برای calibration آفلاین مجموعه keywordها استفاده کنید.

False-positive filterها

News-arb botهایی که false positive را filter نمی‌کنند، روی هر retweet معامله می‌کنند و از طریق spread tax ضرر می‌دهند. سه filter:

  • Source whitelist: فقط روی accountها/feedهای موجود در یک فهرست از پیش تأییدشده عمل کنید. این فهرست کوچک است (10 تا 30 source).
  • Keyword + confirmation pair: یک keyword matchِ تنها نویز است؛ match در دو source مستقل طی 30 ثانیه signal است.
  • Market-state guard: marketهایی را که در 60 ثانیه گذشته بیش از > 5% حرکت کرده‌اند skip کنید - شخص دیگری خبر را زودتر گرفته، edge از بین رفته است.

false-positive rate در filterهای خوب‌تنظیم‌شده: حدود 1 در 5 تا 10. false-positive rate برابر با 90% strategy را نابود می‌کند؛ نرخ 50% با position size کوچک هنوز قابل استفاده است.

چه زمانی news edge از بین می‌رود

پنجره زمانی از «خبر عمومی شد» تا «قیمت خبر را منعکس کرد» هر سال سریع‌تر بسته می‌شود. در 2020، marketهای سیاسی با قیمت متوسط چند دقیقه زمان می‌خواستند تا headline را جذب کنند. در 2026، همان headlineها به 30 تا 90 ثانیه فشرده می‌شوند، پیش از آن‌که قیمت کاملاً حرکت کرده باشد.

نشانه‌های از بین رفتن edge: PnL هر trade روی tradeهای flag شده از +3c به flat در یک window 30-trade کاهش پیدا می‌کند؛ نرخ false positiveهایی که معلوم می‌شود از قبل در قیمت لحاظ شده بودند بالای 70% می‌رود؛ market در کمتر از 200ms FOK ask شما را می‌زند چون شخص دیگری زودتر رسیده است.

pivot صادقانه وقتی edge از بین می‌رود: رفتن به سمت news کندتر و interpretiveتر (حکم دادگاه، minutes جلسات central bank) که parsing معنی آن بیشتر از latency race زمان می‌برد. یا توقف strategy.

Code: poll کردن news feed و ثبت FOK روی marketهای مرتبط

Skeleton production: یک news source را poll کنید، rule matchها را اجرا کنید، و روی hitها FOK order بفرستید.

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ها: برای RSS، 5 تا 15 ثانیه. هرجا available بود از WebSocket استفاده کنید (Twitter، AP wire). همیشه dedup را با ID ارائه‌شده توسط source انجام دهید؛ هرگز فرض نکنید polling دقیقاً once-only است.

Risk: نیمه‌حقیقت‌ها و headlineهای پس‌گرفته‌شده

بدترین روز news-arb bot زمانی است که معلوم شود یک headline اشتباه بوده است. مثال: یک Reuters tweet می‌گوید «Trump fires Yellen»، market 8 cent می‌پرد، 12 دقیقه بعد tweet حذف و تصحیح می‌شود. Botی که در +8c خریده حالا inventory را در -3c نگه داشته و راه چاره‌ای ندارد.

دفاع‌ها:

  • Two-source confirmation: هرگز فقط با یک tweet معامله نکنید؛ از یک source مستقل دوم طی 60 تا 180 ثانیه signal تأییدی بخواهید.
  • Position size متناسب با source confidence: AP wire = حجم کامل؛ Twitter از یک beat reporter verified = 50%؛ rumor source = 25%.
  • Auto-exit روی retraction signal: اگر sourceی که استفاده کرده‌اید ظرف 30 دقیقه correction صادر کرد، بدون توجه به PnL از معامله خارج شوید.

walk-back problem یک سقف سخت برای position sizing در news-arb است. معامله با $50 برای هر signal به شما اجازه می‌دهد از false-positive rate برابر با 30% جان سالم به در ببرید؛ معامله با $500 این‌طور نیست.

سؤالات متداول

آیا یک bot خُرد واقعاً می‌تواند روی news از بازار جلو بزند؟
بله - اما فقط اگر یک news source سریع و قابل اتکا و یک execution path با latency پایین داشته باشید. Twitter (که حالا X است) تا قبل از محدودیت‌های API استاندارد طلایی بود؛ RSS از Reuters/AP/Bloomberg بهترین جایگزین بعدی است. با رقابت بیشتر botها، edge خُردتر شده است؛ انتظار read-to-trade مجموعاً 200 تا 1000ms داشته باشید، نه 50ms.
مشترک چه news sourceهایی شوم؟
RSS feedهای AP (apnews.com)، Reuters (reuters.com)، و BBC پوشش گسترده‌ای به شما می‌دهند. برای Polymarket به‌طور خاص: Twitter و Discordهای خود platform اغلب تغییرات market را از قبل اعلام می‌کنند. برای موضوع‌های خاص: press releaseهای دولتی (Federal Reserve PDFها، CFTC، WHO).
Bot من چقدر باید سریع به news واکنش نشان دهد؟
برای edge خُرد: کمتر از 2 ثانیه از ظاهر شدن خبر تا submit شدن order شما. برای edge در سطح HFT (در برابر botهای دیگر): کمتر از 200ms. بیشتر botهای خُرد می‌توانند در window 1 تا 3 ثانیه رقابت کنند، چون بسیاری از botهای خُرد دیگر حتی کندترند یا روی بعضی feedها اصلاً حضور ندارند.
چطور false-positive news triggerها را کم کنم؟
خبر را با دقت به market مشخص وصل کنید. «Ceasefire» ممکن است در 100 context ظاهر شود؛ فقط بعضی از آن‌ها برای market شما اهمیت دارند. از keyword AND market-tag filter استفاده کنید: keyword «ceasefire» AND market-tag «Israel-Hezbollah» قبل از trigger. حتی بهتر - قبل از معامله، خبر را با LLM از نظر مرتبط بودن classify کنید.
وقتی خبر بعداً پس گرفته می‌شود چه اتفاقی می‌افتد؟
Position شما می‌تواند در چند ثانیه از برنده به بازنده تبدیل شود. News-arb botها به یک exit policy سریع نیاز دارند: اگر یک source پیگیری‌کننده ظرف N دقیقه headline را contradictt کرد، position را فوراً ببندید حتی با ضرر. قانون ما: اگر هر follow-up confidence signal اولیه را کم کند، در -3% تا -5% ببندید.
آیا news arbitrage قانونی است؟
معامله روی public news در هر جایی که می‌دانیم قانونی است. معامله بر اساس material non-public information (insider tipها، leakها قبل از انتشار رسمی) قانونی نیست. به sourceهای عمومی پایبند بمانید و trade مشکلی ندارد.