Generazione di processi aleatori




Una serie storica viene definita, in statistica, come un insieme di variabili aleatorie ordinate rispetto ad un parametro, il tempo. Lo studio delle serie storiche consente l’interpretazione della dinamica del fenomeno d’interesse tramite l’analisi delle sue componenti di trend, di ciclicità e di stagionalità, oltre alla componente accidentale.
Le serie storiche si possono classificare in due gruppi principali: quelle di tipo “deterministico”, ovvero quelle in cui i valori futuri del fenomeno d’interesse possono essere determinati esattamente sulla base dei valori precedenti; e quelle di tipo “stocastico”, ovvero quelle in cui i valori futuri sono calcolabili solo parzialmente sulla base di quelli precedenti.

Per poter simulare in maniera corretta l'andamento di una serie di questo tipo, si sono sfruttate le caratteristiche di alcuni modelli aleatori basati su altrettanti processi stocastici

Un processo stocastico si basa su una variabile casuale che prende valori in spazi più generali dei numeri reali (come ad esempio,  \R^n , o spazi funzionali, o successioni di numeri reali). I processi aleatori sono un'estensione del concetto di variabile aleatoria, nel momento in cui viene preso in considerazione anche il parametro tempo. Da un punto di vista pratico, un processo stocastico è una forma di rappresentazione di una grandezza che varia nel tempo in modo casuale e con certe caratteristiche. Facendo delle prove (o osservazioni) ripetute dello stesso processo, si ottengono diversi andamenti nel tempo (realizzazioni del processo); osservando le diverse realizzazioni ad un istante t otteniamo una variabile aleatoria X(t) che comprende i diversi valori che il processo può assumere in quell'istante.  

Nel corso del tempo sono stati prodotti molti modelli che rispondo all’esigenza di simulare l’andamento di una serie storica dei prezzi di un bene, il primo che viene trattato  è il modello aleatorio detto “Random Walk”.

RANDOM WALK

La random walk o passeggiata aleatoria costituisce il modello base per la rappresentazione dell'andamento dei prezzi. L’idea di base della Random Walk è che il valore del prezzo di domani sia pari a quello di oggi più un valore aleatorio. La prima caratteristica di questo modello è che ogni osservazione è indipendente dall’altra, la teoria della Random Walk è quella che i prezzi si muovano di un passo verso una direzione con probabilità , o nella direzione opposta con probabilità , sotto le ipotesi che ogni passo sia di lunghezza costante e indipendente dal precedente.


Formalizzando questa idea: , con i.i.d , e con varianza del processo pari a . Questo valore della varianza mostra immediatamente un’importante caratteristica di questo modello aleatorio: la non stazionarietà, ovvero la varianza aumenta, senza un limite superiore, nel corso del tempo, e così cambia la distribuzione del processo stesso. Per costruzione, nella Random Walk, la miglior previsione del valore successivo è il valore corrente.



Esistono numerosi modi per generare una sequenza di numeri pseudo-casuali che dia origine ad una Random Walk, il più famoso e maggiormente utilizzato è il metodo di Box-Muller che produce coppie di numeri indipendenti e normalmente distribuiti con media nulla e varianza unitaria.




MOTO BROWNIANO

Si tratta del principale processo stocastico utilizzato in finanza per le sue innumerevoli applicazioni.
Matematicamente il moto browniano standard è definito come un processo stocastico
– che parte nell’origine
– i cui incrementi sono indipendenti
– i cui incrementi sono distribuiti come una Normale di media nulla e varianza pari all’ampiezza dell’incremento
– che ha traiettorie continue e non differenziabili.
Nel 1900 il matematico francesce Louis Bachelier dimostrò come fosse possibile rappresentare l’andamento dei mercati finanziari attraverso tale processo stocastico.
Il modello di Black-Scholes-Merton sfrutta l’ipotesi che i prezzi di un titolo azionario seguono un moto browniano geometrico, ovvero seguono la dinamica

 Immagine 

