[ blog · comparison ]11 min read

Polymarket vs Kalshi API:開発者向け横並びガイド(認証、CLOB、WebSocket、ヒストリカルデータ)

Sarah Choy公開: 2026年5月3日読了 11 分
Polymarket vs Kalshi API:開発者向け横並びガイド(認証、CLOB、WebSocket、ヒストリカルデータ)

Polymarket と Kalshi は同じプリミティブ — CLOB 上の yes/no 契約 — を、まったく異なる API で動かす。一方は EIP-712 署名と Polygon ウォレットを要求し、もう一方はオプションの FIX を備えた REST エンドポイントだ。予測エージェント、アービトラージボット、スマートマネー監視を作るなら、本来とっくにあるべき横並びガイドがこれだ。

要点

  • Polymarket は Polygon 上の CLOB に提出する EIP-712 署名注文を使う — ウォレットのオンボーディングとガス代がかかる。
  • Kalshi は標準的な REST + WebSocket 認証(email/password → トークン)に加え、機関ユーザー向けにオプションの FIX ゲートウェイを使う。
  • 両者ともオーダーブック・約定・ヒストリカルデータを公開するが、スキーマと決済セマンティクスの違いが大きく、「統合」ライブラリはこの crypto/quant ツール界隈で最も要望される HN Show HN のトピックになっている。
  • 同等契約間のクロス会場アービトラージが最も一般的なビルドパターン(GitHub にオープンソースボットが 10 以上)。
  • API Pick Prediction Markets Search は両会場を 1 本の POST エンドポイントに束ね、自然言語での契約発見を可能にする — 1 回 50 credits、ランク付きセマンティック結果。

なぜこの記事が存在するか

予測市場の上に何かを作った経験があれば、定番のリクエストを知っているはずだ:「同じ Python スクリプトから Polymarket と Kalshi を問い合わせて、マッチする契約のクリーンなリストを返してほしい。」 あらゆる予測市場系の Show HN の HN コメントスレッドは、必ずこれに収束する — 「CCXT for prediction markets」型の投稿が繰り返し現れるのは、需要が存在し、既存の解決策がもう一歩届いていないことを示している。

この難しさは本物だ。2 つの会場は同じプリミティブ — セントラルリミットオーダーブック上のバイナリ「yes/no」契約 — を解くが、それを劇的に異なる API で公開する。両者の動く開発者ビューを、横並びで、実際に必要なコードとともに示す。

2 つの会場、2 つのアーキテクチャ

Polymarket

  • チェーン:Polygon(USDC.e 決済)
  • 認証:ウォレット秘密鍵による EIP-712 型付きデータ署名。従来型のベアラートークンはなし
  • 注文発注:CLOB API に提出する署名済み注文。ガスはメタトランザクション経由で Polymarket が負担
  • 市場発見:アクティブ市場の閲覧には Gamma API(REST + JSON)、ライブオーダーブックには別の CLOB API
  • リアルタイムデータ:オーダーブック更新と約定の WebSocket ストリーム
  • ヒストリカルデータ:約定の REST エンドポイント。日次スナップショットは別途ダウンロード可

Kalshi

  • 決済:ACH と電信送金による USD(米国の銀行が必要)
  • 認証:email + password → ベアラートークン、または API キー(機関向け)
  • 注文発注/portfolio/orders への標準的な認証付き REST POST
  • 市場発見:イベント・市場・シリーズの REST エンドポイント。クリーンなスキーマ
  • リアルタイムデータ:約定・オーダーブック・ティッカー用の WebSocket と FIX(機関向け)
  • ヒストリカルデータ:約定の REST エンドポイント。市場の決済・清算データは素直

横並び比較

アーキテクチャは変わります。統合前に各会場のドキュメントでレート制限・手数料・KYC 要件を確認してください。
PolymarketKalshiAPI Pick
認証EIP-712 署名注文 + Polygon ウォレットEmail/password → ベアラー、または API キーx-api-key ヘッダー(読み取り専用の発見)
決済Polygon 上の USDCUSD 銀行送金(米国のみ)該当なし(検索のみ)
米国での合法性ジオフェンス(米国不可)CFTC 規制下該当なし
リアルタイムWebSocketWebSocket + FIX該当なし
ヒストリカルREST 約定 + スナップショットREST 約定 + 決済検索がソースへのリンクを返す
最適用途crypto ネイティブ、グローバル市場、スマートマネー追跡米国規制下、選挙 & 経済クロス会場の契約発見

動くコード:各社の hello-world

Polymarket:アクティブ市場を一覧する

import requests

# Gamma API — no auth required for browsing
r = requests.get(
    "https://gamma-api.polymarket.com/markets",
    params={"active": "true", "limit": 25, "order": "volume"},
)
markets = r.json()
for m in markets[:5]:
    print(m["question"], "→", m["outcomePrices"])

