Como o Kama é calculado?
Resposta direta
O Kama é geralmente calculado como uma média móvel variável e autoajustável. Na formulação mais comum, cada novo valor do Kama usa (1) o valor anterior do Kama, (2) um fator de suavização que muda ao longo do tempo e (3) o preço atual. Esse fator de suavização depende de quão “eficientemente” o preço se moveu em uma janela de lookback recente—frequentemente medido como a razão entre a variação líquida do preço e a variação absoluta total.
Como existem diferentes nomes e variantes na prática, a maneira mais segura de verificar o que você está usando é checar a definição exata nas configurações do indicador que você possui (por exemplo, o comprimento do lookback e as constantes de suavização). O cálculo abaixo mostra uma estrutura estável e amplamente utilizada; se o Kama da sua plataforma usar nomes de parâmetros diferentes ou uma fórmula de eficiência ligeiramente diferente, os passos mecânicos são semelhantes, mas as constantes podem diferir.
Mecanismo e definição
Uma maneira prática de descrever a mecânica é como um processo de suavização recursiva.
- Escolha a série de preços de entrada O Kama é calculado a partir de uma série temporal de preços. O “preço” pode ser definido de diferentes maneiras (por exemplo, preço de fechamento, prezo típico ou outra série derivada). Sua escolha de entrada deve corresponder à implementação que você deseja reproduzir.
Seja P[t] o preço selecionado no tempo t.
- Defina uma janela de lookback e limites de suavização Um Kama típico usa:
- Comprimento do lookback: N (quantos períodos são usados para julgar a eficiência)
- Configuração de suavização rápida: geralmente representada por um período ou constante “rápido” pequeno
- Configuração de suavização lenta: geralmente representada por um período ou constante “lento” maior
Em muitas implementações, os limites de suavização são convertidos em duas constantes:
- SC_fast e SC_slow derivadas dos períodos rápido e lento
O mapeamento exato depende da implementação. Uma abordagem comum usa constantes de suavização exponencial da forma:
- SC_fast = 2 / (fastPeriod + 1)
- SC_slow = 2 / (slowPeriod + 1)
- Calcule um índice de eficiência nos últimos N períodos Na janela de lookback, duas quantidades são comparadas:
- Variação líquida: |P[t] − P[t−N]|
- Soma dos movimentos absolutos: soma_{i=0..N−1} |P[t−i] − P[t−i−1]|
Então, um índice de eficiência ER é calculado como:
- ER = variaçãoLíquida / somaMovimentosAbsolutos
Este ER é projetado para ser maior quando o preço se move fortemente do início ao fim em relação à quantidade de movimento “de vaivém” dentro da janela. Quando ER está próximo de 0, o preço esteve instável; quando ER está mais próximo de 1, o preço se moveu de forma mais direta.
Um detalhe que as implementações tratam explicitamente: se somaMovimentosAbsolutos for zero (por exemplo, se o preço não mudou em toda a janela), ER pode ser definido como 0 ou tratado para evitar divisão por zero. Você deve replicar a mesma regra usada na sua fonte.
- Converta ER em uma constante de suavização dinâmica Uma constante de suavização variável SC[t] é então calculada usando ER e os limites de suavização. Uma estrutura comum é:
- SC[t] = (ER × (SC_fast − SC_slow) + SC_slow)^2
O expoente (frequentemente 2) faz parte da formulação comumente usada; se sua implementação usar um expoente diferente, você deve usar o mesmo.
- Atualize o Kama recursivamente Finalmente, o Kama é atualizado como:
- Kama[t] = Kama[t−1] + SC[t] × (P[t] − Kama[t−1])
Esta forma faz o Kama “puxar” em direção ao preço atual por uma quantidade que depende de SC[t]. Um SC maior significa ajuste mais rápido; um SC menor significa ajuste mais lento.
- Inicialização O Kama requer um valor inicial Kama[0] (ou Kama[N−1], dependendo da indexação). Muitas implementações inicializam o Kama com o preço no primeiro ponto disponível ou com uma média móvel simples. Se você quiser verificar o cálculo de forma independente, confirme a regra exata de inicialização na definição do indicador que está testando.
Evidência ou exemplo (com suposições explícitas)
Abaixo está uma pequena demonstração numérica usando suposições declaradas. Estes não são dados de mercado ao vivo; mostram a estrutura de cálculo que você pode repetir com sua própria série.
Suposições para o exemplo:
- Preço de entrada P é o preço de fechamento.
- Comprimento do lookback N = 3.
- fastPeriod = 2, slowPeriod = 30, então:
- SC_fast = 2/(2+1) = 0,666666…
- SC_slow = 2/(30+1) = 0,064516…
- Expoente é 2 em SC[t].
- Valor anterior do Kama é Kama[t−1] = 100.
Suponha que no tempo t você tenha:
- P[t−2] = 99
- P[t−1] = 101
- P[t] = 100
Passo A: variaçãoLíquida
- variaçãoLíquida = |P[t] − P[t−N]| = |100 − 99| = 1
Passo B: somaMovimentosAbsolutos Para N = 3, precisamos de |P[t]−P[t−1]| + |P[t−1]−P[t−2]| + |P[t−2]−P[t−3]|. Mas nossa mini-série mostra apenas dois preços anteriores. Para manter a demonstração consistente, expanda a janela para incluir P[t−3].
Seja P[t−3] = 98. Agora calcule:
- |P[t] − P[t−1]| = |100 − 101| = 1
- |P[t−1] − P[t−2]| = |101 − 99| = 2
- |P[t−2] − P[t−3]| = |99 − 98| = 1
- somaMovimentosAbsolutos = 1 + 2 + 1 = 4
Passo C: ER
- ER = variaçãoLíquida / somaMovimentosAbsolutos = 1 / 4 = 0,25
Passo D: constante de suavização dinâmica
- SC[t] = (ER × (SC_fast − SC_slow) + SC_slow)^2 Primeiro calcule (SC_fast − SC_slow):
- 0,666666… − 0,064516… = 0,602150… Então o termo linear:
- ER × (SC_fast − SC_slow) + SC_slow = 0,25 × 0,602150… + 0,064516… = 0,150537… + 0,064516… = 0,215053… Eleve ao quadrado:
- SC[t] ≈ (0,215053…)^2 ≈ 0,0463
Passo E: atualizar o Kama
- Kama[t] = Kama[t−1] + SC[t] × (P[t] − Kama[t−1]) = 100 + 0,0463 × (100 − 100) = 100
Neste exemplo construído, o preço atual é igual ao Kama anterior, então a atualização é zero. Se P[t] fosse diferente de Kama[t−1], você veria um ajuste não nulo escalado por SC[t].
Por que isso ilustra a ideia: se ER aumenta (o preço se torna mais direto ao longo de N períodos), SC[t] tende a se mover em direção a SC_fast, fazendo o Kama responder mais rápido. Se ER diminui (movimento mais instável), SC[t] tende a SC_slow, tornando o Kama mais suave.
Limitações e riscos
-
Incompatibilidade de parâmetros O Kama depende de N, das configurações rápida/lenta, e do expoente e regras de tratamento para casos extremos (como divisão por zero). Se você copiar a fórmula, mas não o mapeamento exato de parâmetros do seu indicador, reproduzirá valores diferentes.
-
Definição do preço de entrada Diferentes plataformas definem o “preço” de maneiras diferentes. Se uma usa o fechamento e outra usa um preço derivado (por exemplo, média de alta/baixa/fechamento), toda a série de saída muda.