Polymarket Bot Tutorial · Chapter 16 of 32
المراجحة الإحصائية على Polymarket: أزواج عبر الأسواق (الأحداث المترابطة)، فروق Polymarket مقابل Kalshi، الارتداد إلى المتوسط، وكيفية تحديد حجم مراكز stat-arb عندما تُحسم الأسواق في النهاية.
ما الذي يغطيه هذا الفصل
تستغل المراجحة الإحصائية على Polymarket حالات التسعير الخاطئ العابرة بين الأسواق المترابطة - نفس الحدث على Polymarket مقابل Kalshi، أو الأسواق ذات الصلة داخل Polymarket نفسه. الفوارق صغيرة (عادة 1-3 سنتات) وهشة من الناحية التشغيلية. هذا الفصل صريح بشأن ما ينجح وما لا ينجح، ومخاطر التنفيذ متعدد الأطراف التي تُفشل معظم المحاولات.
تستغل المراجحة الإحصائية عبر الأسواق حالات عدم الاتساق المؤقت في التسعير بين Polymarket وKalshi، أو Polymarket وManifold، أو بين الأسواق المترابطة داخل Polymarket. الفوارق صغيرة (عادة 1-3 سنتات) وتتطلب تنفيذًا سريعًا على كلا الطرفين. هذا الفصل هو دليل عملي صريح، بما في ذلك التعقيد التشغيلي الذي يُسقط معظم المحاولات.
- ما المقصود بـ stat-arb في prediction markets
- أمثلة على فروق Polymarket مقابل Kalshi
- الأزواج داخل Polymarket (الأحداث المترابطة)
- الارتداد إلى المتوسط مقابل استمرار الاتجاه
- تحديد الحجم للأسواق التي تُحسم (وليس الدائمة)
- المخاطر: التباعد حتى ما بعد التسوية
- الكود: مراقب الأزواج ومشغّل العتبة
ما المقصود بـ stat-arb في prediction markets
تعني المراجحة الإحصائية في prediction markets التداول على الفارق بين سوقين يفترض أن يكون تسعيرهما متسقًا. هناك ثلاثة أنماط شائعة على Polymarket.
- Cross-venue: نفس الحدث على Polymarket وKalshi (أو Manifold، PredictIt). يفترض أن يتقارب التسعير؛ لكن عمليًا قد ينحرف 2-5 سنتات.
- Same-event-pair: الأصل مقابل مجموع الأجزاء في أسواق NegRisk متعددة النتائج. خاصية أن المجموع يجب أن يساوي 1 تتيح لك المراجحة عندما يكون مجموع الأجزاء أقل من 1.0.
- Correlated-event-pair: سوقان حول نتائج مترابطة (مثل: "ترامب رئيس في 1 يناير" مقابل "ترامب رئيس في 1 مارس"). يفترض أن يتسعّرا ضمن فرق 2-3 سنتات تقريبًا.
الفوارق صغيرة. والتعقيد التشغيلي حقيقي. معظم المحاولات تفشل في التنفيذ، لا في النظرية.
أمثلة على فروق Polymarket مقابل Kalshi
من خلال الملاحظة في 2025-26، تعرض Polymarket وKalshi نفس الأحداث الأمريكية الكبرى لكن بأسعار تختلف بنحو 1-4 سنتات بشكل مستمر. هذا الفارق موجود لأسباب هيكلية يجب أن تدخل في أي نموذج مراجحة.
العوامل الهيكلية:
- عدم تماثل الرسوم: Kalshi تأخذ 4-7% على الصفقات الرابحة (ويختلف ذلك حسب السوق)؛ Polymarket لا تأخذ taker fee. يجب أن تُصفّى معادلة المراجحة بعد احتساب اقتطاع Kalshi.
- علاوة مخاطر التسوية: عندما يكون حسم السوق غامضًا، قد يحسم UMA في منصة ما بشكل مختلف عن قرارات judges في المنصة الأخرى. السوق يضع هذا في التسعير.
- تركيبة المتداولين: Polymarket تميل إلى جمهور أصغر سنًا وأكثر ارتباطًا بالعملات الرقمية؛ بينما Kalshi تميل إلى المتداولين المحترفين / hedge. لذلك يختلفون على الأحداث نفسها بشكل منهجي.
تنجح المراجحة عندما يتجاوز الفارق العلاوة الهيكلية بالإضافة إلى الرسوم. فارق 5 سنتات في سوق تكون فيه العلاوة الهيكلية 1 سنت والرسوم المجمعة 1 سنت يمثل edge حقيقيًا قدره 3 سنتات.
الأزواج داخل Polymarket (الأحداث المترابطة)
داخل Polymarket، تكون أزواج الأحداث المترابطة أسهل في المراجحة من cross-venue. نفس هيكل الرسوم، نفس wallet، وتنفيذ ذري atomic execution ممكن.
أمثلة تتكرر فيها حالات التسعير غير المتسق:
- ترامب رئيس في تاريخ A مقابل ترامب رئيس في تاريخ B (حيث يكون B لاحقًا من A بأقل من 90 يومًا).
- هل سيصل Bitcoin إلى 100 ألف دولار بحلول 31 يوليو مقابل 100 ألف دولار بحلول 31 أغسطس.
- أرجل Yes مقابل No في نفس السوق الثنائي (يجب أن يساوي المجموع = 1.0؛ وأحيانًا ينحرف حتى 1.04 في دفاتر ضعيفة السيولة).
مراجحة Yes+No=1 هي الأنظف: اقرأ كلا الطرفين من نفس السوق، ونفّذ FOK على الطرفين إذا انخفض المجموع إلى أقل من 0.97 (مع السماح بضرائب spread). رأس المال المطلوب متقارب تقريبًا على كل طرف؛ ويكون التنفيذ ذريًا عندما تعود عمليتا الملء في نفس الاستجابة.
الارتداد إلى المتوسط مقابل استمرار الاتجاه
هناك نظامان لـ stat-arb. الارتداد إلى المتوسط: تباعد الزوج بسبب ضوضاء مؤقتة؛ فتراهن على التقارب. استمرار الاتجاه: بدأ الزوج في التباعد لأن معلومات جديدة وصلت؛ فتراهن على مزيد من التباعد.
التمييز بينهما هو الجزء الصعب. قاعدة إرشادية: إذا حدث التباعد مع حجم تداول واضح (whale حرّك دفتر أحد الطرفين)، فهذا خبر - تجنّب المعاكسة فقط إذا كان لديك نموذج. أما إذا كان الانحراف تدريجيًا مع حجم منخفض، فهذه ضوضاء - تداول الارتداد بثقة.
للمبنين الجدد: تداول الارتداد إلى المتوسط فقط، وعلى أزواج يكون فيها التباعد أقل من انحراف معياري واحد من الانحراف التاريخي. أما استمرار الاتجاه فيتطلب نموذجًا يلتقط الخبر؛ وبدونه فأنت تتداول ضد flow مطّلع.
تحديد الحجم للأسواق التي تُحسم (وليس الدائمة)
prediction markets تُحسم. أما أزواج crypto فلا. وهذا يغيّر المعادلة.
مركز pair-arb على Polymarket له جدول عوائد ثابت: عندما تُحسم السوقان، يتم قفل الفرق بين السبريد المتوقع والسبريد الفعلي. لا يوجد rolling، ولا احتفاظ لانهائي.
النتيجة على حجم الصفقة: الحد الأقصى الذي يمكنك حمله محدود بزمن الوصول إلى التسوية، لأن رأس المال يبقى محجوزًا حتى ذلك الحين. زوج يحسم خلال 6 أشهر قد يمنحك 3 سنتات لكل سهم، لكن لا يمكنك تشغيل رأس مال إضافي في الأثناء إذا كانت السوقان ممتلئتين بالكامل.
الصياغة الصحيحة: stat-arb على Polymarket هو سلسلة من صفقات محددة الزمن، وليس استراتيجية مستمرة. قارن PnL لكل وحدة من رأس المال المجمّد يوميًا، لا PnL الإجمالي.
المخاطر: التباعد حتى ما بعد التسوية
أسوأ نتيجة لـ stat-arb هي أن تكون توقعاتك للتقارب خاطئة لأن الفرضية الأساسية نفسها كانت خاطئة. أمثلة:
- بعت على المكشوف "ترامب رئيس في 1 أبريل" متوقعًا أن يتقارب مع "ترامب رئيس في 1 مارس" - لكن سوق التاريخ 1 يحسم YES وسوق التاريخ 2 يحسم NO بسبب عزل في مارس. كانت فرضية "السبريد يجب أن يبقى ثابتًا" خاطئة.
- نفّذت مراجحة بين Polymarket وKalshi على نفس فائز NBA Finals. Polymarket حسمت لصالح الفريق الفائز وفق السلسلة الرسمية؛ بينما Kalshi حسمت وفق تعريف مختلف قليلًا يتعامل مع overtime tie-breakers بطريقة مختلفة. كلاهما حُسم YES وفق شروطه المعلنة، لكن في اتجاهين متعاكسين.
اقرأ معايير التسوية لكل سوق بعناية. المراجحة عبر المنصات تبقى على بُعد اختلاف واحد في التسوية من خسارة كاملة على الطرفين.
الكود: مراقب الأزواج ومشغّل العتبة
مرجع: راقب tokenين مترابطين، ونفّذ المراجحة عندما يتجاوز السبريد العتبة.
def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
"""Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
while True:
book_a = fetch_book(token_a)
book_b = fetch_book(token_b)
if not (book_a.best_ask and book_b.best_bid):
time.sleep(2); continue
# implied: cost of buying A at ask + value of selling B at bid
edge = (1 - book_a.best_ask) + book_b.best_bid - 1
if edge > threshold_cents / 100:
print(f"ARB edge={edge:.3f}; firing")
r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
if r_a.status != "matched": continue
r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
if r_b.status != "matched":
# leg A filled, B failed -- unhedged, exit A
fok_sell(token_a, price=book_a.best_bid, size=size)
time.sleep(3)
إنهاء الصفقة عند partial fill أمر بالغ الأهمية. من دونه، يترك التنفيذ الجزئي البوت مكشوفًا اتجاهيًا، وهذا عكس جوهر stat-arb تمامًا.





