حساب الأرباح والخسائر بدقة في Polymarket: لماذا قد تكون أرباحك وخسائرك المحتسبة خاطئة؟

العنوان الأصلي: «حساب الأرباح والخسائر بدقة في Polymarket: لماذا قد تكون حساباتك كلها خاطئة»
الكاتب الأصلي: ليو، محلل التشفير

لقد قضيت نصف سنة في تطوير تداول آلي ذاتي في Polymarket، وأكبر خطأ وقعت فيه ليس فشل الاستراتيجية، بل أنني لم أتمكن من حساب كم ربحت وخسرت بشكل صحيح.

لست سيئًا. المشكلة أن حساب PnL في PM هو منطقة خطرة بحد ذاتها. الأرقام التي تقدمها API الرسمية لك خاطئة، وترتيب المواقع على مواقع التحليل الخارجية أيضًا خاطئ. هل تكتب سكربتات لحسابك؟ على الأرجح لا يكون صحيحًا.

كم هو الانحراف كبير؟ المستخدم في الترتيب رقم 3، kch123، حسب طريقة خاطئة خسر 3.5 مليون دولار، لكن الربح الفعلي هو 11.4 مليون دولار. ليس فرقًا بسيطًا في النسبة — بل أن إشارة الربح والخسارة معكوسة تمامًا.

هذه المقالة تفصل كل خطأ وقعت فيه. سواء كنت تتداول، تكتب أدوات، أو تتابع الترتيب، ستواجهها عاجلاً أم آجلاً.

الخطر 1: cashPnl لا يشمل الأرباح المحققة المغلقة

الطريقة الأكثر بديهية: استدعاء واجهة /positions، وجمع حقل cashPnl (ربح وخسارة نقدية).

اختبار عملي لثلاثة عناوين من أعلى 15 ترتيبًا:

swisstony: مجموع cashPnl +$35,000، الترتيب الفعلي +$5,600,000، الفرق 158 مرة

kch123: مجموع cashPnl -$3,520,000، الترتيب الفعلي +$11,400,000، الإشارة معكوسة

gmanas: مجموع cashPnl -$2,640,000، الترتيب الفعلي +$5,020,000، الإشارة معكوسة

ثلاثة عناوين، إشارة الربح والخسارة في اثنين منها معكوسة مباشرة.

السبب: واجهة /positions تُرجع cashPnl لا يشمل الأرباح المحققة التي تم تسويتها أو استردادها. بعد أن يتم استرداد مركز رابح إلى USDC، يختفي هذا المركز من استجابة API. المتبقي هو المراكز غير المُسوية — وغالبًا تكون بخسارة مؤقتة.

تظن أنك تحسب كل الأرباح والخسائر، لكنك في الواقع تحسب فقط الجزء غير المُسوى.

الخطر 2: حقل makerPnl غير متوافق مع التدفقات النقدية على السلسلة

في بيانات التداول بصيغة JSONL يوجد حقل makerPnl (ربح وخسارة السوق)، اسمه يوحي بأنه لحساب PnL. لا تصدق.

لاحظت في بيانات السوق أن مجموع makerPnl المحسوب يختلف عن نتائج التدفقات النقدية على السلسلة بمقدار كبير. قد يختلف هذا المضاعف حسب السيناريو، لكن الاتجاه واحد: منطق حساب makerPnl لا يتطابق مع تدفق USDC الحقيقي.

مهما كان الانحراف كبيرًا، الخلاصة واحدة: لا تستخدم هذا الحقل لحساب PnL.

الخطر 3: لا يمكن التحقق من تكرار txHash بشكل فردي

هذا عكس الحدس تمامًا.

عند ظهور عدة سجلات لنفس txHash (مفتاح المعاملة)، رد الفعل الطبيعي هو: بيانات مكررة، قم بإزالتها.

لكن لا تفعل ذلك. في CLOB الخاص بـ PM (سجل الطلبات على السلسلة)، يمكن أن يتم التوفيق بين عدة أوامر maker في معاملة واحدة. سجلات متعددة لنفس txHash هي عمليات تنفيذ حقيقية مستقلة.

جربت سابقًا التحقق من التكرار باستخدام txHash + الأصل، وخسرت 133 دولارًا على الجانب الشرائي. على شبكة Polygon، تبين أن معاملة واحدة تحتوي على عدة أحداث تحويل USDC مستقلة، وكل منها يمثل صفقة حقيقية.

الاستنتاج: لا يمكن الاعتماد على txHash فقط للتكرار. لحساب PnL، قم بجمع البيانات الأصلية من /activity مباشرة.

الخطر 4: حد أقصى لصفحات offset

استخدام offset (الإزاحة) في استدعاء /activity للتصفح؟ إذا تجاوزت 3000، ستحصل على خطأ 400. لم تذكر الوثائق ذلك.

