Indicatori: Moving Mean, Running Mean e Running Variance
Moving Mean
Con il termine “moving mean” (media mobile) si indica uno strumento costruito per l’analisi delle serie storiche. In ambito economico le medie mobili vengono utilizzate nell’analisi tecnica, in cui si studia l’andamento dei prezzi dei mercati finanziari e consentono infatti ai trader di capire qual è l’andamento dei prezzi nel corso del tempo. Questi indicatori smorzano l’andamento delle osservazioni e rappresentano un andamento “di fondo”, privo di rumore. Esistono molti tipi di medie mobili, ognuna con i suoi pro/contro. Qui facciamo l’esempio della media mobile semplice, che può essere calcolata con la seguente formula:
Con questa formula possiamo calcolare una media mobile a K termini partendo dall’istante t.
Running Mean e Running Variance
Stiamo parlando di due indicatori che consentono di aggiornare media e varianza di una lista di osservazioni man mano che nuovi valori si aggiungono ai dati considerati, pensiamo ad esempio alla ricezione di prezzi in tempo reale. I due indicatori possono essere calcolati con le seguenti formule ricorsive
Vediamone la sintassi in VB.net in cui si calcola running mean e running variance di una serie storica di prezzi:
Mostriamo un codice VB.NET che implementa il calcolo della running mean e della running variance.
RUNNING MEAN & RUNNING VARIANCE- PREZZO BID
ListaRunningMean = New List(Of SingolaOss)
ListaRunningVariance = New List(Of SingolaOss)
Dim RunningMean As Decimal = 0
Dim RunningMean_PassoPrecedente As Decimal = 0
Dim RunningVariance As Decimal = 0
Dim RunningVariance_PassoPrecedente As Decimal = 0
Dim Passo As Integer = 0
For Each oss As SingolaOss In ListaBID
Passo += 1
RunningMean = RunningMean_PassoPrecedente + (oss.Prezzo - RunningMean_PassoPrecedente) / Passo
RunningVariance = RunningVariance_PassoPrecedente + (oss.Prezzo - RunningMean_PassoPrecedente) * (oss.Prezzo - RunningMean)
Dim OsservazioneMedia As New SingolaOss
With OsservazioneMedia
.Istante = oss.Istante
.Prezzo = RunningMean
End With
Me.RichTextBox1.AppendText("prices:" & oss.Prezzo & "mean:" & Math.Round(RunningMean, 2) & "var:" & Math.Round(RunningVariance, 6) & Environment.NewLine)
Dim OsservazioneVarianza As New SingolaOss
With OsservazioneVarianza
.Istante = oss.Istante
.Prezzo = RunningVariance
End With
ListaRunningMean.Add(OsservazioneMedia)
ListaRunningVariance.Add(OsservazioneVarianza)
RunningMean_PassoPrecedente = RunningMean
RunningVariance_PassoPrecedente = RunningVariance
Next
Commenti
Posta un commento