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

Post popolari in questo blog

Il moto browniano geometrico

Resampling dei dati

Generazioni di variabili aleatorie