Como o DPO é Calculado: Fórmula, Entradas e Verificação
Resposta direta
O DPO (Oscilador de Preço sem Tendência, do inglês Detrended Price Oscillator) é calculado pegando um valor da série de preços “atual” e subtraindo um valor de média móvel que é deslocado para trás no tempo. O resultado exato depende de dois parâmetros escolhidos pelo usuário: o comprimento da média móvel e o deslocamento (frequentemente derivado do comprimento da média móvel).
Uma maneira comum de expressar o mecanismo é:
- Calcule uma média móvel da série de preços escolhida ao longo de um comprimento selecionado, denotado por L.
- Calcule um deslocamento, denotado por offset (comumente offset = floor(L/2) + 1 em muitas definições de DPO).
- Para cada índice de tempo t, calcule
- DPO(t) = Preço(t) − MA(t − offset)
Em termos simples: você compara o preço atual com onde sua “referência” de média móvel estaria em um momento anterior, efetivamente removendo (destacando) o componente de tendência de longo prazo.
Mecanismo e definição
O que “sem tendência” significa aqui
“Sem tendência” no DPO não significa que você executa uma regressão estatística de tendência. Em vez disso, o DPO usa subtração e deslocamento temporal. A média móvel representa uma versão suavizada do preço ao longo do comprimento L. Ao deslocar esse valor da média móvel para trás, o DPO tenta isolar um componente cíclico em torno de zero.
Entradas que você deve escolher
Para calcular o DPO, você precisa de:
- Uma série de preços: por exemplo, preços de fechamento de cada período. Seu cálculo depende de qual preço você usa.
- Um método de média móvel: tipicamente uma média móvel simples (SMA), embora algumas implementações usem outras médias móveis.
- Um comprimento de média móvel (L): o número de períodos usados para calcular a média móvel.
- Um deslocamento (offset): o deslocamento temporal aplicado à média móvel. Muitas descrições usam offset = floor(L/2) + 1, mas as implementações variam, então você deve confirmar a definição usada pela sua plataforma ou dados.
Passo a passo (com uma premissa explícita)
Suponha que você use:
- Preço = Fechamento(t)
- Média móvel = SMA ao longo de L períodos
- Deslocamento = offset = floor(L/2) + 1
Então:
- Calcule SMA(t) para cada tempo t onde haja histórico suficiente:
- SMA(t) = (1/L) * soma_{i=0..L-1} Fechamento(t − i)
- Para um dado tempo t onde SMA(t − offset) exista, calcule:
- DPO(t) = Fechamento(t) − SMA(t − offset)
Isso torna o requisito de dados explícito: você não pode calcular o DPO até ter pelo menos L + offset períodos de histórico.
Evidência ou exemplo (verificável)
Exemplo com um pequeno conjunto de dados hipotético
Suponha:
- L = 5
- offset = floor(5/2) + 1 = 3
- preço é Fechamento
- média móvel é SMA
No índice de tempo t:
- Você calcula SMA(t − 3) usando os fechamentos de (t − 3) até (t − 3 − 4), ou seja, 5 valores no total.
- Então você subtrai essa SMA de Fechamento(t).
Portanto, o DPO não é “Fechamento(t) − SMA(t)”. A diferença é o deslocamento: você usa SMA(t − offset).
Como verificar independentemente seu próprio cálculo
Para verificar sua implementação do DPO sem depender de nenhuma saída de plataforma:
- Escolha L e a definição de offset que você usará.
- Calcule a série de média móvel MA(t) diretamente dos seus dados de preço.
- Desloque essa média móvel para trás por offset para criar MA_deslocada(t) = MA(t − offset).
- Calcule DPO(t) = Preço(t) − MA_deslocada(t).
Se seus resultados corresponderem, você confirmou a mecânica do cálculo.
Limitações e riscos (modos de falha materiais)
1) Diferenças de implementação alteram a saída numérica
O DPO é fácil de calcular, mas a regra de deslocamento e às vezes o tipo de média móvel podem diferir entre definições. Mesmo que a fórmula pareça semelhante, mudar o offset em um período pode alterar o oscilador.
2) Disponibilidade de dados cria um período de “aquecimento”
Como o DPO usa uma média móvel deslocada, você precisa de pontos históricos suficientes para calcular MA(t − offset). Os valores iniciais são indefinidos ou dependem de como sua ferramenta lida com histórico ausente.
3) O DPO pode se comportar de forma imprevisível quando a premissa cíclica falha
O DPO é frequentemente interpretado como isolando comportamento cíclico em torno de zero. No entanto, se a dinâmica de preços mudar (por exemplo, regimes de volatilidade mudam ou o comportamento de tendência se altera), a subtração-e-deslocamento pode não isolar mais o mesmo componente. Isso pode levar a interpretações enganosas de cruzamentos de zero ou amplitude de oscilação.
4) Custos de mercado e execução podem afetar qualquer uso subsequente
Embora este artigo seja sobre cálculo, é importante notar um modo de falha prático: se alguém usa o DPO para decisões, os resultados do mundo real são influenciados por custos de transação, spreads de compra/venda e execução. Esses fatores não fazem parte da matemática do indicador e podem dominar o sinal aparente.
Verificação ou próxima pergunta
Um próximo passo útil é comparar duas implementações independentes:
- uma calculada manualmente em sua planilha usando DPO(t) = Preço(t) − MA(t − offset)
- e outra produzida pela sua ferramenta de gráficos escolhida
Em seguida, verifique se sua ferramenta usa o mesmo campo de preço, o mesmo tipo de média móvel e a mesma definição de deslocamento. Se seus resultados diferirem, a causa mais provável é uma incompatibilidade de definição, e não um erro de matemática.
Se quiser, você também pode examinar como diferentes valores de L mudam o timing e a suavidade do oscilador, porque o comportamento do DPO é altamente dependente dos parâmetros escolhidos.