Polymarket:署名済み注文を発注する(スケッチ)

# Full order placement requires py-order-utils + a Polygon wallet
# This is the structural sketch — not runnable without wallet setup
from py_order_utils.builders import OrderBuilder
from py_order_utils.signer import Signer

signer = Signer(private_key="0xYOUR_PRIVATE_KEY")
builder = OrderBuilder(
    exchange_address="0x...",
    chain_id=137,
    signer=signer,
)

order = builder.build_signed_order({
    "maker": signer.address(),
    "tokenId": "...",        # the yes/no token ID for the market
    "makerAmount": "1000000", # USDC.e in atomic units
    "takerAmount": "1500000",
    "side": "BUY",
    "feeRateBps": 0,
    "nonce": 0,
    "expiration": 0,         # 0 = no expiry
})

requests.post(
    "https://clob.polymarket.com/order",
    json={"order": order, "owner": signer.address(), "orderType": "GTC"},
)

Kalshi:ログインして指値注文を出す

import requests

# Step 1 — login
r = requests.post(
    "https://api.elections.kalshi.com/trade-api/v2/login",
    json={"email": "you@example.com", "password": "..."},
).json()
token = r["token"]
headers = {"Authorization": f"Bearer {token}"}

# Step 2 — list markets in an event
r = requests.get(
    "https://api.elections.kalshi.com/trade-api/v2/markets",
    params={"event_ticker": "POTUS-2028", "limit": 25},
    headers=headers,
).json()
print(r["markets"][:5])

# Step 3 — place a limit buy on the "Yes" side at 60 cents
r = requests.post(
    "https://api.elections.kalshi.com/trade-api/v2/portfolio/orders",
    headers=headers,
    json={
        "ticker": "POTUS-2028-DEM",
        "type": "limit",
        "action": "buy",
        "side": "yes",
        "count": 100,            # 100 contracts
        "yes_price": 60,         # 60 cents
        "client_order_id": "abc123",
    },
)
print(r.json())

API Pick:両会場にまたがる自然言語の発見

import requests

r = requests.post(
    "https://www.apipick.com/api/search/prediction-markets",
    headers={"x-api-key": "pk_yourkey"},
    json={"query": "Federal Reserve rate cuts before end of 2026"},
)
for hit in r.json()["results"][:5]:
    print(hit["title"], "@", hit["venue"], "→", hit["url"])

# Returns ranked matches across Polymarket + Kalshi.
# 50 credits per call (~$0.05), only on HTTP 200.

実際に機能する 3 つの本番パターン

1. クロス会場アービトラージボット

GitHub で最も一般的なパターン:「この Polymarket 契約はこの Kalshi 契約と同じ結果で決済される」というキュレート済みホワイトリスト。ボットは両方のブックを監視し、含意確率を計算し、スプレッドがしきい値を越えたらポジションを取る。例:ImMike/polymarket-arbitragerealfishsam/prediction-market-arbitrage-bot

難しいのはホワイトリストだ。「Will the Fed cut by 25 bps at the December meeting」 は人間には同じに見えるが、決済ソースと厳密な文言が異なる。自動マッチャーは十分な頻度で間違えるので、実際のボットは人間がキュレートしたマッピングを使う。

2. スマートマネー監視

Polymarket のクジラはオンチェーンで見える。監視ツールは特定市場の大口オーダーフローを Polygon 上で見張り、大きなポジションを浮かび上がらせ、ニュース API にヘッドラインが届く前に急激な価格変動にフラグを立てる。News Search と組み合わせて、見かけ上の変動がニュース駆動か純粋な思惑かを確認する。

3. LLM エージェント向けの予測フィード

現在の Polymarket / Kalshi 価格を LLM エージェントのコンテキストに取り込むと、モデルは確率に根拠づけられた回答を返せる:「現在のベッティング市場は X の確率を約 65% と含意している」。これが API Pick がカバーする発見ユースケースだ — エージェントからの自然言語の問いを与えると、ランク付き契約を返し、エージェントが回答の中で価格を引用できるようにする。

よくある落とし穴(HN コメントから編集)

  • Polymarket の EIP-712 署名 — 注文署名は決定論的だが、ツーリングのエラーはよくある。自前で実装するより py-order-utils を使うこと。初期のボットの損失のほとんどは、API が黙って弾く署名の不一致から来る。
  • Kalshi のレート制限 — 文書上は 100 req/sec だが、繁忙なイベント日(選挙の夜、FOMC)には一部エンドポイントで低くなる。クライアントにリトライ + バックオフを組み込むこと。
  • Polymarket のガス急騰 — Polygon のガスは大出来高の日に跳ね上がることがある。Polymarket はメタトランザクション経由で注文発注の大半を補助するが、決済と出金はユーザー負担。これを P&L 計算に織り込むこと。
  • 決済の不一致 — 見かけ上の同等物が異なる決済になることがある。ペアトレードの前に必ず両契約の決済ソース条項を読むこと。
  • WebSocket の切断 — 両会場とも日常的に WebSocket がふらつく。シーケンス番号のリプレイを伴う再接続ロジックは、本番ボットには必須だ。

