Anomaly Detection
su Serie Storiche Finanziarie
Framework di anomaly detection applicabile a portafogli reali e feed di mercato. Tre metodi complementari — statistico, tecnico e ML — confrontati su 252 sessioni di trading per individuare pattern anomali di prezzo e volume.
Metodi utilizzati
📊 Z-Score
Calcolo della deviazione standard sui ritorni giornalieri. Flag anomalia per |Z| > 2.5. Semplice ma efficace su distribuzioni normali.
📈 Bande di Bollinger
Media mobile 20 giorni ± 2σ. Anomalia quando il prezzo esce dalle bande. Cattura volatilità strutturale nel tempo.
🌲 Isolation Forest
Algoritmo ensemble non supervisionato. Contamination=0.05, n_estimators=100. Rileva pattern multivariati non lineari.
Snippet chiave
import pandas as pd
# Calcolo Z-Score sui ritorni
df['returns'] = df['close'].pct_change()
df['zscore'] = (df['returns'] - df['returns'].mean()) / df['returns'].std()
df['anomaly_zscore'] = df['zscore'].abs() > 2.5
# Isolation Forest
clf = IsolationForest(contamination=0.05, random_state=42)
features = df[['returns', 'volume', 'zscore']].dropna()
df['anomaly_if'] = clf.fit_predict(features) == -1
Risultati e conclusioni
I tre metodi mostrano buona concordanza: 12 anomalie su 18 totali vengono rilevate da almeno 2 metodi contemporaneamente, suggerendo eventi di mercato realmente significativi.
L'Isolation Forest, grazie all'approccio multivariato (prezzo + volume + Z-Score), cattura anomalie che Z-Score e Bollinger isolati non rilevano — in particolare eventi con volume anomalo ma variazione di prezzo contenuta.
I cluster di anomalie identificati corrispondono a periodi di earnings report e annunci macroeconomici, confermando l'affidabilità del framework anche in contesti operativi reali. Il sistema è progettato per essere integrato in pipeline di monitoraggio automatizzato.