𝗦𝗰𝗮𝗿𝗮𝗯 𝗗𝗶𝗮𝗴𝗻𝗼𝘀𝘁𝗶𝗰 𝗙𝗶𝗲𝗹𝗱 𝗧𝗲𝘀𝘁 #𝟬𝟯𝟭
QuantConnect Lean necessitava di un migliore controllo sui roll dei futures continui.
Gli utenti si sono imbattuti in due problemi principali:
- Non potevano impostare il timing del roll prima della scadenza.
- Non potevano selezionare cicli specifici del mese del contratto.
Non si tratta di un semplice bug. È un problema di policy di mapping.
Se si tenta di risolvere il problema creando un nuovo calendario di roll, si rompe il motore. Se si duplicano i dati di mapping, si creano errori. Una patch errata può causare uno scostamento tra ciò che una strategia richiede e ciò che il motore esegue.
L'obiettivo era trovare una via di riparazione chirurgica.
La soluzione rimane all'interno dei confini di mapping esistenti. Non riscriviamo il motore dei futures. Invece, estendiamo il modo in cui Lean gestisce il mapping dei futures continui.
Cosa è cambiato nella PR:
- Aggiunta una modalità di mapping TradingDaysBeforeExpiry.
- Questo consente agli utenti di impostare il timing del roll come un offset di giorni di trading.
- L'offset del roll ora fluisce attraverso i percorsi di subscription, history, universe e mapping-event.
- Aggiunto lo scorrimento opzionale del ciclo mese-contratto.
- Questo supporta cicli di detenzione specifici invece di una sequenza generica.
- Riutilizzate le righe esistenti della mappa LastTradingDay per mantenere la sorgente dati unica e coerente.
Mantenendo la riparazione all'interno della policy di mapping, garantiamo che tutte le parti del motore concordino su quale contratto sia attivo.
Il risultato: Una riparazione contenuta che aggiunge nuove funzionalità senza inventare nuovi sistemi. La validazione della build locale è passata con zero errori. La PR è ora pronta per la revisione upstream.
Community di apprendimento opzionale: https://t.me/GyaanSetuAi