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:
- 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.
- 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’
InitializationWorkerdell’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 dalChromeManager. - Flusso:
- Al click del pulsante, la
MainWindowavvia ilTimesFMForecastWorker. - Passa al worker la serie storica di prezzi attualmente visualizzata sul grafico.
- Si mette in ascolto del segnale
finisheddel worker.
- Al click del pulsante, la
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:
- Una
LineSeriestratteggiata per la previsione puntuale. - Una
AreaSeriessemi-trasparente (ottenuta tramite un “hack” con dueLineSeriesche ne definiscono i bordi) per rappresentare l’intervallo di confidenza dei quantili, creando l’effetto “nuvola di probabilità”.
- Una