素早く選ぶ

最適:米国規制下のトレーディング
Kalshi。CFTC の監督、USD 決済、crypto オンボーディング不要。米国ユーザーを狙うあらゆるプロダクトの正解。
最適:crypto ネイティブ、グローバル、スマートマネー追跡
Polymarket。Polygon ネイティブなのでオンチェーンのオーダーフローが観測可能。特に地政学、crypto、エンターテインメントで広いイベントカバレッジ。
最適:クロス会場アービトラージ
両方をペアで。まず一方(認証がきれいな Kalshi のことが多い)に対してボットを作り、マッチングロジックが固まったら Polymarket を足す。
最適:LLM エージェント内での自然言語の契約発見
API Pick Prediction Markets Search。1 回の POST、両会場にわたるランク付きマッチを返す、1 回 50 credits、成功時のみ課金。試す →

これがどこへ向かうか

予測市場は今、異例なほど主流の注目を集めている:米国選挙・FOMC イベント・スポーツ・AI テイクオフ系の問いをめぐる出来高の増大、含意確率を表示するニュースサイトとのより広い統合、そして同じテーマに収束する開発者ツーリングの波(Show HN、GitHub リポジトリ)— 「誰かが予測市場版の CCXT を書くべきだ。」

当社は、CCXT 型の統合執行ライブラリが正しい形だとは考えていない。認証・決済・規制レジームの違いは深すぎて、ユーザーに嘘をつかずにきれいに抽象化することはできない。だが 発見 の問題 — 自然言語の問いを与えて、すでに存在する契約を見つける — はセマンティック検索で解ける。それがまさに API Pick Prediction Markets Search のやることだ。契約を見つけ、注文は会場で出す。

よくある質問

契約数が多いのはどちらの会場?

執筆時点で、両者ともアクティブな市場を数万件リストしている。Polymarket は crypto ネイティブかつグローバル寄り(政治、スポーツ、crypto、時事)、Kalshi は CFTC 規制下で米国中心(選挙、経済、天気、スポーツ)。出来高の分布はカテゴリーで異なる — 米国選挙では通常 Kalshi のほうが厚く、グローバル政治や crypto ネイティブな問いでは Polymarket のほうが厚い。

なぜオープンソースの「統合」ライブラリが Show HN に出続けるのか?

需要があるのに、誰もうまく解けていないから。「Open-source library to unify Polymarket and Kalshi APIs」や「dr-manhattan — CCXT for Prediction Markets」のような Show HN 投稿は繰り返し現れるパターンだ。課題は同等契約(同じ結果、異なる文言)をマッチングし、決済セマンティクスを調整すること。ライブラリは通常、認証ラッパーは決めるが、契約マッチングの手前で止まる。

基本的なクロス会場アービトラージはどうやるのか?

概念的には:異なる会場で同じ結果に決済される 2 つの契約を見つけ、含意確率を確認し、高値の「No」側と安値の「Yes」側を取り、決済まで保有する。実際には摩擦は執行にある:Polymarket のガス代、Kalshi の USD 資金繰り、部分約定、そして上述のマッチング問題。GitHub のライブアービトラージボットのほとんどは、契約ペアのマッピングを自動発見するのではなく、キュレートされたホワイトリストで動かす。

Polymarket は米国で合法か?

Polymarket は現在、米国ユーザー向けには認可されておらず、アクセスはジオフェンスされている。Kalshi は CFTC 規制下で米国合法。米国ユーザー向けのプロダクトを作るなら Kalshi が唯一の選択肢。グローバルに作るなら、Polymarket のほうが広い市場カバレッジを持つ。

このスタックで API Pick はどこに収まるのか?

API Pick Prediction Markets Search は「発見」の問題を解く:自然言語の問い(例:「Fed cuts rates by year-end」)を与えると、1 回の POST 呼び出しで Polymarket と Kalshi の契約にわたるランク付きセマンティックマッチを返す。当社は注文執行 API を置き換えない — 注文の発注には依然として各会場に直接行く。当社は適切な市場を見つけるのを簡単にする。

この記事で使われている API

Sarah Choy
執筆
Sarah Choy
CEO, API Pick

API Pick の CEO。AI エージェントと LLM ワークフロー向けの本番運用可能な API について執筆。