اختبار ميداني تشخيصي من Scarab #031
احتاج QuantConnect Lean إلى تحكم أفضل في عمليات تدوير العقود الآجلة المستمرة (continuous futures rolls).
واجه المستخدمون مشكلتين رئيسيتين:
- لم يتمكنوا من تحديد توقيت التدوير قبل تاريخ انتهاء الصلاحية.
- لم يتمكنوا من اختيار دورات أشهر عقود محددة.
هذا ليس مجرد خطأ برمجياً بسيطاً، بل هي مشكلة في سياسة الربط (mapping policy).
إذا حاولت إصلاح ذلك عن طريق إنشاء تقويم تدوير جديد، فستعطل المحرك. وإذا قمت بتكرار بيانات الربط، فستتسبب في حدوث أخطاء. كما يمكن أن يؤدي أي إصلاح (patch) غير مدروس إلى حدوث انحراف بين ما تريده الاستراتيجية وما ينفذه المحرك.
كان الهدف هو إيجاد مسار إصلاح دقيق (surgical repair).
يظل الحل ضمن حدود الربط الحالية. نحن لا نعيد كتابة محرك العقود الآجلة، بل نقوم بتوسيع كيفية تعامل Lean مع ربط العقود الآجلة المستمرة.
ما الذي تغير في الـ PR:
- إضافة وضع ربط
TradingDaysBeforeExpiry. - يتيح ذلك للمستخدمين تحديد توقيت التدوير كإزاحة (offset) بالأيام القابلة للتداول.
- أصبحت إزاحة التدوير تتدفق الآن عبر مسارات الاشتراك (subscription)، والسجل (history)، والنطاق (universe)، وحدث الربط (mapping-event).
- إضافة خاصية التنقل الاختياري عبر دورة شهر العقد (contract-month-cycle walking).
- يدعم هذا دورات احتفاظ محددة بدلاً من تسلسل عام.
- إعادة استخدام صفوف خريطة
LastTradingDayالحالية للحفاظ على مصدر بيانات واحد وموثوق.
من خلال إبقاء الإصلاح ضمن سياسة الربط، نضمن اتفاق جميع أجزاء المحرك على العقد النشط.
النتيجة: إصلاح محدود النطاق يضيف قدرات جديدة دون اختراع أنظمة جديدة. اجتاز التحقق من البناء المحلي (local build validation) بنجاح دون أي أخطاء. الـ PR جاهز الآن للمراجعة من قبل الـ upstream.
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi