كائن Market
كائن السوق الموحَّد الذي تعيده GET /v2/markets وGET /v2/pairs/{market_id}، ومغلَّف البث في الوقت الفعلي.
تقدّم الـ API كائن Market موحَّدًا واحدًا عبر الكتالوج، وتفصيل الزوج، وبث السوق. المراجحة المؤكدة مورد Opportunity منفصل لأن له حقول هوية ومال وتنفيذ مختلفة.
GET /v2/markets: الكتالوج، صف واحد لكل مباراة مطابَقة. يملأ ربط السجل المباشر المتأخر الأسعار عند توفر إطار؛ وإلا يبقى الصف بلا سعر.GET /v2/pairs/{market_id}: سوق واحدة بمعرّفها، مع تطبيقinclude=ids,depth,settlementافتراضيًا: معرّفات المنصتين، والثقة، وتفصيل الدفتر لكل نتيجة، وإفصاح التسوية.GET /v2/arbitrage: Opportunities مؤكدة بأرجل لقطة مختارة بدقة، وتقديرات حجم متحفظة تشمل الرسوم، وحداثة الاستجابة. ليست مرشّح Market.
كائن السوق
{
"id": "dino_8f3a1c92-47e8-4c3f-b9d2-f1a8e6c4d5f2",
"slug": null,
"category": "sports",
"market_type": "moneyline",
"sport": "baseball",
"competition": "MLB",
"tags": ["baseball", "mlb", "moneyline", "sports"],
"title": "Nyy vs Bos",
"home": null,
"away": null,
"start_time": "2026-07-01T23:05:00+00:00",
"status": "open",
"match": "high_confidence",
"signal": "spread",
"spread_pts": 2.0,
"potential_arb_pct": null,
"coverage": { "kalshi": true, "polymarket": true },
"outcomes": [
{ "key": "NYY", "name": "NYY", "kalshi": 0.52, "polymarket": 0.54, "cheaper": "kalshi" },
{ "key": "BOS", "name": "BOS", "kalshi": 0.50, "polymarket": 0.51, "cheaper": "kalshi" }
],
"result": null,
"updated_at": "2026-07-01T22:55:00+00:00",
"priced_at": "2026-07-01T22:55:00+00:00",
"links": { "kalshi": "https://kalshi.com/markets/KXMLBGAME-26JUL01NYYBOS", "polymarket": null }
}
حقول الكائن
| الحقل | النوع | المعنى |
|---|---|---|
id | string | المعرّف الموحَّد الثابت، dino_<uuid>. استخدمه لاستدعاء GET /v2/pairs/{market_id}. |
slug | string|null | معرّف اسم نظيف. غير مُفعَّل بعد؛ دائمًا null حاليًا. |
category | string | نطاق الاكتشاف الموحَّد المطلوب، مثل sports أو weather أو crypto أو economics. |
market_type | string | بنية/طرح العقد المطلوب، مثل moneyline أو outright أو weather_high. |
sport | string|absent | مفتاح رياضة عام، صالح للرياضة فقط. |
competition | string|absent | بطولة خاصة بالرياضة، مثل MLB. |
location | string|absent | موقع خاص بالطقس فقط. |
asset | string|absent | أصل عملة رقمية/سلعة. |
indicator / basis | string|absent | مؤشر اقتصادي وأساس القياس. |
institution | string|absent | مؤسسة بنك مركزي. |
tags | string[] | تلميحات اكتشاف موحَّدة؛ ليست أبدًا دليل هوية أو تسوية. |
title | string|null | عنوان مبذول فيه أفضل جهد، مبني من معرّفات الفرق المطابَقة. |
home / away | string|null | غير مُفعَّل بعد؛ دائمًا null حاليًا. |
start_time | string|null | وقت البدء بصيغة ISO-8601 UTC. |
status | string | open أو resolving أو closed أو settled. راجع Status. |
match | string | تسمية ثقة المطابقة. دائمًا high_confidence حاليًا للصفوف المعروضة. |
signal | string | تصنيف السعر/التكافؤ من مُسلسِل Market، إما "arb" أو "spread". لا يحدد Opportunity مُطلَقة؛ استخدم /v2/arbitrage لذلك. |
spread_pts | number|null | أقصى فارق بين المنصتين لكل نتيجة، بالنقاط المئوية. null ما لم تُسعَّر كل نتيجة على المنصتين. |
potential_arb_pct | number|null | العائد الإجمالي من سعر الطلب إلى سعر الطلب، قبل رسوم المنصة. يُملأ فقط عندما تكون signal هي "arb". رصد للقطة عند priced_at. |
coverage | object | { kalshi, polymarket }، كل قيمة true فقط إذا كانت كل نتيجة مسعَّرة على تلك المنصة. |
outcomes | array | تسعير لكل نتيجة. راجع Outcomes. فارغ عندما يكون الصف بلا سعر. |
result | object|null | حكم التسوية، يُملأ فقط بعد أن تصبح status هي settled. |
updated_at | string|null | آخر مرة أعاد فيها محرك المطابقة تحليل هوية هذا الزوج وشروط تسويته. |
priced_at | string|null | وقت التقاط الإطار المباشر المعروض على صفوف REST/البث المسعَّرة. على صف الهوية غير المسعَّر تعود إلى updated_at، آخر كتابة هوية للزوج. |
links | object | { kalshi, polymarket } روابط المنصتين. polymarket هي null حتى يتوفر شكل رابط ثابت. |
Outcomes
كل مدخل في outcomes هو نتيجة سوق واحدة (مثل فريق) مع أسعارها على المنصتين:
| الحقل | النوع | المعنى |
|---|---|---|
key / name | string | تسمية النتيجة، مثل اسم فريق. |
kalshi | number|null | سعر الطلب على Kalshi، من 0 إلى 1. null إذا لم يكن متاحًا؛ لا يكون أبدًا 0 للدلالة على الغياب. |
polymarket | number|null | سعر الطلب على Polymarket، من 0 إلى 1. null إذا لم يكن متاحًا. |
cheaper | string|null | المنصة ذات سعر الطلب الأقل لهذه النتيجة، "kalshi" أو "polymarket". null إذا كان أحد الجانبين بلا سعر. |
مع include=depth، تحمل كل نتيجة أيضًا kalshi_book وpolymarket_book، وهما كائنان شقيقان يحملان ask وdepth ورمز/معرّف رمز المنصة. لا يحلّان أبدًا محل حقلَي السعر العدديين kalshi / polymarket.
Status
| القيمة | المعنى |
|---|---|
open | مطابَقة ومتابَعة بفعالية (تغطي أزواج active وreview داخليًا). |
resolving | مرت لحظة انتهاء صلاحية السوق، لكن مطابقة التسوية بين المنصتين لم تكتمل بعد. |
closed | مسحوبة دون حكم تسوية مسجَّل. |
settled | مسحوبة بحكم تسوية مسجَّل؛ result مُملوءة. |
فقط صفوف open تحمل signal غير spread. أي صف غير open يفرض دائمًا signal إلى spread وpotential_arb_pct إلى null، بصرف النظر عن أي أسعار مرفقة.
Signal
signal تصنيف متحفظ على مستوى Market، يُعاد اشتقاقه من الصف الحالي والأسعار المرفقة بذلك التسلسل. لا يُوثَق به أبدًا من تسمية مخزَّنة مؤقتًا. ولأن Opportunity مُطلَقة تخزّن منصة واحدة مختارة لكل نتيجة بينما يخزّن إطار سعر Market كلتا المنصتين، فإن /v2/arbitrage هو المجموعة الموثوقة الوحيدة للـ arb المفتوحة القابلة للتنفيذ حاليًا.
| القيمة | المعنى |
|---|---|
"arb" | مُكتسبة. كل ما يلي: الحالة open بتأكيدين أو أكثر، تكافؤ التسوية مؤكد، لا مخاطرة بدرجة خطورة high أو critical في مجموعة مخاطر الزوج الداخلية الكاملة، وكل نتيجة مسعَّرة على المنصتين. تُملأ potential_arb_pct. |
"spread" | كل ما ليس مراجحة مؤكدة. يشمل مباراة مطابَقة بشكل صحيح مع مخاطرة تسوية مُفصَح عنها، أو صف كتالوج بلا سعر، أو مرشحة في نطاق المراجعة. اقرأ settlement.risks (عبر include=settlement أو /v2/pairs/{market_id}) قبل معاملة صف spread على أنه قابل للتداول أصلًا. |
settlement.risks المعروضة لا تشمل أبدًا أحداث الإلغاء (cancel_*)؛ تُصفَّى تلك من جهة الخادم، بينما لا تزال بوابات signal تُقيَّم على المجموعة الداخلية الكاملة. يمكن لصف arb أن يحمل مع ذلك مدخلًا محدودًا غير متعلق بالإلغاء لا يكسر تكافؤ الحسم العادي، لذا لا تعني arb أن risks[] فارغة بالضرورة. اقرأ دائمًا كتلة التسوية قبل التصرف.
كيف تُنتَج هذه التصنيفات، بما في ذلك مسح المطابقة، والحد التقريبي، وبوابة الترقية الآلية، موضح في المطابقة والثقة.
عبر WebSocket
يركب كائن السوق قنوات markets:* كإطارات مسطَّحة: إطار market (الكائن الموحَّد الكامل، عند تغيّر الحالة) وإطار price (فرق مضغوط بمفتاح نتيجة key، عند تحرك السعر). كلا نوعَي الإطار موثَّقان في صفحة بث WebSocket.
الانطلاق من REST
GET /v2/arbitrage لا تحمل إزاحة بث؛ تحمل as_of وdelay_seconds. للبدء بـ Opportunities مفتوحة مؤكدة ثم البقاء مباشرًا، اقرأ /v2/arbitrage، ثم اتصل ببث WebSocket. لا يوجد ربط دقيق من لقطة إلى إزاحة، لذا عامل قراءة REST واتصال البث كرأيين مستقلين، وأزل التكرار باستخدام market_id الخاص بـ Opportunity مقابل معرّفات Market في البث. صفحة بث WebSocket توثّق الاتصال والاستعادة.