Come si calcola il Kama?

Limitazioni dei dati e dei parametri di calcolo del Kama.

Come si calcola il Kama?

Risposta diretta

Il Kama è generalmente calcolato come una media mobile variabile e auto-adattativa. Nella formulazione più comune, ogni nuovo valore del Kama utilizza (1) il valore precedente del Kama, (2) un fattore di smoothing che varia nel tempo e (3) il prezzo corrente. Tale fattore di smoothing dipende da quanto “efficientemente” il prezzo si è mosso in una finestra recente di osservazione—spesso misurato come rapporto tra variazione netta del prezzo e variazione assoluta totale.

Poiché in pratica esistono diversi nomi e varianti, il modo più sicuro per verificare ciò che si sta utilizzando è controllare la definizione esatta nelle impostazioni dell’indicatore disponibili (ad esempio, la lunghezza del lookback e le costanti di smoothing). Il calcolo riportato di seguito mostra una struttura stabile e ampiamente utilizzata; se il Kama della vostra piattaforma utilizza nomi di parametri diversi o una formula di efficienza leggermente differente, i passaggi meccanici sono simili ma le costanti potrebbero differire.

Meccanismo e definizione

Un modo pratico per descrivere il meccanismo è quello di considerarlo un processo ricorsivo di smoothing.

  1. Scegliere la serie di prezzi di input
    Il Kama viene calcolato a partire da una serie temporale di prezzi. Il “prezzo” può essere definito in modi diversi (ad esempio, prezzo di chiusura, prezzo tipico o un’altra serie derivata). La scelta del prezzo deve corrispondere all’implementazione che si desidera riprodurre.

Sia P[t] il prezzo selezionato al tempo t.

  1. Impostare una finestra di lookback e i limiti di smoothing
    Un Kama tipico utilizza:
  • Lunghezza del lookback: N (numero di periodi utilizzati per valutare l’efficienza)
  • Impostazione di smoothing veloce: di solito rappresentata da un periodo o costante “veloce” piccolo
  • Impostazione di smoothing lenta: di solito rappresentata da un periodo o costante “lenta” più grande

In molte implementazioni, i limiti di smoothing vengono convertiti in due costanti:

  • SC_fast e SC_slow derivate dai periodi veloce e lento

La mappatura esatta dipende dall’implementazione. Un approccio comune utilizza costanti di tipo smoothing esponenziale della forma:

  • SC_fast = 2 / (fastPeriod + 1)
  • SC_slow = 2 / (slowPeriod + 1)
  1. Calcolare un rapporto di efficienza negli ultimi N periodi
    Nella finestra di lookback vengono confrontate due quantità:
  • Variazione netta: |P[t] − P[t−N]|
  • Somma delle variazioni assolute: sum_{i=0..N−1} |P[t−i] − P[t−i−1]|

Quindi viene calcolato un rapporto di efficienza ER come:

  • ER = netChange / sumAbsMoves

Questo ER è progettato per essere più alto quando il prezzo si muove in modo deciso dall’inizio alla fine della finestra, rispetto alla quantità di movimenti “a zig-zag” al suo interno. Quando ER è vicino a 0, il prezzo è stato irregolare; quando ER è più vicino a 1, il prezzo si è mosso in modo più diretto.

Un dettaglio che le implementazioni gestiscono esplicitamente: se sumAbsMoves è zero (ad esempio, se il prezzo non cambia per tutta la finestra), ER può essere impostato a 0 o gestito per evitare divisioni per zero. Dovete replicare la stessa regola utilizzata nella vostra fonte.

  1. Convertire ER in una costante di smoothing dinamica
    Viene quindi calcolata una costante di smoothing variabile SC[t] utilizzando ER e i limiti di smoothing. Una struttura comune è:
  • SC[t] = (ER × (SC_fast − SC_slow) + SC_slow)^2

L’esponente (spesso 2) fa parte della formulazione comunemente utilizzata; se la vostra implementazione utilizza un esponente diverso, dovrete usare lo stesso.

  1. Aggiornare il Kama in modo ricorsivo
    Infine, il Kama viene aggiornato come:
  • Kama[t] = Kama[t−1] + SC[t] × (P[t] − Kama[t−1])

