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, , 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 otteniamo una variabile aleatoria 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
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
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
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
Posta un commento