Come viene calcolato il DPO: formula, input e verifica
Risposta diretta
Il DPO (Detrended Price Oscillator) viene calcolato prendendo un valore della serie storica dei prezzi “attuale” e sottraendo un valore della media mobile spostato indietro nel tempo. Il risultato esatto dipende da due parametri scelti dall’utente: la lunghezza della media mobile e l’offset di spostamento (spesso derivato dalla lunghezza della media mobile).
Un modo comune di esprimere il meccanismo è:
- Calcolare una media mobile della serie dei prezzi scelta su una lunghezza selezionata, indicata con L.
- Calcolare un offset di spostamento, indicato con offset (comunemente offset = floor(L/2) + 1 in molte definizioni di DPO).
- Per ogni indice temporale t, calcolare
- DPO(t) = Price(t) − MA(t − offset)
In termini semplici: si confronta il prezzo attuale con il valore che la sua media mobile “di riferimento” aveva in un momento precedente, eliminando efficacemente la componente di tendenza a lungo termine.
Meccanismo e definizione
Cosa significa “Detrended” in questo contesto
“Detrended” nel DPO non significa eseguire una regressione statistica della tendenza. Invece, il DPO utilizza sottrazione e spostamento temporale. La media mobile rappresenta una versione smussata del prezzo su un intervallo L. Spostando quel valore della media mobile indietro nel tempo, il DPO cerca di isolare una componente ciclica attorno allo zero.
Input che devi scegliere
Per calcolare il DPO, hai bisogno di:
- Una serie di prezzi: ad esempio, i prezzi di chiusura di ogni periodo. Il tuo calcolo dipende dal prezzo utilizzato.
- Un metodo di media mobile: tipicamente una media mobile semplice (SMA), anche se alcune implementazioni usano altri tipi di medie mobili.
- Una lunghezza della media mobile (L): il numero di periodi utilizzati per calcolare la media mobile.
- Un offset di spostamento (offset): lo spostamento temporale applicato alla media mobile. Molte descrizioni usano offset = floor(L/2) + 1, ma le implementazioni possono variare, quindi è importante verificare la definizione utilizzata dalla tua fonte dati o piattaforma.
Procedura passo dopo passo (con un’assunzione esplicita)
Supponiamo che tu utilizzi:
- Prezzo = Close(t)
- Media mobile = SMA su L periodi
- Offset di spostamento = offset = floor(L/2) + 1
Allora:
- Calcola SMA(t) per ogni tempo t in cui esiste una storia sufficiente:
- SMA(t) = (1/L) * sum_{i=0..L-1} Close(t − i)
- Per un dato tempo t in cui esiste SMA(t − offset), calcola:
- DPO(t) = Close(t) − SMA(t − offset)
Questo rende esplicito il requisito di dati: non puoi calcolare il DPO finché non hai almeno L + offset periodi di storia.
Evidenza o esempio (verificabile autonomamente)
Esempio con un piccolo dataset ipotetico
Supponiamo:
- L = 5
- offset = floor(5/2) + 1 = 3
- il prezzo è il Close
- la media mobile è SMA
All’indice temporale t:
- Calcoli SMA(t − 3) utilizzando i prezzi di chiusura da (t − 3) a (t − 3 − 4), cioè 5 valori in totale.
- Poi sottrai quella SMA da Close(t).
Quindi il DPO non è “Close(t) − SMA(t)”. La differenza è lo spostamento: utilizzi SMA(t − offset).
Come verificare autonomamente il tuo calcolo
Per verificare la tua implementazione del DPO senza fare affidamento sull’output di una piattaforma:
- Scegli L e la definizione di offset che utilizzerai.
- Calcola direttamente la serie della media mobile MA(t) dai tuoi dati di prezzo.
- Sposta indietro quella media mobile di offset per creare MA_shifted(t) = MA(t − offset).
- Calcola DPO(t) = Price(t) − MA_shifted(t).
Se i tuoi risultati corrispondono, hai confermato il meccanismo di calcolo.
Limitazioni e rischi (modalità di errore rilevanti)
1) Differenze di implementazione che alterano l’output numerico
Il DPO è facile da calcolare, ma la regola dell’offset e talvolta il tipo di media mobile possono variare tra le diverse definizioni. Anche se la formula sembra simile, cambiare offset di un solo periodo può alterare l’oscillatore.
2) La disponibilità dei dati crea un periodo di “avvio”
Poiché il DPO utilizza una media mobile spostata, hai bisogno di un numero sufficiente di dati storici per calcolare MA(t − offset). I primi valori sono indefiniti o dipendono dal modo in cui lo strumento gestisce la storia mancante.
3) Il DPO può comportarsi in modo imprevedibile quando l’ipotesi ciclica viene meno
Il DPO è spesso interpretato come un indicatore che isola il comportamento ciclico attorno allo zero. Tuttavia, se la dinamica dei prezzi cambia (ad esempio, cambiano i regimi di volatilità o di tendenza), la sottrazione e lo spostamento potrebbero non isolare più la stessa componente. Ciò può portare a interpretazioni fuorvianti degli attraversamenti dello zero o dell’ampiezza delle oscillazioni.
4) I costi di mercato e l’esecuzione possono influenzare qualsiasi utilizzo successivo
Anche se questo articolo riguarda il calcolo, è importante notare un rischio pratico: se qualcuno utilizza il DPO per prendere decisioni, gli esiti nel mondo reale sono influenzati dai costi di transazione, dagli spread denaro/lettera e dall’esecuzione. Questi fattori non fanno parte della matematica dell’indicatore e possono dominare il segnale apparente.
Verifica o prossima domanda
Un passo utile successivo è confrontare due implementazioni indipendenti:
- una calcolata manualmente dal tuo foglio di calcolo usando DPO(t) = Price(t) − MA(t − offset)
- e una prodotta dal tuo strumento di grafici
Poi verifica se il tuo strumento utilizza lo stesso campo prezzo, lo stesso tipo di media mobile e la stessa definizione di offset. Se i risultati differiscono, la causa più probabile è una discrepanza di definizione piuttosto che un errore di calcolo.
Se vuoi, puoi anche esaminare come diversi valori di L influenzano i tempi e la fluidità dell’oscillatore, poiché il comportamento del DPO dipende fortemente dai parametri scelti.