[FONT=Trebuchet MS, Arial][SIZE=+0]MEDIE MOBILI ADATTIVE
======================
Scopo di queste note e' di comprendere il funzionamento ed il possibile
uso delle classiche medie mobili esponenziali, arrivando alla costruzione
di una media mobile adattiva, ovvero che muta il suo parametro di
'smoothing' al mutare delle condizioni della serie storica su cui e'
applicata. Le note termineranno con la scrittura di una userfunction, in
EasyLanguage per Tradestation. Le formule permetteranno certamente a tutti
voi di costruire l'indicatore per altri software.
---------------------------
NOTA INIZIALE
---------------------------
Nel testo sono usate alcune convenzioni riguardanti le formule.
Si partira' in genere da una serie storica:
C(t) dove t=1,2...,X
per *C* si intende il prezzo del titolo al tempo *t*. Nel caso di C(t-1)
si intendera' il prezzo di ieri, e cosi' via.
Indicheremo poi:
F(t+1)
la previsione di C(t+1), ovvero la previsone che l'algoritmo fara',
analizzando la serie originale fino a C(t), del futuro valore
(sconosciuto) C(t+1).
Quando serviranno, per non creare confusione, le normali parentesi tonde
saranno sostituite con parentesi quadre
-------------------------
=======================
L'uso delle medie mobili esponenziali (EMA, exponential smoothing average)
per analisi e previsioni in campo economico inizia negli anni 50, e da
allora e' diventato tranquillamente popolare. Esse sono usate in molti
modi e, cosa che puo' sembrare strana, pure per previsioni a breve e medio
termine. Tenete conto del fatto che le classiche serie storiche economiche
su cui si producono gli econometristi, tipo PIL, Inflazione,
Disoccupazione o Produzione Industriale, hanno generalmente un contenuto
deterministico, in termini di trend o componenti cicliche, decisamente
superiore a quello delle serie storiche finanziarie classiche.
Tipicamente possiamo considerare la media mobile esponenziale come:
EMA(t)=C(t)*ALPHA+[1-ALPHA]*EMA(t-1) (1)
dove ALPHA e' la costante di smoothing, ovviamente < 1.
In prima approssimazione e' possibile determinare ALPHA sulla scorta del
piu' comune periodo (chiamiamolo N) di una media mobile semplice con:
ALPHA=2/[1+N]
Da notare che lo 'smooting', ovvero la riduzione del noise presente nella
serie storica, ha come prezzo un ritardo della EMA rispetto ai dati
originari, ritardo quantificabile in:
Ritardo (in periodi) =(N-1)/2
Semplici passaggi matematici permettono di dimostrare che nella EMA e'
contenuta l'informazione derivante da tutti i valori passati, in modo
decrescente (esponenzialmente). Questo a sostanziale differenza della MM
semplice, dove sono contenuti solo gli ultimi N termini.
Che una normale Media Mobile Esponenziale possa essere usata per
previsioni puo' stupire:
F(t+1)=C(t)*ALPHA+[1-ALPHA]*F(t) (2)
Abbiamo scritto la (1) utilizzando pero' la previsione passata per
giungere a quella attuale. La (2) puo' essere riscritta:
F(t+1)=F(t)+ALPHA*[C(t)-F(t)]
dove:
e(t)=C(t)-F(t)
rappresenta l'errore della previsione precedente. In pratica la previsione
per il prossimo valore e' uguale a quella precedente aggiustata di un
termine che dipende dall'errore previsionale passato, aggiustamento che
dipende pure da ALPHA.
Per cui l'errore tra il valore previsto ed il valore attuale e' la base
per correggere la previsione per il prossimo valore. Questa tipo di
controllo e' largamente usato in forme piu' sofisticate di metodi
matematici previsionali.
----
Utilizzare una MM adattiva significa, in prima battuta, che la media
stessa adatta il suo parametro di smoothing a qualche particolare fenomeno
presente nel mercato. Famosa e' la AMA (adaptive moving average) di
Kaufman: in questo caso il parametro ALPHA muta al variare della
volatilita' passata del mercato, rendendo la AMA piu' veloce in caso di
alta volatilita' e viceversa.
Nel nostro caso, affronteremo il problema da un altro punto di vista. In
genere, lo scopo di una MM e' di diminuire, in qualche misura, il 'noise'
presente nella serie storica, pagando pero', come prezzo, un ritardo che
la MM avra' nel confronto con la serie strica originaria.
Sulla scorta della descrizione data nella precedente email, si puo'
pensare di diminuire questo ritardo attraverso la tecnica di
aggiustamento, fornita dal precedente errore previsionale.
Partendo dalla precedente (2):
F(t+1)=C(t)*ALPHA+[1-ALPHA]*F(t)
l'errore previsionale precedente sara':
e(t)=C(t)-F(t)
calcoliamo ora:
M(t)=BETA*|e(t)|+(1-BETA]*M(t-1)
E(t)=BETA*e(t)+[1-BETA]*E(t-1)
ed infine:
ALPHA(t)=|E(t)/M(t)|
giungendo cosi' alla:
F(t+1)=C(t)*ALPHA(t)+[1-ALPHA(t)]*F/t)
. il simbolo | | significa valore assoluto
. il termine BETA e' generalmente posto a 0.05 - 0.2
Siamo cosi' giunti ad un parametro ALPHA adattivo, che dipende dalle
fluttuazioni dei dati e dal'errore precedente. Il valore di ALPHA
aumentera' (rendendo la MM piu' veloce) quando l'errore aumenta, e
viceversa. Cio' permettera' di ottenere un metodo previsionale che e'
responsivo ai cambiamenti nei pattern dei dati.
-----------------
Questa e' la userfunction per Tradestation
{-------------------------------------------------
NAME : xAMA
TYPE : userfunction
AUTHOR : L. Vercesi, Jan 96
[email protected]
DESCRIPTION : adaptive moving average
alpha contolled to reduce lag
}
INPUTS : Price(NumericSeries),Beta(Numeric);
VARS : EE(0), MM(0), ET(0), ALPHA(0);
MM=Beta*AbsValue(ET)+(1-Beta)*MM[1];
EE=Beta*ET+(1-Beta)*EE[1];
If MM=0 Then MM=0.001;
ALPHA=AbsValue(EE/MM);
xAMA=ALPHA*Price+(1-ALPHA)*xAMA[1];
ET=Price-xAMA[1];
{------------------------------------------------ }
E per finire, la userfunction della piu' famosa AMA di P. Kaufman, dicussa
nel 1995 in un vecchio numero di Technical Analysis Of Stocks And
Commodities.
{ -----------------------------------------------
type : userfunction
name : AMA (Adaptive Moving Average)
author: P. Kaufman }
Inputs: Perod(Numeric);
Vars: Noise(0),Signal(0),Diff(0),efRatio(0),Smooth(1),Fastest(.6667),Slowest(.0645),AdaptMA(0);
Diff=AbsValue(C-C[1]);
If CurrentBar<=Period Then AdaptMA=C;
If CurrentBar>Period Then Begin
Signal=AbsValue(C-C[Period]);
Noise=Summation(Diff,Period);
efRatio=Signal/Noise;
Smooth=Power(efRatio*(Fastest-Slowest)+Slowest,2);
AdaptMA=AdaptMA[1]+Smooth*(C-AdaptMA[1]);
End;
AMA=AdaptMA:
{---------------------------------------------------------
APPLICAZIONI.
Gli usi che si possono fare di una media mobile adattiva sono molteplici,
la cosa piu' semplice e' usarla come proxi dei prezzi stessi, ottenendo
cosi' una serie storica meno rumorosa su cui lavorare. Sono possibili
anche applicazioni meno ovvie. Ad esempio, utilizzando come Beta=0.2 (un
valore che produrra' una media decisamente veloce) e creando tre
indicatori, relativamente alla serie dei prezzi Close High e Low, e'
possibile utilizzare i valori delle AMA del giorno precedente come base
per un trading di tipo 'Pivot Point'.
[/SIZE][/FONT]