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 funzione auto_arima. Questa libreria è ideale perché automatizza il processo, altrimenti complesso, di ricerca dei parametri ottimali (p, d, q)(P, D, Q).
  • Obiettivi del POC:
    1. Caricare un set di dati di esempio (es. da un file CSV) con una chiara stagionalità.
    2. Utilizzare pmdarima.auto_arima per trovare automaticamente la migliore configurazione del modello.
    3. Generare una previsione per un numero definito di periodi futuri.
    4. 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_arima in 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.

B. Frontend (Aggiornamento dell’UI)

  • File da Modificare: fire/ui_components/forecast_manager_tab.py
  • Modifiche Necessarie:
    1. Aggiungere SARIMA all’elenco dei modelli: Inserire “SARIMA” nel QComboBox dove l’utente seleziona il modello di forecasting.
    2. 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.
    3. Connessione al Worker: Collegare il pulsante “Avvia Forecast” al nuovo SarimaForecastWorker quando SARIMA è il modello selezionato.

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’API self.get_enrichment_data('SARIMA').

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.