تم التحقق من الثلاثة عناوين أعلاه: استدعاء GET /activity?offset=3100 يعيد خطأ HTTP 400، مع رسالة أن الحد الأقصى للإزاحة التاريخية هو 3000. المستخدمون الكبار لديهم عشرات الآلاف من المعاملات، 3000 غير كافٍ.

استخدام معلمة end (تاريخ آخر سجل من الصفحة السابقة - 1) كعلامة تصفح لا حدود لها.

الخطر 5: اختلاف معايير PnL في الترتيب

عند حساب PnL الخاص بعنوان معين، ثم مقارنته بالترتيب، هناك فرق بسيط.

في معظم الحالات، يكون الفرق أقل من 10 دولارات (نتيجة تقلبات السوق في القيمة السوقية للمراكز). لكن إذا كان الفرق كبيرًا، قد يكون السبب: فترة تجميع البيانات في الترتيب، تأخير تحديث التخزين المؤقت، أو أن المستخدم مرتبط بمحفظة proxy متعددة.

اختبرت، ووجدت أن حساب PnL باستخدام التدفقات النقدية يتطابق بشكل كبير مع نتائج lb-api. إذا كانت نتائجك مختلفة جدًا، تحقق أولاً من اكتمال التصفح (الخطر 4)، أو استخدام الحقول الخاطئة (الخطر 1-2).

الطريقة الصحيحة

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

الصيغة:

PnL = مجموع (TRADE حيث side=SELL) + مجموع (REDEEM) + مجموع (MERGE) + مجموع (MAKER_REBATE) + مجموع (REWARD) - مجموع (TRADE حيث side=BUY) - مجموع (SPLIT) + قيمة السوق للمركز

· TRADE BUY: شراء token باستخدام USDC (مصروف)

· TRADE SELL: بيع token واسترداد USDC (دخل)

· REDEEM: استرداد USDC من مركز رابح (دخل)

· SPLIT: تحويل USDC إلى token (مصروف)

· MERGE: دمج token مرة أخرى إلى USDC (دخل)

· MAKER_REBATE: عمولة Maker (دخل)

· REWARD: مكافآت/توزيعات (دخل)

· مصدر البيانات:

استدعاء GET /activity?user=

&limit=500، واستخدام end للتصفح، ثم جمع النتائج حسب النوع.

· قيمة المركز السوقية:

GET /positions?user=

، الحجم × السعر الحالي.

· التحقق المتقاطع:

مقارنة النتائج مع API الترتيب في Polymarket (lb-api.polymarket.com/profit?window=all&address=X)، وإذا كانت الفروق أقل من 10 دولارات، تعتبر صحيحة. الفرق يرجع إلى تقلبات القيمة السوقية للمراكز.

اختبار عملي: أعلى 15 ترتيب

بعد حساب PnL باستخدام طريقة التدفقات النقدية، قارن مع API الترتيب:

swisstony: +$5,601,000 من طريقة التدفقات النقدية، +$5,601,000 من API، الفرق أقل من 10 دولارات

kch123: +$11,396,000 من طريقة التدفقات النقدية، +$11,396,000 من API، الفرق أقل من 10 دولارات

gmanas: +$5,024,000 من طريقة التدفقات النقدية، +$5,024,000 من API، الفرق أقل من 10 دولارات

الفرق بين النتائج الثلاثة أقل من 10 دولارات، ويعود إلى تقلبات القيمة السوقية للمراكز.

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

الخلاصة

مجموع cashPnl من /positions → غير صحيح، لا يشمل الأرباح المُسواة، وقد يعكس إشارة معكوسة.

جمع حقل makerPnl → غير صحيح، غير متوافق مع التدفقات النقدية على السلسلة.

الاعتماد على التكرار عبر txHash → غير صحيح، يفقد عمليات تنفيذ حقيقية بقيمة 100 دولار أو أكثر.

التصفح باستخدام offset والجمع → غير صحيح، البيانات مقطوعة، وإذا تجاوزت 3000، يظهر خطأ.

طريقة التدفقات النقدية عبر Data API → الأكثر موثوقية حاليًا، أقل من 10 دولارات فرق.

الخطوة الأولى في التداول الكمي ليست البحث عن alpha، بل التأكد من أن حسابك صحيح.

كل ما سبق هو من تجارب عملية، وليس نظريات. API الخاص بـ PM قد يتغير في أي وقت، لذا يُنصح بمراجعة API الترتيب بشكل دوري للتحقق من صحة حساباتك.

رابط المقال الأصلي

انقر لمعرفة وظائف BlockBeats في التوظيف

مرحبًا بك في المجتمع الرسمي لـ BlockBeats:

قناة التليجرام: https://t.me/theblockbeats

مجموعة التليجرام: https://t.me/BlockBeats_App

حساب تويتر الرسمي: https://twitter.com/BlockBeatsAsia

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • إعادة النشر
  • مشاركة
تعليق
إضافة تعليق
إضافة تعليق
لا توجد تعليقات
  • تثبيت