Questa è una versione PDF del contenuto. Per la versione completa e aggiornata, visita:
https://blog.tuttosemplice.com/analisi-serie-storiche-signal-processing-per-i-kpi-aziendali/
Verrai reindirizzato automaticamente...
Nel panorama della Business Intelligence moderna, l’analisi serie storiche rappresenta spesso il confine tra una decisione basata sull’intuizione e una fondata sulla scienza dei dati. Tuttavia, la maggior parte degli analisti si limita a osservare medie mobili e variazioni percentuali, ignorando un patrimonio metodologico che l’ingegneria elettronica ha perfezionato negli ultimi decenni: il Signal Processing (Elaborazione Numerica dei Segnali).
In questa guida tecnica, abbandoneremo l’approccio statistico classico per adottare una visione ingegneristica. Tratteremo i KPI aziendali (come il volume di richieste di mutui in una Fintech o il cash flow giornaliero) non come semplici numeri su un foglio di calcolo, ma come segnali elettrici affetti da rumore. Applicando trasformate matematiche e filtri digitali, impareremo a estrarre il “trend puro” (il segnale) dalle fluttuazioni casuali del mercato (il rumore).
In elettronica, un segnale ricevuto da un sensore è sempre contaminato da disturbi esterni. Lo stesso accade nei dati aziendali. Se osserviamo il grafico delle vendite giornaliere, vediamo picchi e valli. La domanda fondamentale è: quella flessione di martedì è un trend preoccupante (Segnale) o solo una variazione casuale dovuta al meteo o a un giorno festivo (Rumore)?
Per rispondere, dobbiamo definire il rapporto Segnale/Rumore (SNR – Signal-to-Noise Ratio). Un approccio basato sulla fisica dei sistemi ci insegna che:
Per seguire questa guida, non useremo Excel. L’analisi avanzata dei segnali richiede potenza di calcolo e librerie specifiche. Al 2026, lo stack standard per questo tipo di operazione include:
Uno degli errori più comuni nell’analisi serie storiche finanziarie è cercare di intuire la stagionalità guardando il grafico nel dominio del tempo. Un ingegnere elettronico, invece, sposta il problema nel dominio della frequenza.
Utilizzando la Fast Fourier Transform (FFT), possiamo scomporre il nostro KPI (es. richieste di mutui giornaliere) nelle sue componenti sinusoidali costitutive. Questo ci permette di identificare ciclicità nascoste che l’occhio umano non vede.
Immaginiamo di avere un dataset di 365 giorni di richieste. Applicando la FFT, potremmo vedere un picco di magnitudo alla frequenza corrispondente a 7 giorni (ciclo settimanale) e uno a 30 giorni (ciclo mensile). Se notiamo un picco inatteso a 90 giorni, abbiamo scoperto una ciclicità trimestrale legata, ad esempio, alle scadenze fiscali, senza doverla indovinare.
Una volta compreso lo spettro del nostro segnale, dobbiamo pulirlo. La tecnica più usata nel business è la Media Mobile Semplice (SMA). In ingegneria, la SMA è considerata un filtro passa-basso molto rudimentale con pessime caratteristiche di fase (introduce un ritardo, o lag, significativo).
Se usate una media mobile a 30 giorni per prevedere il cash flow, il vostro indicatore vi dirà che il trend è cambiato con 15 giorni di ritardo. In un mercato volatile come il Fintech, questo ritardo è inaccettabile.
Il Filtro di Kalman è l’algoritmo definitivo per la stima di stato in sistemi dinamici (usato dal GPS ai sistemi di guida missilistica). A differenza delle medie mobili, il filtro di Kalman non si limita a “lisciare” il passato, ma:
Il risultato è una stima del trend estremamente reattiva che separa il rumore dal segnale reale quasi in tempo reale, riducendo drasticamente il lag.
Vediamo come applicare questi concetti a un dataset fittizio di richieste di prestiti giornalieri.
import numpy as np
import pandas as pd
from scipy.fft import fft, fftfreq
import matplotlib.pyplot as plt
# Caricamento dati (Serie temporale)
data = pd.read_csv('richieste_mutui.csv')
segnale = data['richieste'].values
# Calcolo FFT
N = len(segnale)
T = 1.0 / 365.0 # Campionamento giornaliero
yf = fft(segnale)
xf = fftfreq(N, T)[:N//2]
# Plot dello spettro
plt.plot(xf, 2.0/N * np.abs(yf[0:N//2]))
plt.title('Spettro delle Frequenze (Ciclicità)')
plt.grid()
plt.show()Interpretazione: I picchi nel grafico indicano i cicli naturali del business. Se eliminiamo queste frequenze (filtro notch), otteniamo il trend destagionalizzato in modo matematicamente rigoroso.
Per pulire il segnale mantenendo la reattività, usiamo un’implementazione base di un filtro di Kalman monodimensionale.
from pykalman import KalmanFilter
# Configurazione del Filtro
# transition_covariance: quanto velocemente cambia il trend reale
# observation_covariance: quanto rumore c'è nei dati giornalieri
kf = KalmanFilter(transition_matrices=[1],
observation_matrices=[1],
initial_state_mean=segnale[0],
initial_state_covariance=1,
observation_covariance=10,
transition_covariance=0.1)
# Calcolo del segnale filtrato
state_means, _ = kf.filter(segnale)
# Confronto
data['Kalman_Signal'] = state_means
data[['richieste', 'Kalman_Signal']].plot()
plt.title('Dati Grezzi vs Filtro di Kalman')
plt.show()L’applicazione di queste tecniche di analisi serie storiche trasforma il processo decisionale:
state_means) rappresenta la “verità” del business, depurata dalla varianza giornaliera casuale.Trattare i dati di business come segnali elettrici non è solo un esercizio accademico, ma un vantaggio competitivo. Mentre i competitor reagiscono al rumore (es. una giornata di scarse vendite dovuta al caso), l’azienda che utilizza il Signal Processing mantiene la rotta, reagendo solo quando il segnale indica un reale cambiamento strutturale. L’uso della Trasformata di Fourier e del Filtro di Kalman eleva l’analisi delle serie storiche da semplice osservazione a strumento predittivo di alta precisione.
Il Signal Processing applicato ai KPI è un approccio ingegneristico che tratta i dati di business, come le vendite o il cash flow, non come semplici numeri statistici ma come segnali elettrici. Questa metodologia utilizza trasformate matematiche e filtri digitali per separare il trend reale, definito segnale, dalle fluttuazioni casuali del mercato, identificate come rumore. L’obiettivo è ottenere una visione più chiara e scientifica dell’andamento aziendale, depurata dalle distorsioni momentanee.
Nell’analisi delle serie storiche, il Segnale rappresenta l’informazione deterministica e preziosa, come un trend di crescita strutturale o una stagionalità ricorrente a bassa frequenza. Il Rumore, al contrario, è costituito da variazioni stocastiche e casuali, spesso ad alta frequenza, dovute a fattori esterni imprevedibili come il meteo o eventi isolati. Distinguere correttamente il rapporto Segnale Rumore permette di evitare decisioni basate su falsi allarmi.
Il Filtro di Kalman è preferibile alla Media Mobile Semplice perché risolve il problema del ritardo, noto come lag, tipico degli indicatori classici. Mentre la media mobile reagisce lentamente ai cambiamenti lisciando solo i dati passati, il filtro di Kalman combina un modello predittivo interno con le misurazioni in tempo reale. Questo permette di stimare il trend attuale con estrema reattività e precisione, adattandosi dinamicamente alla volatilità del sistema.
La Fast Fourier Transform, o FFT, è fondamentale per analizzare i dati nel dominio della frequenza anziché in quello del tempo. Questo strumento scompone la serie storica nelle sue componenti sinusoidali, permettendo di identificare ciclicità nascoste e stagionalità complesse, come cicli settimanali o trimestrali, che non sarebbero visibili osservando semplicemente il grafico dell’andamento temporale dei dati.
Per implementare tecniche di Signal Processing sui dati aziendali, lo stack tecnologico standard basato su Python include diverse librerie specializzate. NumPy e Pandas sono essenziali per la manipolazione delle serie temporali, mentre SciPy, in particolare il modulo signal, è necessario per calcolare trasformate e filtri. Per l’implementazione specifica dei filtri predittivi, si utilizzano librerie ottimizzate come PyKalman o FilterPy.