[ blog · comparison ]11 min read

API Polymarket vs Kalshi: Hướng dẫn so sánh trực tiếp cho lập trình viên (Auth, CLOB, WebSocket, dữ liệu lịch sử)

Sarah ChoyĐăng ngày 3 tháng 5, 202611 phút đọc
API Polymarket vs Kalshi: Hướng dẫn so sánh trực tiếp cho lập trình viên (Auth, CLOB, WebSocket, dữ liệu lịch sử)

Polymarket và Kalshi vận hành cùng một nguyên thủy — hợp đồng có/không trên một CLOB — nhưng qua những API hoàn toàn khác nhau. Một bên đòi chữ ký EIP-712 và một ví Polygon; bên kia là một endpoint REST với FIX tùy chọn. Nếu bạn đang xây một agent dự báo, một bot arbitrage, hay một bộ theo dõi dòng tiền thông minh, đây là hướng dẫn so sánh trực tiếp lẽ ra đã phải tồn tại.

Tóm tắt

  • Polymarket dùng lệnh được ký bằng EIP-712 gửi tới CLOB của nó trên Polygon — phải onboarding ví và chịu phí gas.
  • Kalshi dùng auth REST + WebSocket tiêu chuẩn (email/mật khẩu → token), cộng thêm một gateway FIX tùy chọn cho người dùng tổ chức.
  • Cả hai đều phơi bày sổ lệnh, giao dịch và dữ liệu lịch sử, nhưng schema và ngữ nghĩa giải quyết khác nhau đủ nhiều để các thư viện 'hợp nhất' trở thành chủ đề Show HN được yêu cầu nhiều nhất trong góc công cụ crypto/quant này.
  • Arbitrage chéo sàn giữa các hợp đồng tương đương là mẫu xây dựng phổ biến nhất (10+ bot mã nguồn mở trên GitHub).
  • API Pick Prediction Markets Search gói cả hai sàn vào một endpoint POST để khám phá hợp đồng bằng ngôn ngữ tự nhiên — 50 credit mỗi lần gọi, kết quả ngữ nghĩa được xếp hạng.

Vì sao có bài viết này

Nếu bạn từng dành chút thời gian xây dựng trên thị trường dự đoán, bạn biết yêu cầu kinh điển ấy: 'tôi muốn truy vấn Polymarket và Kalshi từ cùng một script Python và nhận về một danh sách hợp đồng khớp nhau gọn gàng.' Luồng bình luận HN trên mỗi bài Show HN về thị trường dự đoán chắc chắn đều hội tụ về điều này — có một mẫu lặp lại của các bài đăng kiểu "CCXT cho thị trường dự đoán", cho thấy nhu cầu có thật và các giải pháp hiện tại chưa thật sự trúng đích.

Khó khăn là có thật. Hai sàn giải cùng một nguyên thủy — hợp đồng nhị phân "có/không" trên một sổ lệnh giới hạn tập trung — nhưng phơi bày chúng qua những API khác nhau đáng kể. Đây là góc nhìn lập trình viên chạy được của cả hai, đặt cạnh nhau, với đúng đoạn mã bạn thực sự cần.

Hai sàn, hai kiến trúc

Polymarket

  • Chuỗi: Polygon (thanh toán bằng USDC.e)
  • Auth: ký dữ liệu có kiểu EIP-712 bằng khóa riêng của một ví; không có bearer token truyền thống
  • Đặt lệnh: lệnh đã ký gửi tới CLOB API; gas do Polymarket trả qua meta-transaction
  • Khám phá thị trường: Gamma API (REST + JSON) để duyệt các thị trường đang hoạt động, cộng thêm một CLOB API riêng cho sổ lệnh trực tiếp
  • Dữ liệu thời gian thực: luồng WebSocket cho cập nhật sổ lệnh và giao dịch
  • Dữ liệu lịch sử: các endpoint REST cho giao dịch; ảnh chụp hằng ngày tải riêng

Kalshi

  • Thanh toán: USD qua ACH và chuyển khoản (cần ngân hàng Mỹ)
  • Auth: email + mật khẩu → bearer token, HOẶC API key (tổ chức)
  • Đặt lệnh: REST POST có xác thực tiêu chuẩn tới /portfolio/orders
  • Khám phá thị trường: các endpoint REST cho sự kiện, thị trường và chuỗi; schema gọn gàng
  • Dữ liệu thời gian thực: WebSocket và FIX (tổ chức) cho khớp lệnh, sổ lệnh, ticker
  • Dữ liệu lịch sử: các endpoint REST cho giao dịch; dữ liệu giải quyết và thanh toán thị trường rành mạch

So sánh trực tiếp

