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

تتبّع محافظ الحيتان على Polymarket ونسخ تداول أفضل المتداولين برمجيًا: حدّد المحافظ المربحة عبر لوحة الصدارة والتحليل على السلسلة، وقلّد صفقاتهم مع قواعد للحجم والتوقيت.

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

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

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

تحديد المحافظ المربحة

الفرضية وراء نسخ الحيتان هي أن بعض المحافظ مربحة باستمرار، وأن نسخ دخولها يلتقط جزءًا من ميزتها. لكن التحليل على السلسلة لأفضل محافظ Polymarket في 2025-26 قدّم نتيجة محبِطة: معظم الحيتان المرئية تنفذ arbitrage متأخرًا ضمن النافذة على الأسواق التي تم تسويتها، وليس تداولًا اتجاهيًا.

الملف الذي قسناه على ثلاث محافظ حيتان مرشحة:

  • "hhhhhh6" (معدل ربح 98.5%، حجم $n M) - 88% من الدخول عند أسعار ≥0.95، ووسيط زمن الدخول 226 ثانية من نافذة 300 ثانية. arbitrage خالص لعائدات الذيل، وليس اتجاهيًا.
  • "anonymous" (معدل ربح 20%) - مقامر متدهور. نسخه يخسر المال.
  • "Jkim123" (معدل ربح 53.5%) - رمية عملة. ليست إشارة تستحق النسخ.

0% من صفقات هذه الحيتان حدثت في أول 120 ثانية من أي نافذة مدتها 5 دقائق. الإشارة التنبؤية (إن وُجدت) ستأتي من دخولات كبيرة في النافذة المبكرة - لكن تلك المحافظ ليست الموجودة في أعلى لوحة الصدارة، لأن الأمر صعب.

رصد الصفقات على السلسلة

يتطلّب رصد صفقات محفظة مستهدفة إما الاستعلام الدوري عن data-api الخاصة بـ Polymarket أو الاشتراك في أحداث التحويل on-chain الخاصة بـ CTF. خيار data-api أبسط.

def watch_wallet(wallet_addr, last_seen_ts=0):
    while True:
        url = f"https://data-api.polymarket.com/activity?user={wallet_addr}&limit=100"
        events = requests.get(url).json()
        for ev in events:
            ts = int(ev.get("timestamp", 0))
            if ts <= last_seen_ts: continue
            if ev["type"] == "TRADE":
                process_whale_trade(ev)
            last_seen_ts = max(last_seen_ts, ts)
        time.sleep(5)

الاستعلام كل خمس ثوانٍ هو الحد العملي الأدنى بالنسبة إلى data-api. أقل من ذلك ستصل إلى rate limits. وللكشف دون ثانية واحدة، اشترك في أحداث ERC-1155 TransferSingle على السلسلة من عقد CTF مع فلترة على عنوان proxy الخاص بالحوت.

تحديد حجم المركز مقارنةً بالحوت

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

  • مبني على السقف: اجعل حجم كل نسخة مبلغًا ثابتًا بالدولار ($10-50) بغض النظر عن حجم الحوت. أبطأ في التراكم، لكن الخسارة محدودة لكل صفقة.
  • موزون بمعدل الربح: اجعل حجم النسخة دالة في معدل ربح الحوت الأخير. معدل ربح 60%+ → نسخة بالحجم الكامل؛ 40-60% → نصف الحجم؛ أقل من 40% → تجاهل.

النهج المبني على السقف هو الخيار الأكثر أمانًا في أول نشر. انتقل إلى النهج الموزون بمعدل الربح فقط بعد أن تقيس معدل الربح الفعلي للحوت على نسخك أنت (والذي يكون عادةً أسوأ من رقمه العلني لأنك تصل متأخرًا).

الزمن الكامن: ما مقدار التأخير الذي يُعدّ متأخرًا جدًا

تظهر صفقة الحوت علنًا خلال 1-2 ثانية من التنفيذ. ونسخها يتطلب زمن وصول أسرع من ذلك على جانب القراءة، إضافةً إلى زمن تنفيذ الأمر الخاص بك.

الزمن الكامل لنهاية إلى نهاية بالنسبة إلى bot نسخ نموذجي: استعلام كل 5-10 ثوانٍ + تنفيذ أمر خلال 200ms = إجمالي 5-15 ثانية. بحلول الوقت الذي تنفّذ فيه نسختك، تكون إشارة الحوت قد انعكست في السعر.

بالنسبة إلى 99% من النسخ، هذا متأخر جدًا في أسواق Polymarket الضيقة. دخول الحوت حرّك mid بمقدار 1-2 سنت؛ وأنت تدفع علاوة 1-2 سنت مقابل السعر الذي دخل به. إذا كانت ميزته 3c، فقد ذهب نصفها بالفعل عندما تصل.

بوتات النسخ التي تنجح إما (a) تستهدف أسواقًا بطيئة الحركة حيث لا يهم تأخير 30 ثانية، أو (b) تستخدم الاشتراك في الأحداث on-chain للتفاعل ضمن أطر زمنية دون ثانية.

الفلاتر: اتبع فقط المحافظ ذات الأفضلية المثبتة

