Polymarket Bot Tutorial · الفصل 15 من 32

روبوتات البنية الدقيقة للأسواق الرياضية على Polymarket: أفضلية أثناء المباراة، سوء التسعير المدفوع بنتيجة اللقاء، وسم NBA (745) ووسم Tennis (864)، ومصادر البيانات الحية، وأنماط التنفيذ لأسواق الرياضة عالية التردد.

ما يغطيه هذا الفصل

الأسواق الرياضية هي الجزء غير السياسي الأكثر نشاطًا باستمرار على Polymarket. الروبوتات التي تنجح تقع في فئتين واضحتين: روبوتات اقتناص الخط قبل المباراة التي تتداول بمجرد تثبيت الخط، وروبوتات البنية الدقيقة أثناء المباراة التي تتفاعل مع حركة دفتر الأوامر خلال اللعب. يغطي هذا الفصل كلا النوعين مع معرّفات الوسوم المحددة، ومصادر البيانات، وحدود التأخير الزمنية المناسبة لكل منهما.

الأسواق الرياضية هي الجزء غير السياسي الأكثر ازدحامًا على Polymarket. نمط التنفيذ الذي ينجح يجمع بين بث نتيجة حيّة (ESPN, PandaScore) وإشارات البنية الدقيقة لدفتر الأوامر. يغطي هذا الفصل ما ينجح في NFL وNBA وكرة القدم والتنس تحديدًا، وأين يختلف esports.

  • لماذا يمكن تداول الأسواق الرياضية
  • قبل المباراة مقابل أثناء المباراة (روبوتات مختلفة)
  • معرّفات الوسوم الموثقة (745 NBA، 864 Tennis)
  • مصادر البيانات: ESPN، APIs الرسمية، على الشاشة
  • ميزانية التأخير الزمني أثناء المباراة
  • فخ 0.99 / 0.01
  • Code: الاشتراك في دفتر مباراة والتفاعل

Why sports markets are tradeable

الأسواق الرياضية تُغلق ضمن أطر زمنية محددة (من ساعات إلى أيام)، ولديها بيانات حية عامة، وتجذب تدفق أوامر مستمرًا أثناء المباريات. هذه العناصر الثلاثة كلها ضرورية لسوق قابل للتداول - فالأسواق السياسية تفتقر إلى "الإطار الزمني المحدد"، وأسواق الطقس تفتقر إلى "التدفق المستمر"، والبطولات الغامضة تفتقر إلى "البيانات الحية العامة".

كما أن قاعدة المتداولين في الأسواق الرياضية أكثر تنوعًا من، مثلًا، أسواق الانتخابات. المراهنون العاديون على الرياضة يضعّرون عاطفيًا؛ أما المتداولون المطلعون فيصححون السعر باتجاه القيمة العادلة مع مرور المباراة. والفجوة بين الاثنين هي أفضلية الروبوت.

توزيع الحجم غير متساوٍ: يوم أحد في NFL قد يدور فيه مئات الملايين من الدولارات عبر أسواق Polymarket الرياضية؛ بينما قد لا يتجاوز لقاء في الدوري السعودي للمحترفين مساء الثلاثاء 50 ألف دولار. صمّم استراتيجيتك بحسب المكان الذي توجد فيه الحركة فعلًا.

Pre-game vs in-game (different bots)

تصميمان مختلفان جذريًا للروبوت.

Pre-game line-catcher: يفحص الأسواق التي فُتحت للتو، يحدد الخطوط المسعّرة بشكل خاطئ مقارنة بنموذجك أو مقارنةً بمنصة أدق، ثم يضع FOK buy. يحتفظ بالمركز حتى in-play، وأحيانًا حتى التسوية النهائية. السرعة: دقائق لا ثوانٍ. الأفضلية: النموذج + line-shopping.

In-game microstructure: يشترك في WebSocket لدفتر أوامر المباراة الحي، ويتفاعل مع إشارات عدم التوازن + أحداث الأهداف/التسجيل خلال ثوانٍ. السرعة: ثوانٍ لا دقائق. الأفضلية: زمن الوصول + قراءة تدفق الأوامر.

النوعان يشتركان في القليل جدًا من الشيفرة. لديهما ملفات مخاطر مختلفة، ومصادر بيانات مختلفة، واستراتيجيات خروج مختلفة. الروبوت الذي يحاول فعل الأمرين غالبًا لا يتقن أيًّا منهما؛ اختر واحدًا.

Verified tag IDs (745 NBA, 864 Tennis)

معرّفات الوسوم الإنتاجية الموثقة في مايو 2026 للفئات الرياضية الرئيسية. استخدمها لتصفية استدعاءات /events بكفاءة.