per definire una formula chiusa per il prezzo delle opzioni, assumendo però l’indipendenza delle variazioni (la storia passata del processo è ininfluente per le previsioni del prezzo futuro) e la costanza delle variazioni dei prezzi.

L’equazione nota con il nome di moto browniano geometrico rappresenta il modello più utilizzato per l’analisi del comportamento dei prezzi dei titoli azionari. Dall’ipotesi che i prezzi siano regolati da un moto browniano geometrico discende una proprietà per la quale il logaritmo dei prezzi si distribuisce in modo normale e quindi che i prezzi delle azioni seguono una distribuzione di probabilità di tipo log-normale. In questo caso ogni variazione di prezzo è indipendente dalle variazioni di prezzo del passato e la volatilità delle variazioni dei prezzi è costante. In molte indagini simulazione geometrico browniano movimento viene utilizzato per calcolare le probabilità di perdita dopo un certo tempo T.

 



Segue la sintassi in Visual Studio per la generazione di una passeggiata aleatoria bidimensionale.
Per quanto riguarda le applicazioni finanziarie sarà sufficiente una random walk unidimensionale per la simulazione della serie dei prezzi su un determinato grafico.

Public Class Form1
    Public r As New Random  'generazione variabile casuale'
    Public b As Bitmap
    Public g As Graphics
    Public WithEvents t As New Timer
    Public PosizioneCorrenteParticella As Point
    Public PosizioneFuturaParticella As Point
    Public Passo As Integer = 5
    Public NumeroPassi As Long = 0
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       
        'generazione oggetti per la grafica'
        b = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
        g = Graphics.FromImage(b)
        'avvio timer per animazione'
        t.Interval = 50
        t.Start()
        'Inizializzazione particella
        PosizioneCorrenteParticella = New Point(b.Width / 2, b.Height / 2)
        Me.Label1.Text = NumeroPassi
    End Sub
    Private Sub t_Tick(sender As Object, e As EventArgs) Handles t.Tick
        Me.CalcoloNuovaPosizione()
        Me.Ridisegno()
        'aggiornamento posizione'
        PosizioneCorrenteParticella = PosizioneFuturaParticella
        NumeroPassi += 1
        Me.Label1.Text = NumeroPassi
    End Sub
    Sub CalcoloNuovaPosizione()
        'una di 4 direzioni a caso'
        Dim NumeroCasualeUniforme As Double = r.NextDouble
        Select Case NumeroCasualeUniforme
            Case Is < 0.25 'sinistra'
                PosizioneFuturaParticella = New Point(PosizioneCorrenteParticella.X - Passo, PosizioneCorrenteParticella.Y)
            Case Is < 0.5  'destra'
                PosizioneFuturaParticella = New Point(PosizioneCorrenteParticella.X + Passo, PosizioneCorrenteParticella.Y)
            Case Is < 0.75 'alto'
                PosizioneFuturaParticella = New Point(PosizioneCorrenteParticella.X, PosizioneCorrenteParticella.Y - Passo)
            Case Is < 1 'basso'
                PosizioneFuturaParticella = New Point(PosizioneCorrenteParticella.X, PosizioneCorrenteParticella.Y + Passo)
        End Select
        'barriere riflettenti'
        If PosizioneFuturaParticella.X > b.Width Then PosizioneFuturaParticella.X -= Passo
        If PosizioneFuturaParticella.X < 0 Then PosizioneFuturaParticella.X += Passo
        If PosizioneFuturaParticella.Y > b.Height Then PosizioneFuturaParticella.Y -= Passo
        If PosizioneFuturaParticella.Y < 0 Then PosizioneFuturaParticella.Y += Passo
    End Sub
    Sub Ridisegno()
        Dim penna As New Pen(Brushes.Green, 2)
        g.DrawLine(penna, PosizioneCorrenteParticella, PosizioneFuturaParticella)
        Me.PictureBox1.Image = b
    End Sub

End Class


 




Commenti

Post popolari in questo blog

Il moto browniano geometrico

Resampling dei dati

Generazioni di variabili aleatorie