تست میدانی عیبیابی Scarab #۰۳۱
QuantConnect Lean به کنترل بهتری بر رولهای (roll) مداوم فیوچرز نیاز داشت.
کاربران با دو مشکل اصلی روبرو بودند:
- آنها نمیتوانستند زمان رول را قبل از انقضا تنظیم کنند.
- آنها نمیتوانستند چرخههای ماهانه قرارداد (contract-month cycles) خاصی را انتخاب کنند.
این یک باگ ساده نیست؛ بلکه یک مسئله در سیاست نگاشت (mapping policy) است.
اگر سعی کنید با ایجاد یک تقویم رول جدید این مشکل را حل کنید، موتور (engine) را از کار میاندازید. اگر دادههای نگاشت را کپی کنید، خطا ایجاد میکنید. یک وصله (patch) نامناسب میتواند باعث ایجاد انحراف بین آنچه یک استراتژی میخواهد و آنچه موتور انجام میدهد، شود.
هدف، یافتن یک مسیر تعمیر دقیق و هدفمند بود.
راه حل در محدوده نگاشت موجود باقی میماند. ما موتور فیوچرز را بازنویسی نمیکنیم؛ در عوض، نحوه مدیریت نگاشت فیوچرز مداوم توسط Lean را گسترش میدهیم.
آنچه در PR تغییر کرد:
- اضافه شدن حالت نگاشت
TradingDaysBeforeExpiry. - این قابلیت به کاربران اجازه میدهد زمان رول را به عنوان یک آفست (offset) بر اساس روزهای قابل معامله تنظیم کنند.
- اکنون آفست رول در مسیرهای
subscription،history،universeوmapping-eventجریان مییابد. - اضافه شدن قابلیت اختیاری
contract-month-cycle walking. - این قابلیت به جای یک توالی عمومی، از چرخههای نگهداری خاص پشتیبانی میکند.
- استفاده مجدد از ردیفهای نقشه
LastTradingDayموجود برای یکپارچه و معتبر نگه داشتن منبع داده.
با نگه داشتن تعمیر در چارچوب سیاست نگاشت، اطمینان حاصل میکنیم که تمام بخشهای موتور بر سر اینکه کدام قرارداد فعال است، توافق دارند.
نتیجه: یک تعمیر محدود که قابلیتهای جدیدی را بدون ابداع سیستمهای جدید اضافه میکند. اعتبارسنجی ساخت محلی با صفر خطا انجام شد. اکنون PR آماده بررسی upstream است.
Optional learning community: https://t.me/GyaanSetuAi