Questa forma rende il Kama “attratto verso” il prezzo corrente di un importo che dipende da SC[t]. Un valore SC più alto implica un aggiustamento più rapido; un valore SC più basso implica un aggiustamento più lento.

  1. Inizializzazione
    Il Kama richiede un valore iniziale iniziale Kama[0] (o Kama[N−1], a seconda dell’indicizzazione). Molte implementazioni inizializzano il Kama con il prezzo al primo punto disponibile o con una media mobile semplice. Se volete verificare indipendentemente il calcolo, confermate la regola esatta di inizializzazione dalla definizione dell’indicatore che state testando.

Evidenza o esempio (con assunzioni esplicite)

Di seguito è riportata una breve dimostrazione numerica con assunzioni dichiarate. Questo non è dato di mercato reale; mostra la struttura di calcolo che potete ripetere con la vostra serie.

Assunzioni per l’esempio:

  • Il prezzo di input P è il prezzo di chiusura.
  • Lunghezza del lookback N = 3.
  • fastPeriod = 2, slowPeriod = 30, quindi:
    • SC_fast = 2/(2+1) = 0,666666…
    • SC_slow = 2/(30+1) = 0,064516…
  • L’esponente in SC[t] è 2.
  • Il valore precedente del Kama è Kama[t−1] = 100.

Supponiamo che al tempo t si abbia:

  • P[t−2] = 99
  • P[t−1] = 101
  • P[t] = 100

Passo A: netChange

  • netChange = |P[t] − P[t−N]| = |100 − 99| = 1

Passo B: sumAbsMoves
Per N = 3, serve |P[t]−P[t−1]| + |P[t−1]−P[t−2]| + |P[t−2]−P[t−3]|. Ma la nostra mini-serie mostra solo due prezzi precedenti. Per mantenere la dimostrazione coerente, espandiamo la finestra includendo P[t−3].

Sia P[t−3] = 98.
Ora calcoliamo:

  • |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
  • sumAbsMoves = 1 + 2 + 1 = 4

Passo C: ER

  • ER = netChange / sumAbsMoves = 1 / 4 = 0,25

Passo D: costante di smoothing dinamica

  • SC[t] = (ER × (SC_fast − SC_slow) + SC_slow)^2
    Prima calcoliamo (SC_fast − SC_slow):
  • 0,666666… − 0,064516… = 0,602150…
    Poi il termine lineare:
  • ER × (SC_fast − SC_slow) + SC_slow
    = 0,25 × 0,602150… + 0,064516…
    = 0,150537… + 0,064516…
    = 0,215053…
    Eleviamo al quadrato:
  • SC[t] ≈ (0,215053…)^2 ≈ 0,0463

Passo E: aggiornamento del Kama

  • Kama[t] = Kama[t−1] + SC[t] × (P[t] − Kama[t−1])
    = 100 + 0,0463 × (100 − 100)
    = 100

In questo esempio costruito, il prezzo corrente è uguale al Kama precedente, quindi l’aggiornamento è zero. Se P[t] fosse diverso da Kama[t−1], si vedrebbe un aggiustamento non nullo scalato da SC[t].

Perché questo illustra l’idea: se ER aumenta (il prezzo diventa più diretto in N periodi), SC[t] tende a spostarsi verso SC_fast, rendendo il Kama più reattivo. Se ER diminuisce (movimento più irregolare), SC[t] tende verso SC_slow, rendendo il Kama più liscio.

Limitazioni e rischi

  1. Sbaglio nei parametri
    Il Kama dipende da N, dalle impostazioni veloce/lenta e dall’esponente e dalle regole di gestione dei casi limite (come la divisione per zero). Se copiate la formula ma non la mappatura esatta dei parametri dal vostro indicatore, otterrete valori diversi.

  2. Definizione del prezzo di input
    Piattaforme diverse definiscono il “prezzo” in modo diverso. Se una utilizza il prezzo di chiusura e un’altra un prezzo derivato (ad esempio, media di high/low/close), l’intera serie di output cambia.

Il trading su forex e CFD comporta rischi significativi. Le informazioni di FoxiForex sono educative e non costituiscono consulenza finanziaria personale. I contenuti sponsorizzati sono chiaramente indicati.