Polymarket Bot Tutorial · 第14章 / 32章
Polymarketでのニュース裁定:見出し、ソースフィード(RSS/Twitter/AP)、レイテンシ予算、誤検知フィルター、そしてニュースの優位性が市場価格に飲み込まれて消える瞬間をどう見極めるか。
この章で扱う内容
ニュース裁定とは、市場が再価格付けするよりも速く公開情報で取引する戦略です。優位性は本物ですが狭く、多くの「ニュース」は人間が読める頃にはすでに価格に織り込まれています。この章では、実際に市場に勝てるソース、戦略を定義するレイテンシ予算、そしてこれがないとボットがすべてのリツイートで取引してしまう誤検知フィルターについて解説します。
- 情報優位性がどのように見えるか
- ニュースソース:RSS、Twitter、AP、公式フィード
- レイテンシ予算:読み取りから取引まで2秒未満
- 誤検知フィルター
- ニュースの優位性が消えるとき
- コード:ニュースフィードをポーリングし、関連マーケットにFOKを出す
- リスク:半分だけ正しい情報と、後で撤回される見出し
情報優位性がどのように見えるか
ニュース裁定とは、市場が再価格付けするよりも速く公開情報で取引することです。この優位性は、事実が公になってからPolymarketに反映されるまでの狭い時間帯、通常30〜300秒の間に存在します。
この優位性が本物であるためには、3つの条件が必要です。第一に、ニュースソースがPolymarketの平均的なトレーダーより速いこと(Twitterは大手報道より速く、APのワイヤーはTwitterより速い)。第二に、ニュースが曖昧でないこと(負傷発表や判決など)――解釈には時間がかかり、そのぶんレイテンシを食います。第三に、マーケットに十分な広がりがあり、価格変動がスプレッドコストに見合うことです。
この優位性を狙うボットは、大きく2つのタイプに分かれます。1つは直接ソースに購読して解析するもの、もう1つはPolymarketで異常な価格変動を監視し、そこからニュース発生を推測するものです。どちらも有効ですが、前者は先行し、後者は追随します。
ニュースソース:RSS、Twitter、AP、公式フィード
公開情報としての到達速度が速い順に、ソースを並べます。
- 直接の一次ソース:裁判所提出書類、政府のプレスリリース、中央銀行の発表。公開RSSやAPIを持つことが多い。最速で、誤検知率も最小です。
- AP wire / Reuters Eikon(有料)。従来型トレーダーが使うワイヤー。一般向けTwitterより約5〜30秒先行します。
- Twitter(X、有料API)。認証済みアカウントのリスト:公式組織アカウント、担当記者。無料APIはレート制限が厳しすぎるため、Proプランを使うかリレーサービスを使います。
- 専門ニュースレター / Discord:有料Substack、エンバーゴ付きの業界フィード。ニッチなマーケット(暗号資産、eスポーツ)に有効です。
- 大手報道機関のWebサイト:ニュース裁定の優位性を取るには遅すぎます。
RSSを配信しているものはすべてRSSで――無料で、ポーリング間隔も安定しています。残りはTwitter。APは、本番運用レベルのニュースデスク向けです。
レイテンシ予算:読み取りから取引まで2秒未満
ボットは、取り込み・分類・判断・注文発注を合計1〜2秒以内に終える必要があります。予算の目安は以下のとおりです。
- 取り込み:50〜300ms(WebSocketフィード、RSSポーリング、Twitterストリーム)。
- 分類:50〜200ms(正規表現 / キーワード一致、必要ならプロンプトをキャッシュしたLLM)。
- 判断:50ms(ルール表の参照、ニュースタグからマーケットslugへのマッピング)。
- 発注:200〜500ms(CLOBへのFOK署名注文)。
最も大きく予算を食うのはLLM分類です。500トークンのGPT-4呼び出しは1〜3秒を追加し、その間に裁定ウィンドウは丸ごと消えます。本番では、分類はキーワードルールで行い、LLMはキーワードセットのオフライン校正だけに使いましょう。
誤検知フィルター
誤検知を除外しないニュース裁定ボットは、すべてのリツイートで取引してスプレッドコストでじわじわ負けます。フィルターは3つです。
- ソースのホワイトリスト:事前承認済みのアカウント/フィードにだけ反応する。リストは小さく(10〜30ソース)。
- キーワード + 確認ペア:単一キーワード一致はノイズ。30秒以内に独立した2つのソースで一致したらシグナルです。
- マーケット状態ガード:直近60秒で既に5%以上動いたマーケットは除外する――他の誰かが先にニュースを捉えており、優位性はもうありません。
適切に調整されたフィルターの誤検知率は、およそ5〜10件に1件です。誤検知率90%では戦略は崩壊しますが、50%ならポジションサイズを小さくして運用可能です。
ニュースの優位性が消えるとき
「ニュースが公開された」から「価格がニュースを反映した」までのウィンドウは、年々短くなっています。2020年には、中程度の政治マーケットが見出しを織り込むのに数分かかっていました。2026年には、同じ見出しでも価格が完全に動く前に30〜90秒へ圧縮されます。
優位性が死んだサイン:フラグ付き取引の1回あたりPnLが、30回の取引ウィンドウで+3セントから横ばいに落ちる;誤検知のうち既に織り込み済みだった割合が70%を超える;他の誰かが先に到達したため、200ms以内にマーケットがあなたのFOK askをヒットする。
優位性が死んだときの正直な転換先は、解釈に時間がかかる、より遅いニュース――判決や中央銀行の会合議事録――に移ることです。あるいは、その戦略自体を止めることです。
コード:ニュースフィードをポーリングし、関連マーケットにFOKを出す
本番用の骨組み:ニュースソースをポーリングし、ルールマッチを実行し、ヒットしたらFOK注文を発火します。
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)
ポーリング間隔:RSSは5〜15秒。利用可能ならWebSocket(Twitter、AP wire)。重複排除は必ずソース提供のIDで行い、ポーリングが厳密に一回だけ実行されるとは決して仮定しないでください。
リスク:半分だけ正しい情報と、後で撤回される見出し
ニュース裁定ボットにとって最悪の日は、見出しが誤りだったと判明するときです。例:Reutersのツイートが「Trump fires Yellen」と伝え、市場が8セント上昇したが、12分後にツイートが削除され訂正される。+8セントで買ったボットは、今や-3セントの在庫を抱えたまま、取り返しがつきません。
対策:
- 2ソース確認:1本のツイートだけで絶対に取引しない。60〜180秒以内に、別の独立ソースからの裏付けシグナルを求めます。
- ソースの信頼度に応じたポジションサイズ:AP wire = フルサイズ;認証済み担当記者のTwitter = 50%;噂ソース = 25%。
- 撤回シグナルで自動退出:使用したソースが30分以内に訂正を出したら、PnLに関係なく市場で退出する。
後で撤回される問題は、ニュース裁定のポジションサイズに対する厳しい上限です。シグナルごとに50ドルで取引すれば30%の誤検知率でも生き残れますが、500ドルでは無理です。