ثلاثة فلاتر قبل إضافة أي محفظة إلى قائمة النسخ.

  • 30+ صفقة مغلقة في تاريخ المحفظة. العينات الأصغر مجرد ضجيج.
  • معدل ربح مدى الحياة > 60%، أو قيمة متوقعة موجبة لكل صفقة بناءً على أسعار الدخول. أيٌّ من الشرطين؛ وكلاهما أفضل.
  • النمط ليس arbitrage متأخرًا ضمن النافذة. تحقّق من وسيط الثواني حتى التسوية عند الدخول؛ إذا كان قريبًا من 0، فالمحفظة تنفذ tail-yield arb لا يمكنك تكراره.

معظم الحيتان المرشحة تفشل في واحد من هذه الفلاتر الثلاثة. مجموعة المحافظ التي يمكن نسخها فعلًا صغيرة. والحفاظ على القائمة يتطلب إعادة فحص دورية - فالمحافظ التي كانت مربحة الشهر الماضي قد لا تكون كذلك هذا الشهر.

الكود: رصد حدث شراء للحوت، وتنفيذ نسخة بحجم محدد

مرجع: رصد حدث CTF TransferSingle لحوت تتم مراقبته، ثم تنفيذ شراء نسخة بحجم محدد.

from web3 import Web3
w3 = Web3(Web3.WebsocketProvider(POLYGON_WSS))
ctf = w3.eth.contract(address=CTF_ADDR, abi=CTF_ABI)
WHALES = {"0xabc...": {"fraction": 0.05, "cap": 50}}

def on_transfer(event):
    to = event.args["to"].lower()
    if to not in WHALES: return
    cfg = WHALES[to]
    token_id = event.args.id
    whale_size = event.args.value / 1e6
    copy_size = min(cfg["cap"], whale_size * cfg["fraction"])
    if copy_size < 5: return  # not worth fees
    book = fetch_book(str(token_id))
    if book.best_ask:
        place_fok(str(token_id), "BUY", book.best_ask + 0.01, copy_size)

# subscribe to ERC-1155 TransferSingle events from CTF
filt = ctf.events.TransferSingle.create_filter(fromBlock="latest")
while True:
    for ev in filt.get_new_entries(): on_transfer(ev)
    time.sleep(0.5)

ميّز الشراء من البيع عبر التحقق من from (العنوان الصفري = mint = الحوت اشترى) مقابل to (العنوان الصفري = burn = تم البيع).

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

كيف أجد محافظ Polymarket المربحة التي تستحق النسخ؟
لوحة الصدارة الخاصة بـ Polymarkets تعرض أفضل المحافظ حسب PnL عبر عدة نوافذ زمنية (الأسبوع، الشهر، طوال الوقت). كما أن أدوات التحليل المستقلة on-chain (مثل DeFiLlama ولوحات Dune) ترتّب محافظ Polymarket أيضًا. اختر المحافظ ذات الربحية المثبتة على مدى أشهر، لا أسابيع - فالموجات الساخنة تنعكس.
كيف أكتشف صفقة حوت في الوقت الحقيقي؟
اشترك في سجلات معاملات Polygon لعنوان المحفظة (web3.py / ethers eth_subscribe)، وفلتر calls الخاصة بـ matchOrder على عقود exchange الخاصة بـ Polymarket. فكّ ترميز الحدث للحصول على السوق، والجانب، والحجم. الزمن الكامن: من 2 إلى 10 ثوانٍ من تأكيد on-chain إلى تفاعل bot الخاص بك.
هل يمكنني نسخ صفقة الحوت بدقة تامة؟
ليس بدقة تامة - فبحلول الوقت الذي تكتشف فيه الصفقة وتقدّمها، يكون السعر قد تحرّك غالبًا. النسخ الواقعي هو "الدخول التدريجي": خذ جزءًا من مركز الحوت خلال بضع دقائق بعد صفقتِه، مع قبول تدهور السعر كتكلفة للنسخ. تحديد الحجم: 1-5% من حجم مركزه لكل نسخة.
ماذا لو كان الحوت مخطئًا هذه المرة؟
ستخسر. copy trading يرث كل مخاطر الاستراتيجية الأساسية إضافةً إلى خسارة الزمن الكامن. التحوط هو نسخ عدة حيتان والتعامل مع كل واحد منها كجزء صغير من محفظتك - إذا كان لدى 5 حيتان معدل ربح 60% لكل منها بشكل مستقل، فإن المحفظة تنمو تراكميًا. أما إذا نسخت حوتًا واحدًا بمعدل ربح 60% وركّزت عليه، فإن التذبذب سيقضي عليك.
هل copy trading محظور على Polymarket؟
لا. تسمح شروط Polymarkets بعرض لوحات الصدارة العامة والصفقات. الممنوع هو تعدد الحسابات (تشغيل عدة محافظ كشخص واحد للتحايل على الحدود). نسخ محافظ الآخرين من محفظتك الواحدة أمر مسموح.
كيف أحدد الحجم بالنسبة إلى الحوت؟
تحديد الحجم كنسبة من رأس المال: لا تنسخ أي صفقة بأكثر من 2-5% من إجمالي رأس مالك بغض النظر عن مقدار ما تداوله الحوت. تعامل مع إشارة الحوت كإشارة من بين عدة إشارات، لا كأمر مضمون. الحيتان التي تملك رأس مال أكبر منك 10 مرات تخسر أيضًا - وانخفاضك النسبي أسوأ بكثير إذا حدّدت الحجم بقوة.