DD-FORECASTING.md

Versione: 1.0 Data: 2025-10-22 Scopo: Descrivere l’architettura di integrazione del motore di forecasting TimesFM in FIRE. Documento Principale: FIRE 25.07 - ARCHITECTURE-OVERVIEW


1. Filosofia: Forecasting Sovrano e On-Demand

L’integrazione del modello TimesFM persegue due obiettivi strategici allineati con la visione di FIRE:

  1. Potenza Accessibile: Fornire agli utenti uno strumento di forecasting di livello “state-of-the-art” (un foundation model pre-addestrato) senza la necessità di competenze di machine learning.
  2. Sovranità e Performance: L’intero processo di inferenza avviene localmente sulla macchina dell’utente, sfruttando la GPU (via PyTorch/CUDA) per garantire performance elevate e la massima privacy. Nessun dato viene mai inviato a server esterni.

2. Architettura di Integrazione

L’integrazione è progettata per essere efficiente e disaccoppiata, basandosi su tre componenti chiave.

2.1. Il Worker (TimesFMForecastWorker)

Questa è la spina dorsale del sistema.

  • Responsabilità: Ricevere una serie storica grezza, orchestrare l’esecuzione del modello TimesFM e restituire i risultati della previsione.
  • Lazy Loading del Modello: Per evitare di rallentare l’avvio dell’applicazione, il modello TimesFM (che è di grandi dimensioni) non viene caricato subito. Il worker implementa un pattern di lazy loading: il modello viene scaricato e caricato in memoria solo la prima volta che l’utente richiede una previsione. Le richieste successive sono quasi istantanee.
  • Pre-caricamento (Warm-up): Per ottimizzare ulteriormente l’esperienza, l’InitializationWorker dell’applicazione attiva il lazy loading in background durante la visualizzazione della splash screen, rendendo il modello disponibile fin dal primo utilizzo.

2.2. L’Orchestrazione (MainWindow)

La MainWindow agisce come orchestratore per collegare l’azione dell’utente all’esecuzione del worker.

  • Trigger: Un QToolButton (“Forecast”) nella toolbar, gestito dal ChromeManager.
  • Flusso:
    1. Al click del pulsante, la MainWindow avvia il TimesFMForecastWorker.
    2. Passa al worker la serie storica di prezzi attualmente visualizzata sul grafico.
    3. Si mette in ascolto del segnale finished del worker.

2.3. La Visualizzazione (LightweightChartWidget)

Il widget del grafico è stato esteso per visualizzare i risultati della previsione.

  • Nuovo Metodo (draw_forecast_overlay): Questo metodo riceve i dati della previsione (puntuale e quantili) dal segnale del worker.
  • Rendering “Fantasma del Futuro”: Utilizza le API di Lightweight Charts per disegnare due serie sovrapposte:
    1. Una LineSeries tratteggiata per la previsione puntuale.
    2. Una AreaSeries semi-trasparente (ottenuta tramite un “hack” con due LineSeries che ne definiscono i bordi) per rappresentare l’intervallo di confidenza dei quantili, creando l’effetto “nuvola di probabilità”.