واجهة Polymarket مقابل Kalshi: دليل مطوّر جنبًا إلى جنب (المصادقة، CLOB، WebSocket، البيانات التاريخية)

تُشغّل Polymarket وKalshi البدائيّة نفسها — عقود نعم/لا على CLOB — عبر واجهتين مختلفتين تمامًا. واحدة تتطلّب توقيعات EIP-712 ومحفظة Polygon؛ والأخرى نقطة نهاية REST مع FIX اختياري. إن كنت تبني وكيل تنبّؤ، أو روبوت مراجحة، أو مراقب أموال ذكية، فإليك الدليل جنبًا إلى جنب الذي كان يجب أن يوجد سلفًا.
الخلاصة
- •تستخدم Polymarket طلبات موقَّعة بـ EIP-712 تُقدَّم إلى CLOB على Polygon — تسري عملية إعداد المحفظة ورسوم الغاز.
- •تستخدم Kalshi مصادقة REST + WebSocket قياسية (بريد/كلمة مرور ← token)، إضافةً إلى بوّابة FIX اختيارية للمستخدمين المؤسّسيين.
- •كلتاهما تكشف دفتر الأوامر، والصفقات، والبيانات التاريخية، لكن المخطّط ودلالات التسوية تختلفان بما يكفي لجعل المكتبات 'الموحَّدة' أكثر موضوعات Show HN طلبًا في هذا الركن من أدوات العملات/الكمّي.
- •المراجحة بين الساحات على العقود المكافئة هي نمط البناء الأشيع (أكثر من 10 روبوتات مفتوحة المصدر على GitHub).
- •API Pick Prediction Markets Search تلفّ الساحتين في نقطة نهاية POST واحدة لاكتشاف العقود بلغة طبيعية — 50 رصيدًا للنداء، نتائج دلالية مرتّبة.
لماذا توجد هذه المقالة
إن قضيت أيّ وقت في البناء على أسواق التنبّؤ، فأنت تعرف الطلب القياسي: 'أريد الاستعلام عن Polymarket وKalshi من نفس سكربت Python واسترجاع قائمة نظيفة من العقود المتطابقة.' سلسلة تعليقات HN على كل Show HN لأسواق التنبّؤ تتقارب حتمًا إلى هذا — هناك نمط متكرّر من تدوينات "CCXT لأسواق التنبّؤ"، ما يشير إلى أن الطلب موجود وأن الحلول القائمة لا تصيب الهدف تمامًا.
الصعوبة حقيقية. تحلّ الساحتان البدائيّة نفسها — عقود "نعم/لا" الثنائية على دفتر أوامر محدود مركزي — لكنهما تكشفانها عبر واجهتين مختلفتين بشكل صارخ. إليك رؤية مطوّر عاملة لكلتيهما، جنبًا إلى جنب، مع الكود الذي تحتاجه فعلًا.
ساحتان، معماريتان
Polymarket
- السلسلة: Polygon (تسويات USDC.e)
- المصادقة: توقيع بيانات مُكتَّبة بـ EIP-712 بمفتاح محفظة خاصّ؛ لا token حامل تقليدي
- وضع الأوامر: طلب موقَّع يُقدَّم إلى CLOB API؛ والغاز تدفعه Polymarket عبر المعاملات الفوقية (meta-transactions)
- اكتشاف الأسواق: Gamma API (REST + JSON) لتصفّح الأسواق النشطة، إضافةً إلى CLOB API منفصل لدفتر الأوامر الحيّ
- البيانات الآنية: تيار WebSocket لتحديثات دفتر الأوامر والصفقات
- البيانات التاريخية: نقاط نهاية REST للصفقات؛ ولقطات يومية قابلة للتنزيل منفصلةً
Kalshi
- التسوية: بالدولار عبر ACH والتحويل البنكي (يلزم بنك أمريكي)
- المصادقة: بريد + كلمة مرور ← token حامل، أو مفتاح API (مؤسّسي)
- وضع الأوامر: REST POST مُصادَق عليه قياسي إلى
/portfolio/orders - اكتشاف الأسواق: نقاط نهاية REST للأحداث، والأسواق، والسلاسل؛ مخطّط نظيف
- البيانات الآنية: WebSocket وFIX (مؤسّسي) للتنفيذات، ودفتر الأوامر، والمؤشّر
- البيانات التاريخية: نقاط نهاية REST للصفقات؛ وبيانات تسوية السوق والتسوية مباشرة
جنبًا إلى جنب
| Polymarket | Kalshi | API Pick | |
|---|---|---|---|
| المصادقة | طلبات موقَّعة بـ EIP-712 + محفظة Polygon | بريد/كلمة مرور ← token حامل؛ أو مفتاح API | ترويسة x-api-key (اكتشاف للقراءة فقط) |
| التسوية | USDC على Polygon | تحويل بنكي بالدولار (أمريكي فقط) | غير متاح (بحث فقط) |
| القانونية الأمريكية | محجوب جغرافيًا (ليس أمريكيًا) | مُنظَّم من CFTC | غير متاح |
| آنيّ | WebSocket | WebSocket + FIX | غير متاح |
| تاريخيّ | صفقات REST + لقطات | صفقات REST + تسوية | البحث يُرجِع روابط إلى المصدر |
| أفضل ملاءمة | عملاتي أصيل، أسواق عالمية، تتبّع الأموال الذكية | مُنظَّم أمريكيًا، الانتخابات والاقتصاد | اكتشاف العقود بين الساحات |
كود عامل: 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.ثلاثة أنماط إنتاجية تعمل فعلًا
1. روبوت المراجحة بين الساحات
النمط الأشيع على GitHub: قائمة بيضاء مُنسَّقة من "هذا العقد على Polymarket يُسوَّى على النتيجة نفسها كهذا العقد على Kalshi." يراقب الروبوت كلا الدفترين، يحسب الاحتمال الضمني، ويتّخذ مركزًا عندما يعبر الفارق عتبةً. أمثلة: ImMike/polymarket-arbitrage وrealfishsam/prediction-market-arbitrage-bot.
الجزء الصعب هو القائمة البيضاء. "Will the Fed cut by 25 bps at the December meeting" يبدو متطابقًا لإنسان لكن مصادر التسوية والصياغة الدقيقة تختلفان؛ ويخطئ المُطابِق الآلي كثيرًا بما يكفي ليجعل الروبوتات الحقيقية تستخدم تعيينات منسَّقة بشريًا.
2. مراقب الأموال الذكية
الحيتان على Polymarket مرئيون على السلسلة. يراقب المراقب Polygon بحثًا عن تدفّق أوامر كبير على أسواق محدّدة، يُظهِر المراكز الكبيرة، ويعلّم تحرّكات الأسعار السريعة قبل أن تصل العناوين إلى واجهات الأخبار. اقرِنه مع News Search للتأكّد ممّا إذا كان التحرّك الظاهر مدفوعًا بالأخبار أم مجرّد مضاربة.
3. تغذية التنبّؤ لوكيل نموذج لغة
سحب أسعار Polymarket / Kalshi الحالية إلى سياق وكيل نموذج اللغة يتيح للنموذج إعطاء إجابات مؤسَّسة على الاحتمال: "تشير أسواق المراهنة الحالية إلى احتمال نحو 65% لحدوث X". هذه حالة الاكتشاف التي تغطّيها API Pick — بإعطاء سؤال بلغة طبيعية من الوكيل، تُرجِع عقودًا مرتّبة ليقتبس الوكيل السعر في إجابته.
مزالق شائعة (مجمَّعة من تعليقات HN)
- توقيع EIP-712 لـ Polymarket — توقيع الطلب حتميّ لكن أخطاء الأدوات شائعة. استخدم
py-order-utilsبدلًا من صنع خاصّتك. معظم خسائر الروبوتات المبكّرة تأتي من عدم تطابق التواقيع التي يرفضها الـ API بصمت. - حدود معدّل Kalshi — موثَّقة بـ 100 req/sec لكنها أقلّ لبعض نقاط النهاية في أيام الأحداث المزدحمة (ليالي الانتخابات، FOMC). ابنِ إعادة المحاولة مع التراجع في عميلك.
- قفزات غاز Polymarket — قد يقفز غاز Polygon في أيام الحجم الكبير. تدعم Polymarket معظم وضع الأوامر عبر المعاملات الفوقية لكن التسوية والسحب على حساب المستخدم. احسب لهذا في حسابات الأرباح والخسائر.
- عدم تطابق التسوية — المكافئات الظاهرة تُسوَّى أحيانًا بشكل مختلف. اقرأ دائمًا بنود مصدر التسوية لكلا العقدين قبل التداول الزوجي.
- انقطاعات WebSocket — لدى كلتا الساحتين تذبذبات WebSocket روتينية. منطق إعادة الاتصال مع إعادة تشغيل أرقام التسلسل غير قابل للتفاوض لأيّ روبوت إنتاجي.
الاختيار السريع
إلى أين يتّجه هذا
تحظى أسواق التنبّؤ بقدر غير اعتيادي من الاهتمام العام الآن: أحجام أكبر حول الانتخابات الأمريكية، وأحداث FOMC، والرياضة، وأسئلة انطلاق الذكاء الاصطناعي؛ وتكاملات أوسع مع مواقع الأخبار التي تُظهِر الاحتمالات الضمنية؛ وموجة من أدوات المطوّرين (Show HNs، ومستودعات GitHub) تتقارب على الموضوع نفسه — 'يجب أن يكتب أحدٌ CCXT لأسواق التنبّؤ.'
لا نظنّ أن مكتبة تنفيذ موحَّد بنمط CCXT هي الشكل الصحيح. فالاختلافات في المصادقة، والتسوية، والنظام التنظيمي أعمق من أن تُجرَّد بنظافة دون الكذب على المستخدم. لكن مشكلة الاكتشاف — بإعطاء سؤال بلغة طبيعية، أوجِد العقود الموجودة سلفًا — قابلة للحلّ بالبحث الدلالي، وذلك ما تفعله API Pick Prediction Markets Search. أوجِد العقد؛ وضَع الأمر في الساحة.
الأسئلة الشائعة
أيّ ساحة لديها عقود أكثر؟
حتى وقت الكتابة، تُدرِج كلتاهما عشرات الآلاف من الأسواق النشطة. تميل Polymarket إلى الطابع العملاتي الأصيل والعالمي (السياسة، الرياضة، العملات، الأحداث الجارية)؛ بينما Kalshi مُنظَّمة من CFTC ومركّزة أمريكيًا (الانتخابات، الاقتصاد، الطقس، الرياضة). يتفاوت توزيع الحجم حسب الفئة — للانتخابات الأمريكية تكون Kalshi عادةً أعمق؛ وللسياسة العالمية والأسئلة العملاتية الأصيلة تكون Polymarket كذلك.
لماذا تستمرّ المكتبات 'الموحَّدة' مفتوحة المصدر بالظهور على Show HN؟
لأن الطلب موجود ولم يحلّه أحد جيدًا. تدوينات Show HN مثل 'Open-source library to unify Polymarket and Kalshi APIs' و'dr-manhattan — CCXT for Prediction Markets' أنماط متكرّرة. التحدّي هو مطابقة العقود المكافئة (النتيجة نفسها، صياغة مختلفة) والتوفيق بين دلالات التسوية. تتقن المكتبات عادةً غلاف المصادقة لكنها تتوقّف قبل مطابقة العقود.
كيف أقوم بمراجحة أساسية بين الساحات؟
مفاهيميًا: أوجِد عقدين يُسوَّيان على النتيجة نفسها في ساحتين مختلفتين، تحقّق من الاحتمالات الضمنية، خذ جانب 'لا' الأعلى سعرًا وجانب 'نعم' الأدنى سعرًا، واحتفظ حتى التسوية. عمليًا الاحتكاك في التنفيذ: رسوم غاز Polymarket، وتمويل Kalshi بالدولار، والتنفيذ الجزئي، ومشكلة المطابقة أعلاه. تعمل معظم روبوتات المراجحة الحيّة على GitHub بقائمة بيضاء مُنسَّقة من تعيينات أزواج العقود بدلًا من اكتشافها تلقائيًا.
هل Polymarket قانونية في الولايات المتحدة؟
Polymarket غير مصرَّح بها حاليًا للمستخدمين الأمريكيين؛ والوصول محجوب جغرافيًا. أما Kalshi فمُنظَّمة من CFTC وقانونية أمريكيًا. إن كنت تبني منتجًا للمستخدمين الأمريكيين، فإن Kalshi هي الخيار الوحيد. وإن كنت تبني عالميًا، فإن Polymarket تحمل تغطية سوقية أوسع.
أين تتموضع API Pick في هذه الحزمة؟
API Pick Prediction Markets Search تحلّ مشكلة 'الاكتشاف': بإعطاء سؤال بلغة طبيعية (مثل 'Fed cuts rates by year-end')، تُرجِع مطابقات دلالية مرتّبة عبر عقود Polymarket وKalshi في نداء POST واحد. لا نستبدل واجهات تنفيذ الأوامر — لوضع الأوامر ما زلت تذهب إلى كل ساحة مباشرةً. نجعل العثور على السوق الصحيح سهلًا.
الواجهات البرمجية المستخدمة في هذا المقال
سارة تشوي هي الرئيسة التنفيذية لشركة API Pick. تكتب عن بناء واجهات برمجية جاهزة للإنتاج لوكلاء الذكاء الاصطناعي وسير عمل نماذج اللغة.