Filtro CUSUM: campionamento degli eventi nei mercati finanziari
Scopri come il filtro CUSUM simmetrico trasforma i log-rendimenti in timestamp di eventi, come scegliere soglie fisse o dinamiche e come evitare look-ahead.
In questa guidaQuale problema risolve il filtro CUSUM
Breve sintesi
Il filtro CUSUM registra un timestamp quando deviazioni dei log-rendimenti consecutive e nella stessa direzione superano una soglia cumulativa. Il risultato è un insieme di tempi-evento per costruire il campione, non una previsione della direzione, un'etichetta dell'esito o una garanzia di stazionarietà.
Quale problema risolve il filtro CUSUM
Se si passa un'osservazione al modello a ogni sessione, i periodi senza cambiamenti rilevanti possono dominare il campione. Il filtro CUSUM offre una regola per selezionare i momenti in cui una sequenza di movimenti concordi si è accumulata abbastanza. Ogni rendimento viene comunque esaminato; soltanto le barre che soddisfano la condizione sono registrate come eventi. Qui “filtro” indica una selezione temporale, non un segnale di acquisto o vendita.
L'idea della somma cumulativa, o CUSUM, appartiene al monitoraggio statistico sequenziale. E. S. Page descrive schemi di ispezione continua nel suo articolo del 1954. Nel contesto finanziario, il capitolo 2 di Advances in Financial Machine Learning colloca il campionamento nella costruzione delle strutture dei dati. La documentazione di mlfinpy presenta poi il filtro CUSUM simmetrico per selezionare le barre attivate da movimenti cumulativi.
Calcola due somme dai log-rendimenti
Dato un prezzo di chiusura positivo (P_t), calcola il log-rendimento (r_t=\ln(P_t/P_{t-1})). Il filtro mantiene due somme, entrambe inizializzate a zero: una positiva e una negativa. La ricorrenza è S+_t = max(0, S+_(t-1) + r_t) e S-_t = min(0, S-_(t-1) + r_t). La prima conserva solo l'accumulo sopra zero; la seconda solo quello sotto zero.
Con soglia simmetrica (h>0), registra il tempo (t) quando S+_t > h oppure S-_t < -h. Dopo un evento al rialzo, azzera S+; dopo un evento al ribasso, azzera S-. I rendimenti successivi continuano a essere elaborati. Non è come attivare un segnale quando un singolo rendimento supera la soglia: più piccoli rendimenti concordi possono sommarsi in un evento.
La convenzione esattamente sulla soglia va stabilita in anticipo. La descrizione nella documentazione mlfinpy parla di un valore che raggiunge o supera il limite, mentre la implementazione consultata usa confronti stretti > e <. Se (S=h) esattamente, le due convenzioni differiscono. Scegli e documenta il comportamento; la parola “CUSUM” da sola non specifica la regola di uguaglianza.
Segui un percorso di prezzi ipotetico
Supponi che le chiusure consecutive siano 100,00 → 100,20 → 100,40 → 100,60 → 100,40 → 100,20 → 100,00 e che (h=0,005) in unità di log-rendimento, cioè 0,5%. Prezzi e risultati sono puramente illustrativi, non dati di mercato né prezzi di esecuzione.
Durante la salita, la variazione log cumulata da 100,00 a 100,60 è ln(100,60 / 100,00) = 0,005982, circa 0,598%. La somma positiva supera la soglia alla chiusura di 100,60: quel timestamp diventa un evento al rialzo e la somma positiva viene azzerata. I rendimenti successivi fanno scendere il prezzo. Quando il percorso torna a 100,00, la somma log da quel reset è ln(100,00 / 100,60) = -0,005982. La somma negativa oltrepassa -h e 100,00 diventa un evento al ribasso.
I due timestamp derivano dalla regola di campionamento. Il primo non significa che il filtro preveda un rialzo ulteriore, e il secondo non è un consiglio di vendita. Per verificare un'implementazione, calcola rendimenti e somme una barra alla volta e controlla che i timestamp rispettino la convenzione di soglia e reset scelta.
Scegli una soglia coerente con la scala del mercato
Una soglia fissa è facile da controllare: ogni accumulo viene confrontato con lo stesso valore (h). Ma un movimento dello 0,5% può essere enorme in un mercato tranquillo e ordinario in una fase volatile. Una soglia dinamica può seguire la scala della volatilità, per esempio h_t = k × σ_(t-1), dove (k) è un moltiplicatore scelto e (sigma) una misura della volatilità dei rendimenti.
Per evitare look-ahead, definisci quando (sigma) è disponibile. Se il campionamento si decide dopo la chiusura (t), una soglia calcolata con dati fino a (t-1) è una scelta causale chiara. Mantieni coerenti stimatore, finestra, scala per barra o annualizzata, trattamento degli estremi e dati mancanti. Non scegliere (k) solo perché produce una storia attraente: valutalo fuori campione.
Una soglia troppo bassa genera molti eventi, compresi movimenti piccoli che spread, commissioni, slippage e rumore possono assorbire. Una soglia troppo alta riduce gli eventi e può saltare movimenti informativi. Non esiste un valore universale. Confronta il numero di eventi, il tempo tra eventi, la stabilità tra periodi e i costi successivi per un insieme ragionevole di parametri.
Mantieni causali prezzo e timestamp
Il log-rendimento richiede prezzi positivi. Uno strumento che può scendere a zero o diventare negativo non può essere trattato direttamente con il log del prezzo; un rendimento semplice o un'altra trasformazione cambia scala e comportamento del filtro e deve essere definito e validato di nuovo. Controlla anche gli aggiustamenti per split e dividendi. Una serie aggiustata per split non equivale a una serie total return; una serie continua di future può mostrare salti di roll che non rappresentano il movimento di un singolo contratto negoziabile.
Un evento rilevato alla chiusura è conoscibile solo dopo che il prezzo di chiusura è stato registrato. Il modello può costruire feature con informazioni effettivamente disponibili a o prima di quel timestamp, ma il backtest non deve presumere un'esecuzione alla stessa chiusura che ha attivato l'evento, a meno che regola operativa e dati lo giustifichino. Spesso l'ordine viene simulato su una quotazione successiva, includendo spread, slippage, impatto, finanziamento e commissioni.
Il filtro restituisce timestamp di eventi, non trasforma l'intera cronologia in intervalli regolari. Le barre senza eventi possono servire per feature basate sul tempo, volatilità e stato del mercato. Non applicare formule che presuppongono osservazioni equidistanti—compresa l'annualizzazione di statistiche—senza verificare gli intervalli reali e l'orizzonte considerato.
Distingui campionamento, test di stabilità ed etichette
Lo stesso nome può indicare procedure diverse. Il filtro CUSUM di prezzo di questa guida somma log-rendimenti orientati per selezionare eventi. Un test econometrico come il test CUSUM per la stabilità della regressione e i residui ricorsivi esamina i residui rispetto all'ipotesi di parametri di regressione stabili; non è questa regola di campionamento. Nessuno dei due rende i dati o il processo stazionari solo perché una soglia viene superata.
Il filtro non definisce il target di apprendimento. Dopo aver selezionato il tempo-evento, le feature devono usare soltanto informazioni disponibili in quel momento. L'etichetta (y) viene costruita separatamente da un risultato futuro con una regola esplicita. Il metodo triple barrier per etichettare eventi finanziari risponde a un'altra domanda: quale barriera viene raggiunta per prima dopo l'evento. CUSUM non assegna automaticamente tale etichetta, non prevede la direzione e non garantisce liquidità o profitti.
In validazione, ricostruisci ogni soglia usando soltanto dati allora disponibili, preserva l'ordine temporale e impedisci che intervalli di etichette sovrapposti contaminino i fold. Valuta spread denaro-lettera, commissioni, funding, slippage, capacità e ritardo tra segnale ed esecuzione. Meno eventi non significa automaticamente una strategia migliore: metriche e ipotesi di fill devono corrispondere alla domanda di implementazione.
Domande frequenti
Q1Il filtro CUSUM è uguale al test CUSUM econometrico?
No. Il filtro di questa guida accumula log-rendimenti dei prezzi per selezionare eventi. Il test CUSUM della regressione usa residui ricorsivi per valutare la stabilità del modello secondo ipotesi e valori critici specifici.
Q2Una soglia dello 0,5% è adatta a ogni mercato?
No. Una soglia fissa può attivarsi troppo o troppo poco in base a volatilità, frequenza delle barre e strumento. Confronta soglie fisse e dinamiche usando solo informazioni causali e valutando i costi successivi.
Q3Il timestamp CUSUM significa che un ordine viene eseguito al prezzo di chiusura?
No. Il timestamp è noto solo una volta disponibile la chiusura. Simula invio e fill dopo l'attivazione con dati e ipotesi di costo adeguati.
Fonti e approfondimenti
Segnala un problema
Prepareremo un’e-mail con il link a questo articolo. Mark riceverà la segnalazione solo dopo l’invio
Controllo rapido
Hai finito la guida? Verifica ciò che hai capito con 3 domande
Domanda 01
Che cosa fa registrare una barra come evento nel filtro CUSUM?
Scegli una risposta per vedere la spiegazione
Glossario delle opzioni
The current IV's position between a lookback-period low and high; one outlier can distort it, so it should not be read as a standalone signal.
Leggi la guida completaIV percentileThe percentage of observations in a lookback window below the current IV; the result depends on the data series, window, and treatment of missing or extreme values.
Leggi la guida completaVIXA constant 30-day expected-volatility measure for the S&P 500 calculated from a strip of SPX option prices; it is not the IV of an individual stock or contract.
Leggi la guida completa