Sport / LeagueTag IDTag slugNotes
NBA745nbaأعلى حجم من Oct-Jun
NFL450nflالذروة Sun/Mon Sep-Feb
Tennis (all)864tennisعلى مدار السنة، بحسب دورة البطولات
Soccer (general)1059soccerيُدمج مع الوسوم الفرعية أدناه
EPL739epl
UCL2186uefa-champions-league
Esports (all)702esportsLoL+CS2+Valorant+Dota
MLB1245mlbالذروة Apr-Oct
NHL823nhlالذروة Oct-Jun

معرّفات الوسوم مستقرة عبر السنوات. تُضاف وسوم جديدة (Saudi Pro League, IPL) لكن الوسوم القديمة لا يُعاد ترقيمها.

Data sources: ESPN, official APIs, on-screen

بالنسبة للرياضات التقليدية، تغطي ESPN scoreboard API المجانية كل ما تحتاجه: النتائج، الفترة/الساعة، احتمال الفوز، وأحيانًا موقع التسديدة. لا يلزم مفتاح؛ والتقييد الوحيد يكون على مستوى IP. نمط نقطة النهاية: https://site.api.espn.com/apis/site/v2/sports/<sport>/<league>/scoreboard.

بالنسبة إلى esports، لا يوجد تغطية من ESPN. الخيارات: PandaScore (30-60 دولار/شهر، المعيار الصناعي)، HLTV (خاص بـ CS2 فقط، قابل للاستخراج scraping، بلا API)، Liquipedia (تُدار مجتمعيًا، قابلة للاستخراج، وتحديثاتها أبطأ).

تعمل التغذيات على الشاشة (الدفع مقابل بث تلفزيوني وقراءة لوحة النتيجة OCR) لكنها ثقيلة تشغيليًا. يُنصح بها فقط إذا كانت لديك استراتيجية تتطلب تحديثات أسرع من 3 ثوانٍ في رياضة لا تغطيها أي API في الزمن الحقيقي.

Latency budget for in-game

ميزانية التأخير من البداية إلى النهاية لروبوت تفاعلي أثناء المباراة.

  • حدث التسجيل/النتيجة يقع: t=0
  • تغذية المصدر تعكسه: t+3-15s (ESPN: حوالي 10s؛ PandaScore: حوالي 3s)
  • روبوتك يقرأ التغذية: t+10-16s
  • الروبوت يقرر الإجراء: +50ms
  • وضع أمر FOK: +200-500ms
  • يتم المطابقة على CLOB: +300-1000ms (الشبكة + المطابقة)

الإجمالي: 11-17 ثانية. أسرع الشركات الاحترافية تحقق 3-5 ثوانٍ من البداية إلى النهاية عبر تغذيات مدفوعة مميزة وVPS قريب من المصدر co-located. أما الروبوتات التجزئية التي تعمل على hosts عادية ومع ESPN المجانية فتكون في الطرف الأبطأ.

الاستراتيجيات التي تحتاج أقل من 5 ثوانٍ غير مجدية للتجزئة. أما الاستراتيجيات التي تنجح في نافذة 10-17 ثانية فهي: اقتناص الخط بعد التسجيل، ومجاراة المبالغات في رد الفعل، وصفقات اليقين المتأخرة.

The 0.99 / 0.01 trap

أكثر فشل شائع لروبوتات الرياضة أثناء اللعب: شراء المرشح الأوفر حظًا بسعر 0.99 مع بقاء دقيقة واحدة، متوقعًا ربحًا سهلًا قدره +1 سنت. يفشل ذلك لثلاثة أسباب.

أولًا، الاحتمال الضمني 1% لعودة الفريق الأضعف ليس صفرًا - فالعودة المتأخرة تحدث بتكرار غير مهمل. فوز مؤكّد بنسبة 99.5%، إذا طُبق 200 مرة، ينتج عنه خسارة واحدة بحجم المركز الكامل.

ثانيًا، الفارق عند 0.99/0.01 يعني أنك تدفع 99 سنتًا للسهم، وتربح 1 سنت عند النجاح، وتخسر 99 سنتًا عند الانقلاب النادر. العائد مقابل المخاطرة قاسٍ جدًا.

ثالثًا، الروبوت الذي يستخدم بيع GTC عند 0.999 نادرًا ما يتم ملؤه - لا يوجد مشترون بذلك السعر. فيستمر المركز حتى التسوية. إذا فاز، فقد ربحت سنتًا واحدًا. وإذا حدث الانقلاب، فستخسر 99 سنتًا.

هذا الفخ هو خسارة حقيقية للأموال على أيدي المطورين الذين لم يجروا الحسابات. ابتعد عن الأسواق المسعّرة عند 0.95+ ما لم تكن استراتيجيتك مصممة تحديدًا لنمط redemption-arbitrage.

Code: subscribe to a games book and react

مرجع: اشترك في WebSocket لمباراة NBA محددة، وسجّل تحديثات الدفتر، وفعّل FOK عند إشارة عدم التوازن.

