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