PolymarketClickHouse Workshops

01 市場を見つける

公開されているアクティブな市場、アウトカム、コンディション ID、CLOB トークン ID を確認します。

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

開始条件

workshop_public/polymarket にいて、.env.polymarket を source 済みで、preflight が 準備完了になっています。

なぜ

Polymarket は市場ごとにコンディション ID を持ち、アウトカムごとに別のトークン ID を持ちます。 WebSocket はトークン ID で購読し、公開の取引 API はコンディション ID でフィルターします。

ステップ 1 — Gamma に最も活発なアクティブ市場を 5 件問い合わせる

curl --fail --silent --show-error --get \
  'https://gamma-api.polymarket.com/markets' \
  --data-urlencode 'active=true' \
  --data-urlencode 'closed=false' \
  --data-urlencode 'limit=20' \
  --data-urlencode 'order=volume24hr' \
  --data-urlencode 'ascending=false' \
  | python3 -c '
import json, sys
selected = 0
for market in json.load(sys.stdin):
    if not market.get("acceptingOrders"):
        continue
    outcomes = json.loads(market["outcomes"])
    tokens = json.loads(market["clobTokenIds"])
    print(market["question"])
    print("  condition:", market["conditionId"])
    for outcome, token in zip(outcomes, tokens):
        print(f"  {outcome}: {token}")
    selected += 1
    if selected == 5:
        break
'

期待される結果: 5 件の質問。それぞれ 66 文字のコンディション ハッシュ 1 つと、アウトカムごとの トークン ID が 1 つ出力されます。実際の質問はライブ市場に応じて変わります。

ステップ 2 — 1 つのコンディションについて公開取引を確認する

出力からコンディション ID を 1 つコピーします:

export POLYMARKET_CONDITION_ID='0x...'
curl --fail --silent --show-error --get \
  'https://data-api.polymarket.com/trades' \
  --data-urlencode "market=$POLYMARKET_CONDITION_ID" \
  --data-urlencode 'limit=3' \
  | python3 -c '
import json, sys
for trade in json.load(sys.stdin):
    print(trade["outcome"], trade["side"], trade["size"], "@", trade["price"])
'

動きの少ない市場では空のレスポンスも正常です。すぐに取引の行を見たい場合は別のコンディションを 選んでください。認証は一切使いません。

ステップ 3 — collector の選定ロジックを理解する

collector は起動時にステップ 1 を繰り返し、市場を 5 件選び、JSON でエンコードされた アウトカム/トークンの配列をパースして、両方のアウトカムの行を polymarket.markets に保存します。 その日のトークン ID を .env.polymarket にハードコードすることはありません。

完了条件

  • 1 つの市場について、コンディション ID と両アウトカムのトークン ID を特定できる; および
  • 公開取引のコマンドが、配列が空であっても JSON を返す。

次: ClickHouse のデータモデルを作成する。

このページの内容

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

JA