import websocket, json
THRESHOLD = 0.5  # imbalance level to trigger

def on_message(ws, message):
    msg = json.loads(message)
    if msg.get("event_type") != "book": return
    bids = msg.get("bids", [])
    asks = msg.get("asks", [])
    bid_depth = sum(float(b["price"]) * float(b["size"]) for b in bids[:5])
    ask_depth = sum(float(a["price"]) * float(a["size"]) for a in asks[:5])
    total = bid_depth + ask_depth
    if total < 100: return  # too illiquid
    imb = (bid_depth - ask_depth) / total
    if abs(imb) > THRESHOLD:
        print(f"signal imb={imb:.2f} bid={bid_depth:.0f} ask={ask_depth:.0f}")
        # fire FOK here

ws = websocket.WebSocketApp(
    "wss://ws-subscriptions-clob.polymarket.com/ws/market",
    on_open=lambda ws: ws.send(json.dumps({"type":"Market","markets":["<CONDITION_ID>"]})),
    on_message=on_message
)
ws.run_forever()

إضافات إنتاجية: فترة تهدئة بين الإشارات، حد أقصى للمخزون لكل token، وإيقاف عند قدم دفتر الأوامر (عدم وصول أي رسالة خلال 30 ثانية).

الأسئلة الشائعة

ما هي وسوم الرياضات الأكثر نشاطًا على Polymarket؟
NBA (tag_id 745)، وTennis (tag_id 864)، وsoccer (يختلف بحسب البطولة) تتصدر حجم التداول خلال 24 ساعة في مواسمها. يرتفع NFL أسبوعيًا خلال الموسم العادي والـ playoffs. لقد تحققنا من معرّفات وسم NBA وTennis في الإنتاج - أما البقية فيجب التحقق منها عبر gamma /tags قبل الاعتماد عليها.
هل يمكنني تشغيل bot على أسواق الرياضة أثناء المباراة بشكل مربح؟
ربما - لكنه صعب. الأفضلية حقيقية (تسعير نتيجة المباراة الحية غالبًا ما يكون خاطئًا لمدة 30-90 ثانية) لكن هناك روبوتات أخرى تراقب أيضًا. أفضل النتائج التي رأيناها جاءت من الجمع بين مصدر بيانات سريع للنتيجة الحية مع قواعد بسيطة ("الفريق الخصم سجل، والسوق لم يتحرك بعد، اشترِ"). أما stat-arb الخالص دون مصدر البيانات فيخسر أمام المنافسين الأسرع.
من أين أحصل على بيانات رياضية حية؟
لدى ESPN.com endpoints JSON غير رسمية تُرجع النتائج الحية - وهي كافية للعديد من الاستراتيجيات. APIs الرسمية (NBA Stats API, NFL public endpoints) أكثر موثوقية لكنها أبطأ. حسابات Twitter الخاصة بالمراسلين المتابعين للمصادر الداخلية تعطي نصًا لكن تتطلب parsing عبر LLM. لا شيء منها بمستوى HFT؛ كلها "سريعة بما يكفي" للتجزئة.
ما هو فخ 0.99 / 0.01؟
عندما يكون سوق رياضي عند 99 سنتًا YES (أي الفوز شبه المؤكد)، لا يتبقى تقريبًا أي upside، ويمكن لتحرك بسنت واحد أن يمحو مكسبًا متوقعًا لعدة أشهر. كثير من الروبوتات تقع في فخ الشراء عند 0.99 chasing آخر سنت ثم تتلقى ضربة عندما يخفض حدث غير متوقع السعر إلى 0.85. قاعدة صارمة: لا تشترِ فوق ~0.95 ما لم تكن حسابات expected value لديك محكمة تمامًا.
كيف تقارن Polymarket sports مع sportsbooks التقليدية؟
لا يوجد house edge على الـ spread (مقابل نحو 5-10% vig في FanDuel/DraftKings)، لكن السيولة أضعف والفروق قد تكون أوسع. تتميز Polymarket في الأحداث التي تُسعّرها الكتب التقليدية بأقل من قيمتها - البطولات الدولية، esports، والأسواق المتخصصة. أما في NFL/NBA السائدين، فالكتب التقليدية أكثر سيولة لكنها تكلف أكثر بسبب الـ vig.
هل يمكن لروبوتي التداول عبر عدة أسواق رياضية في الوقت نفسه؟
نعم - بل ينبغي ذلك. تعمل البنية الدقيقة الرياضية أفضل بوصفها محفظة من 5-20 مباراة متزامنة. حد مركز لكل مباراة (مثلًا 50 USD)، وحد للمحفظة (مثلًا 500 USD)، وتعرّض غير مترابط عبر المباريات. التركيز على مباراة واحدة فقط يضخّم التباين إلى أقصى حد.