Kiến trúc thay đổi. Hãy xác minh rate limit, phí và yêu cầu KYC với tài liệu của từng sàn trước khi tích hợp.
PolymarketKalshiAPI Pick
AuthLệnh ký EIP-712 + ví PolygonEmail/mật khẩu → bearer; hoặc API keyHeader x-api-key (khám phá chỉ-đọc)
Thanh toánUSDC trên PolygonChuyển khoản ngân hàng USD (chỉ Mỹ)n/a (chỉ tìm kiếm)
Tính hợp pháp ở MỹChặn theo địa lý (không phải Mỹ)Do CFTC quản lýn/a
Thời gian thựcWebSocketWebSocket + FIXn/a
Lịch sửGiao dịch REST + ảnh chụpGiao dịch REST + thanh toánTìm kiếm trả về liên kết tới nguồn
Phù hợp nhấtCrypto-native, thị trường toàn cầu, theo dõi dòng tiền thông minhDo Mỹ quản lý, bầu cử & kinh tếKhám phá hợp đồng chéo sàn

Mã chạy được: hello-world trên mỗi sàn

Polymarket: liệt kê các thị trường đang hoạt động

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: đặt một lệnh đã ký (phác thảo)

# 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: đăng nhập và đặt một lệnh giới hạn

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: khám phá bằng ngôn ngữ tự nhiên trên cả hai

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.

Ba mẫu sản xuất thực sự hiệu quả

1. Bot arbitrage chéo sàn

Mẫu phổ biến nhất trên GitHub: một whitelist được tuyển chọn thủ công kiểu "hợp đồng Polymarket này giải quyết theo cùng kết cục với hợp đồng Kalshi này". Bot theo dõi cả hai sổ lệnh, tính xác suất ngụ ý, và mở vị thế khi chênh lệch vượt một ngưỡng. Ví dụ: ImMike/polymarket-arbitragerealfishsam/prediction-market-arbitrage-bot.

Phần khó là whitelist. "Liệu Fed có cắt 25 bps trong cuộc họp tháng Mười Hai" trông giống nhau với con người, nhưng nguồn giải quyết và cách diễn đạt chính xác lại khác; một bộ khớp tự động sai đủ thường xuyên đến mức các bot thực tế dùng ánh xạ do con người tuyển chọn.

2. Bộ theo dõi dòng tiền thông minh

Cá voi trên Polymarket hiển thị on-chain. Một bộ theo dõi quan sát Polygon để tìm dòng lệnh lớn trên những thị trường cụ thể, làm nổi bật các vị thế lớn, và đánh dấu các biến động giá nhanh trước khi tiêu đề tin tức kịp tới các news API. Hãy ghép với News Search để xác nhận một biến động bề ngoài là do tin tức dẫn dắt hay thuần túy đầu cơ.

3. Nguồn cấp dự báo cho một agent LLM

Kéo giá Polymarket / Kalshi hiện tại vào ngữ cảnh của một agent LLM giúp mô hình đưa ra câu trả lời có cơ sở xác suất: "các thị trường cá cược hiện tại ngụ ý xác suất ~65% cho X". Đây chính là trường hợp dùng khám phá mà API Pick bao phủ — với một câu hỏi bằng ngôn ngữ tự nhiên từ agent, trả về các hợp đồng được xếp hạng để agent có thể trích dẫn giá trong câu trả lời của mình.

Những cạm bẫy thường gặp (tổng hợp từ bình luận HN)

  • Ký EIP-712 của Polymarket — chữ ký lệnh là tất định nhưng lỗi công cụ rất thường gặp. Hãy dùng py-order-utils thay vì tự viết. Phần lớn thua lỗ bot thời kỳ đầu đến từ những sai khớp chữ ký mà API âm thầm từ chối.
  • Rate limit của Kalshi — tài liệu ghi 100 req/giây nhưng thấp hơn ở một số endpoint trong những ngày sự kiện đông đúc (đêm bầu cử, FOMC). Hãy xây cơ chế thử lại có backoff trong client.
  • Tăng vọt gas của Polymarket — gas Polygon có thể nhảy vọt vào những ngày khối lượng lớn. Polymarket trợ cấp phần lớn việc đặt lệnh qua meta-transaction nhưng thanh toán và rút tiền do người dùng trả. Hãy tính đến điều này trong các phép tính P&L.
  • Sai khớp thanh toán — những thứ tưởng tương đương đôi khi giải quyết khác nhau. Hãy luôn đọc các điều khoản nguồn-giải-quyết của cả hai hợp đồng trước khi giao dịch theo cặp.
  • Mất kết nối WebSocket — cả hai sàn đều có những lần WebSocket chập chờn thường xuyên. Logic kết nối lại với phát lại theo số thứ tự là điều không thể thương lượng đối với bất kỳ bot sản xuất nào.

Chọn nhanh

Tốt nhất cho: giao dịch do Mỹ quản lý
Kalshi. Có CFTC giám sát, thanh toán USD, không cần onboarding crypto. Câu trả lời đúng cho bất kỳ sản phẩm nào nhắm tới người dùng Mỹ.
Tốt nhất cho: crypto-native, toàn cầu, theo dõi dòng tiền thông minh
Polymarket. Việc native trên Polygon nghĩa là dòng lệnh on-chain quan sát được; độ phủ sự kiện rộng hơn, đặc biệt ở địa chính trị, crypto và giải trí.
Tốt nhất cho: arbitrage chéo sàn
Cả hai, ghép cặp. Hãy xây bot trên một sàn trước (thường là Kalshi vì auth gọn hơn); thêm Polymarket khi logic khớp của bạn đã vững.
Tốt nhất cho: khám phá hợp đồng bằng ngôn ngữ tự nhiên trong một agent LLM
API Pick Prediction Markets Search. Một POST, trả về các kết quả khớp được xếp hạng trên cả hai sàn, 50 credit mỗi lần gọi, chỉ khi thành công. Dùng thử →

