26 سبتمبر 2026 · بحث

حاولنا إعادة إنتاج الاختبار التاريخي لاستراتيجية. إليك أين اختلفت الأرقام.

حاولنا إعادة إنتاج الاختبار التاريخي لاستراتيجية. إليك أين اختلفت الأرقام.

أعدنا تشغيل اختبار تاريخي محفوظ، فحصلنا على منحنى حقوق ملكية مختلف. شيفرة الاستراتيجية نفسها، والفترة الزمنية نفسها، والرمز نفسه. اختلف الرصيد الختامي بنسبة 1.8%، وانتقلت 3 صفقات بمقدار شمعة واحدة.

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

اليوم 1: دوّنا ما نعنيه بـ«التشغيل نفسه»

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

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

العنصرما ينبغي تسجيلهسبب الأهمية
بيانات السوقمعرّف اللقطة، وإصدار المخطط، والتعديلاتيصحح المورّدون السجلات السابقة ويراجعون إجراءات الشركات
التنفيذفئة الرسوم، وسلسلة التمويل، وإعدادات التنفيذ والأثرتغيّر الإعدادات الافتراضية وافتراضات الحساب النتائج
بيئة التشغيلمراجعة الشيفرة، وإصدارات المحرك والاعتمادياتقد تغيّر المكتبات ترتيب الأحداث أو التقريب أو المؤشرات
المخرجاتالأوامر والتنفيذات والمراكز والمقاييستُظهر أين يبدأ الاختلاف بين التشغيلين

اليوم 2: قارنّا الصفقات، لا Sharpe

كانت المقاييس الموجزة تشتيتًا. حقق التشغيلان قيمة Sharpe متقاربة جدًا، لكن سجلات التنفيذ أظهرت أول اختلاف عند تسوية التمويل. احتسب أحد التشغيلين المعدل على المركز المفتوح عند الطابع الزمني للتسوية؛ أما الآخر فاستخدم المركز بعد إعادة موازنته عند ذلك الطابع الزمني.

لم تتغير شيفرة الاستراتيجية، بل تغيّر ترتيب الأحداث في المحرك. فقد جعل تحديث صغير للإصدار التسلسل صريحًا، بعدما كان يعتمد على كيفية ترتيب حدثين بالمصادفة.

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

اليوم 3: تبيّن أن ملف البيانات «نفسه» مختلف

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

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

يحتاج الاختبار التاريخي القابل لإعادة الإنتاج إلى إجابة عن السؤال: «أي نسخة من الماضي رآها؟»

اليوم 4: عثرنا على إعداد افتراضي خفي

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

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

3مصادر للاختلاف عثرنا عليها
1.8%الفارق الأولي في الرصيد الختامي
0قيمة تطابق Sharpe وحده

ما سنتجاوزه في المرة المقبلة

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

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

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

قابلية إعادة الإنتاج، الاختبار التاريخي، هندسة البيانات، التداول الورقي
→ جميع المقالات