𝗦𝗰𝗮𝗿𝗮𝗯 𝗗𝗶𝗮𝗴𝗻𝗼𝘀𝘁𝗶𝗰 𝗙𝗶𝗲𝗹𝗱 𝗧𝗲𝘀𝘁 #𝟬𝟯𝟭
QuantConnect Lean потребував кращого контролю над роляцією безперервних ф'ючерсів.
Користувачі стикалися з двома основними проблемами:
- Вони не могли встановити час роляції до моменту експірації.
- Вони не могли обирати конкретні цикли місяців контрактів.
Це не просто баг. Це проблема політики мапінгу.
Якщо намагатися виправити це шляхом створення нового календаря роляції, ви зламаєте рушій. Якщо дублювати дані мапінгу, ви створите помилки. Неправильний патч може спричинити розбіжність між тим, чого прагне стратегія, і тим, що виконує рушій.
Метою було знайти шлях для «хірургічного» виправлення.
Рішення залишається в межах існуючої межі мапінгу. Ми не переписуємо рушій ф'ючерсів. Замість цього ми розширюємо те, як Lean обробляє мапінг безперервних ф'ючерсів.
Що змінилося в PR:
- Додано режим мапінгу
TradingDaysBeforeExpiry. - Це дозволяє користувачам встановлювати час роляції як зміщення у торгових днях (tradeable-day offset).
- Тепер зміщення роляції проходить через шляхи підписки (subscription), історії (history), всесвіту (universe) та подій мапінгу (mapping-event).
- Додано опціональну можливість перебору циклів місяців контрактів (contract-month-cycle walking).
- Це підтримує конкретні цикли утримання замість загальної послідовності.
- Використано існуючі рядки карти
LastTradingDay, щоб зберегти єдине та достовірне джерело даних.
Завдяки тому, що виправлення залишається в межах політики мапінгу, ми гарантуємо, що всі частини рушія узгоджуються щодо того, який контракт є активним.
Результат: Обмежене виправлення, яке додає нові можливості, не створюючи нових систем. Локальна валідація збірки пройшла без помилок. PR готовий до перегляду upstream.
Optional learning community: https://t.me/GyaanSetuAi