Hướng đi sắp tới

Thị trường dự đoán đang nhận được mức độ chú ý chính thống bất thường ngay lúc này: khối lượng lớn hơn quanh bầu cử Mỹ, các sự kiện FOMC, thể thao và những câu hỏi về AI-takeoff; tích hợp rộng hơn với các trang tin tức làm nổi bật xác suất ngụ ý; và một làn sóng công cụ cho lập trình viên (các bài Show HN, repo GitHub) đều hội tụ về cùng một chủ đề — 'phải có ai đó viết CCXT cho thị trường dự đoán.'

Chúng tôi không cho rằng một thư viện thực-thi-hợp-nhất kiểu CCXT là hình thái đúng. Khác biệt về auth, thanh toán và chế độ quản lý quá sâu để có thể trừu tượng hóa gọn gàng mà không nói dối người dùng. Nhưng bài toán khám phá — với một câu hỏi bằng ngôn ngữ tự nhiên, tìm những hợp đồng vốn đã tồn tại — thì giải được bằng tìm kiếm ngữ nghĩa, và đó chính là việc API Pick Prediction Markets Search làm. Tìm hợp đồng; đặt lệnh tại sàn.

Câu hỏi thường gặp

Sàn nào có nhiều hợp đồng hơn?

Tại thời điểm viết bài, cả hai đều niêm yết hàng chục nghìn thị trường đang hoạt động. Polymarket thiên về crypto-native và toàn cầu (chính trị, thể thao, crypto, sự kiện thời sự); Kalshi được CFTC quản lý và tập trung vào Mỹ (bầu cử, kinh tế, thời tiết, thể thao). Phân bố khối lượng thay đổi theo danh mục — với bầu cử Mỹ thì Kalshi thường sâu hơn; với chính trị toàn cầu và các câu hỏi crypto-native thì là Polymarket.

Vì sao các thư viện 'hợp nhất' mã nguồn mở cứ liên tục xuất hiện trên Show HN?

Vì nhu cầu có thật và chưa ai giải quyết tốt. Những bài Show HN như 'Open-source library to unify Polymarket and Kalshi APIs' và 'dr-manhattan — CCXT for Prediction Markets' là những mẫu lặp đi lặp lại. Thách thức là khớp các hợp đồng tương đương (cùng kết cục, cách diễn đạt khác) và hòa giải ngữ nghĩa thanh toán. Các thư viện thường làm tốt phần bọc auth nhưng dừng lại trước khâu khớp hợp đồng.

Làm sao để arbitrage chéo sàn cơ bản?

Về mặt khái niệm: tìm hai hợp đồng giải quyết theo cùng một kết cục trên các sàn khác nhau, kiểm tra xác suất ngụ ý, lấy bên 'No' giá cao hơn và bên 'Yes' giá thấp hơn, giữ đến khi giải quyết. Trên thực tế, ma sát nằm ở khâu thực thi: phí gas của Polymarket, nạp USD của Kalshi, khớp lệnh một phần, và bài toán khớp ở trên. Phần lớn các bot arbitrage chạy thực tế trên GitHub vận hành trên một whitelist ánh xạ cặp hợp đồng được tuyển chọn thủ công thay vì khám phá chúng tự động.

Polymarket có hợp pháp ở Mỹ không?

Polymarket hiện không được phép cho người dùng Mỹ; quyền truy cập bị chặn theo địa lý. Kalshi được CFTC quản lý và hợp pháp ở Mỹ. Nếu bạn đang xây sản phẩm cho người dùng Mỹ, Kalshi là lựa chọn duy nhất. Nếu bạn xây trên phạm vi toàn cầu, Polymarket mang lại độ phủ thị trường rộng hơn.

API Pick nằm ở đâu trong stack này?

API Pick Prediction Markets Search giải quyết bài toán 'khám phá': với một câu hỏi bằng ngôn ngữ tự nhiên (ví dụ 'Fed cắt lãi suất trước cuối năm'), nó trả về các kết quả khớp ngữ nghĩa được xếp hạng trên các hợp đồng Polymarket và Kalshi trong một lần gọi POST. Chúng tôi không thay thế các API thực thi lệnh — để đặt lệnh bạn vẫn truy cập trực tiếp từng sàn. Chúng tôi làm cho việc tìm đúng thị trường trở nên dễ dàng.

Các API dùng trong bài viết này

Sarah Choy
Viết bởi
Sarah Choy
CEO, API Pick

Sarah Choy là CEO của API Pick. Cô viết về việc xây dựng các API sẵn sàng cho production cho AI agent và quy trình LLM.