Ottima idea. L’integrazione di SARIMA (Seasonal Autoregressive Integrated Moving Average) sarebbe un’aggiunta strategica e di grande valore al nostro Forecast Lab. Si allinea perfettamente con la nostra visione di fornire un “consiglio di esperti AI” con prospettive diverse, affiancando un modello statistico classico e altamente interpretabile a TimesFM e Prophet.
Ecco una proposta strutturata su come e dove potremmo implementarlo, seguendo il nostro principio “POC First” (Regola 13) data la complessità del tuning dei parametri di SARIMA.
Obiettivo Architetturale
Integrare SARIMA come un nuovo motore di forecasting selezionabile all’interno del Forecast Lab e come provider disponibile nella Data Enrichment Pipeline, garantendo che l’interfaccia utente si adatti per esporre i suoi parametri specifici (in particolare la stagionalità).
Proposta di Implementazione: Un Piano d’Azione Dettagliato
Propongo di suddividere l’implementazione in 3 passi principali per minimizzare i rischi e garantire un’integrazione pulita.
Passo 1: Proof of Concept (POC) - Validazione Isolata (Regola 13)
Prima di toccare il codice di produzione, creeremo uno script isolato per validare la logica di base.
- File da Creare:
scripts/poc/poc_sarima_forecasting.py - Libreria Chiave: Useremo
pmdarima, che include la funzioneauto_arima. Questa libreria è ideale perché automatizza il processo, altrimenti complesso, di ricerca dei parametri ottimali (p, d, q)(P, D, Q). - Obiettivi del POC:
- Caricare un set di dati di esempio (es. da un file CSV) con una chiara stagionalità.
- Utilizzare
pmdarima.auto_arimaper trovare automaticamente la migliore configurazione del modello. - Generare una previsione per un numero definito di periodi futuri.
- Stampare in console i risultati della previsione e i parametri del modello individuati.
- Risultato Atteso: La conferma che possiamo generare previsioni valide e che la libreria
pmdarimaè adatta alle nostre esigenze.
Passo 2: Integrazione nel Forecast Lab (Feature)
Una volta validato il POC, integreremo SARIMA nell’applicazione principale.
A. Backend (Creazione del Worker)
- File da Creare:
fire/workers/forecasting/sarima_forecast_worker.py - Responsabilità:
- Ricevere il DataFrame dei dati e i parametri specifici di SARIMA (in particolare il periodo di stagionalità
m, es. 7 per dati giornalieri con stagionalità settimanale). - Eseguire
auto_arimain un thread separato per non bloccare la UI. - Emettere i risultati (previsione, intervalli di confidenza) e lo stato di avanzamento tramite i segnali standard dei worker.
- Ricevere il DataFrame dei dati e i parametri specifici di SARIMA (in particolare il periodo di stagionalità
B. Frontend (Aggiornamento dell’UI)
- File da Modificare:
fire/ui_components/forecast_manager_tab.py - Modifiche Necessarie:
- Aggiungere SARIMA all’elenco dei modelli: Inserire “SARIMA” nel
QComboBoxdove l’utente seleziona il modello di forecasting. - UI Dinamica: Modificare la logica che mostra/nasconde i parametri. Quando l’utente seleziona “SARIMA”, dobbiamo visualizzare un campo specifico per inserire il “Periodo di Stagionalità (m)”, che è il parametro più critico per questo modello.
- Connessione al Worker: Collegare il pulsante “Avvia Forecast” al nuovo
SarimaForecastWorkerquando SARIMA è il modello selezionato.
- Aggiungere SARIMA all’elenco dei modelli: Inserire “SARIMA” nel
Passo 3: Integrazione nella Data Enrichment Pipeline (Per Backtesting)
Per permettere alle strategie di utilizzare le previsioni SARIMA, dobbiamo renderlo disponibile come “provider” di arricchimento.
- File da Creare:
fire/workers/enrichment/sarima_enrichment_worker.py- Responsabilità: Simile al worker del Forecast Lab, ma progettato per arricchire un DataFrame esistente con una colonna di previsioni, operando in modo “rolling” se necessario per il backtesting.
- File da Modificare:
fire/logic/data_enrichment_registry.py- Modifica Necessaria: Registrare il nuovo provider “SARIMA” e associarlo al
SarimaEnrichmentWorker. Questo lo renderà disponibile alle strategie Python tramite l’APIself.get_enrichment_data('SARIMA').
- Modifica Necessaria: Registrare il nuovo provider “SARIMA” e associarlo al
Riepilogo e Prossimo Passo
Questo piano d’azione scompone l’implementazione in passi gestibili e sicuri, partendo da una validazione a basso rischio (POC) per poi procedere con l’integrazione graduale nei due punti chiave dell’applicazione (Forecast Lab e Enrichment Pipeline).
Se questo piano d’azione è chiaro e lo approvi, procederò con il Passo 1: Creazione del Proof of Concept (POC). Attendo il tuo via libera.