Valentina Vaccaro

Data mining – Algoritmi e programmazione

Archivi per il mese di “dicembre, 2011”

Esonero

Analisi e previsione dei punti di svolta

Introduzione

 L’analisi presentata ha come obiettivo quello di evidenziare in che modo studiare l’andamento nel tempo dei prezzi nei mercati finanziari e come prevederne le tendenze future. Per mantenere una posizione d’investimento fino a quando non vi sia prova che la tendenza si sia invertita e quindi si vada incontro a delle perdite, è necessario riuscire a identificare un cambiamento di tendenza rispetto a uno stadio iniziale. Ovviamente nella realtà è impensabile acquistare esattamente nei punti di minimo e vendere esattamente nei punti di massimo poiché è difficile riuscire a prevedere con precisione i punti di svolta della funzione. Questi ultimi possono essere conosciuti solo a posteriori, pertanto l’analisi in questione si prefigge d’identificare il trend della funzione e segnalare tempestivamente quando è prossima una sua inversione oppure quando si è appena verificata. Nel primo capitolo si fa una breve panoramica sui mercati finanziari prestando attenzione alla definizione di prezzi ask e bid. Nel secondo capitolo si definisce in linea teorica il significato di analisi tecnica dei punti di svolta, soffermandosi prima sulla definizione matematica e statistica di essi e in seguito entrando nel merito dell’analisi tecnica facendo riferimento ai concetti di serie storica, medie mobili e teoria del Random Walk. Infine nel terzo capitolo l’attenzione è incentrata sull’applicazione pratica, cioè sull’implementazione di un metodo che riesce a prevedere o a segnalare tempestivamente quando la funzione è caratterizzata improvvise variazioni (picchi).

CAPITOLO I

PREZZO DENARO E PREZZO LETTERA

1.  Introduzione ai mercati finanziari

Il termine ‘mercati finanziari’ può definire, nella sua accezione più generale, l’insieme delle strutture (giuridiche, operative, tecniche, fisiche) attraverso cui avviene lo scambio delle attività finanziarie. Un mercato finanziario è un luogo ideale nel quale sono scambiati strumenti finanziari di varia natura a medio o lungo termine.

Con riferimento alla natura degli strumenti finanziari si distingue solitamente tra mercato creditizio, mercato mobiliare e mercato assicurativo. Con riferimento alla durata degli stessi si distingue tra mercato monetario e mercato dei capitali. Infine, con riferimento al momento di emissione degli strumenti finanziari, si distingue tra mercato primario e mercato secondario. Altre distinzioni possono essere fatte fra mercati cash e mercati derivati, fra mercato ad asta e market maker, fra mercato fisico e mercato telematico, fra mercato pubblico e mercato privato, fra mercato regolamentato e mercato over the counter.

 2.   Definizione di prezzo Ask e Bid

I Market Makers sono degli intermediari finanziari che ricoprono un ruolo importante nei mercati. Loro attività è di sfruttare lo spread fra il prezzo cui sono disposti a comprare e quello cui sono disposti a vendere. Nel gergo dei mercati finanziari questi due tipi di prezzo appena descritti, sono indicati come Prezzo Denaro (Bid Price) e Prezzo Lettera (Ask Price).

Il Prezzo Denaro o anche Bid Price è quel termine attraverso il quale è indicata la miglior proposta in acquisto (espressa in denaro) che è inserita nel “book” del mercato telematico, in altre parole il prezzo più alto che un Market Maker è disposto a pagare per un determinato stock di titoli.

 Il Prezzo Lettera o anche Ask Price invece, è quel prezzo che indica la miglior proposta in vendita (espressa in denaro) inserita nel “book” del mercato telematico. Detto in altri termini il Prezzo Lettera si riferisce al prezzo più basso al quale un operatore in vendita oppure un Market Maker s’impegna a cedere un determinato stock di titoli.

Quando l’investitore vuole acquistare dei titoli, deve andare a vedere il miglior prezzo di vendita (Ask Price) che il mercato gli offre, mentre quando vuole vendere dei titoli, deve vedere qual è il miglior prezzo di acquisto (Bid Price) che il mercato definisce in quel momento. Il prezzo di acquisto e il prezzo di vendita sono una parte fondamentale del sistema del mercato, perché dicono nei dettagli l’importo esatto al quale è possibile acquistare o vendere in qualsiasi momento. Il prezzo corrente o meglio il prezzo che si forma sul mercato dalla contrattazione dei titoli spesso non è quello che andremo effettivamente a pagare o a incassare. In ultima analisi il Prezzo Lettera è di solito superiore al Prezzo Denaro e questo si può comprendere considerando che il Market Maker guadagna sulla differenza tra i due prezzi che egli stesso applica. Differenza che come già accennato, è definita più propriamente “spread”.

CAPITOLO II

ANALISI TECNICA DEI PUNTI DI SVOLTA

1.  Definizione di analisi tecnica

In economia l’analisi tecnica (AT) è lo studio dell’andamento dei prezzi dei mercati finanziari nel tempo, allo scopo di prevederne le tendenze future, mediante principalmente metodi grafici e statistici. In senso lato è quella teoria di analisi (ovvero insieme di principi e strumenti) secondo cui è possibile prevedere l’andamento futuro del prezzo di un bene quotato (reale o finanziario), studiando la sua storia. È utilizzata, assieme all’analisi fondamentale, per la definizione delle decisioni di trading.

2.   Serie storiche

E’ stato accennato che l’andamento futuro dei prezzi è previsto mediante lo studio della sua storia, ma qual è lo strumento in grado di fare questo tipo di analisi? E’ essenziale a tale proposito introdurre il concetto di serie storica.

Per serie storica s’intende un insieme di dati ordinati in progressione cronologica. Supponiamo di avere una serie storica di osservazioni di prezzi dal tempo iniziale fino a quello attuale e di voler prevedere l’andamento del fenomeno al fine di individuare eventuali picchi.

Una generica serie storica può essere scomposta in quattro parti:

Trend, componente di lungo periodo, che determina la tendenza di fondo del fenomeno considerato;

Ciclo, alternanza della serie nel tempo intorno al trend;

Componente Stagionale, andamento regolare che si ripete costantemente nel tempo;

Componente casuale o aleatoria, cioè componente non spiegabile. Nei modelli di serie storiche non vi è mai una relazione perfetta tra la variabile sotto osservazione e le diverse componenti, la componente accidentale tiene conto di questo e del comportamento non perfettamente prevedibile degli agenti economici.

Ci sono diversi tipi di scomposizione delle serie storie, per citarne alcuni:

1. Forma additiva: Yt = Tt + Ct + St + At

2. Forma moltiplicativa: Yt = Tt * Ct * St * At

Alcuni metodi per ottenere queste scomposizioni sono:

– metodo della regressione;

– metodo delle medie mobili;

– metodi combinatori.

Nell’interpretazione di molti fenomeni economici è necessario isolare la componente stagionale perché ne disturba l’interpretazione e anche perché essa non è collegata ai punti di svolta. Le medie mobili sono uno strumento utile a tal fine.

Supponiamo di avere una serie di osservazioni a periodi costanti, osservo un valore al tempo t, ma quale sarà il prossimo?

Per fare delle previsioni è necessario che dietro la loro manifestazione ci sia un legame tra le osservazioni. Infatti, per fare inferenza sull’andamento futuro del fenomeno s’ipotizza che il passato e il presente contengano informazioni rilevanti per prevedere l’evoluzione futura del fenomeno. Se le osservazioni sono indipendenti le une dalle altre, i valori estratti sono aleatori e quindi non è possibile prevedere esattamente i valori futuri. 

 3.  Teoria del Random Walk

La teoria del Random Walk ipotizza che il variare dei prezzi sia del tutto indipendente e che la storia non costituisca un indicatore affidabile per i prezzi futuri nel lungo periodo.

L’idea di base del processo è che il valore di una serie domani sia pari al valore di oggi più un elemento imprevedibile.

La teoria random walk sostiene, quindi, che i mercati funzionano “come se” fossero governati da una legge casuale, poiché le informazioni, che fanno variare i mercati medesimi, impattano in maniera non prevedibile e quindi casuale.

Questo modello implica che l’evoluzione del prezzo di uno strumento finanziario è essenzialmente casuale e la migliore previsione del prezzo dell’istante successivo non può che essere fatta sulla base del prezzo precedente e delle informazioni disponibili al mercato. Pertanto i movimenti dei prezzi e dei rendimenti non seguono alcun trend o regolarità, quindi i movimenti passati non possono essere usati per previsioni future.

 4.  Medie Mobili

Alla luce delle considerazioni fatte è emerso che per fare delle previsioni è necessario che ci sia un legame tra le osservazioni, ma al tempo stesso secondo la teoria del Random Walk le variazioni dei prezzi sono tra loro del tutto indipendenti. Per questo motivo sono stati studiati e creati numerosi strumenti per aiutare l’analista nell’identificare i trend e i primi segnali d’indebolimento per decidere tempestivamente quando comprare o vendere un titolo. A tale proposito citiamo le medie mobili.

La media mobile studia il trend della funzione analizzata. E’ possibile tarare la Media Mobile in funzione delle analisi che l’operatore deve realizzare. L’esatta taratura della Media Mobile è funzione del profilo temporale dell’operazione che si deve svolgere. Infatti, un numero di rilevazioni contenute fornirà una Media Mobile molto reattiva alle variazioni della serie in esame mentre viceversa, una Media Mobile tarata su un numero elevato di sessioni è più indicata a rilevare i movimenti di medio – lungo periodo.

La “taratura” ottimale è anche funzione della volatilità del mercato preso in esame, ad esempio per serie storiche molto volatile sarà opportuno utilizzare Medie Mobili con un numero di sessioni più elevate così da limitare i falsi segnali generati. Per “ottimizzazione” s’intende quindi la ricerca del timing più indicato che consenta di evitare i falsi segnali e di avere indicazioni eccessivamente in ritardo rispetto ai movimenti del mercato. E’ possibile procedere verificando quale tipo di Media Mobile abbia dato i migliori risultati su quel particolare mercato nel passato. Anche se occorre considerare che i movimenti futuri saranno diversi da quelli già verificatisi e quindi il risultato potrà essere dissimile da quello sperato. E’ conveniente testare quindi la Media Mobile sia in periodi di bassa volatilità che in momenti di alta volatilità, sia in periodi di mercato direzionale che in fasi di congestione, sia durante trend rialzisti sia ribassisti.

La media mobile può essere di tre tipi: semplice, ponderata ed esponenziale.

  • Per ottenere la Media Mobile semplice si procede facendo la media aritmetica di “n” sessioni. A ogni nuova sessione che si forma sul grafico, si aggiunge alla media aritmetica il nuovo valore e toglie il primo della serie.
  • In una Media Mobile ponderata invece, nel caso per esempio di una media mobile a dieci giorni, il decimo valore è moltiplicato per dieci, il 9° per nove e così via e il totale diviso per la somma dei multipli.
  • Nella Media Mobile esponenziale invece i coefficienti hanno un valore progressivo esponenziale.

Nella pratica le medie mobili forniscono un segnale operativo quando sono intersecate dal grafico del prezzo. Normalmente, infatti, la media mobile sta sotto il livello dei prezzi in un mercato rialzista e sopra il livello dei prezzi in un mercato ribassista. Quando il prezzo “rompe” la media mobile dal basso verso l’alto, si genera un segnale di acquisto e quando la rompe dall’alto verso il basso, si genera un segnale di vendita.

Un altro metodo operativo consiste nell’utilizzo di due medie mobili, una di breve e una di medio – lungo periodo. Quando le due medie s’incrociano, si genera un segnale di acquisto/vendita (fig.1.)

 5.  Definizione di punto di svolta

Lo scopo dell’analisi è prevedere i picchi, cioè i punti di massimo e di minimo della distribuzione per decidere quando è necessario “vendere” un titolo e quando “comprarlo”.

Prima di passare alla descrizione del metodo realizzato è necessario fornire una più precisa definizione di cosa siano i punti di svolta di una funzione, in questo caso specifico la funzione osservata è quella che si riferisce ai prezzi ask e Bid.

 5.1.    Definizione matematica

Data una generica distribuzione di osservazioni, per picco o punto di svolta s’intende il valore più alto o più basso della funzione in un dato intervallo.

Distinguiamo tra due categorie di picchi, che indichiamo come picco sell e picco buy.

  •   Un picco sell è un punto dove la funzione smette di salire e comincia a scendere. Matematicamente dovremo dire che quel punto è il più alto, cioè il suo valore è superiore a quello degli altri punti circostanti. Quindi la funzione avrà un picco positivo nel punto x se f(x) >= f(y) per ogni punto appartenente ad un intorno completo di x.
  •    Un picco Buy è un punto dove la funzione smette di scendere e comincia a salire. Matematicamente dovremo dire che quel punto è il più basso, cioè il suo valore è inferiore a quello degli altri punti circostanti.
    La funzione avrà un punto di minimo nel punto x se f(x) <= f(y) per ogni punto appartenente ad un intorno completo di x.

 5.2.      Definizione Statistica

Analizzando una generica distribuzione di osservazioni nel tempo, oltre a rintracciare nei dati i comportamenti generali, è tuttavia interessante individuare i valori anomali della stessa, cioè le eccezioni a queste tendenze (nel linguaggio statistico valori anomali o outlier). In alcuni casi, trovare quale variabile/periodo non rispetti lo schema di comportamento generale può essere più interessante che trovare il modello di comportamento stesso.

 Si possono distinguere tre categorie di valori anomali:

  • Outlier additivo, cioè brusca variazione nella serie in un dato istante, dopo il quale però la serie stessa ritorna immediatamente o gradualmente all’andamento precedente;
  • Outlier di livello, cioè brusca variazione che permane nel tempo, provocando un cambiamento del livello o dello stesso andamento della serie.
  • Outlier temporaneo, cioè brusca variazione in un dato istante temporale, che è riassorbito gradualmente nel tempo.

CAPITOLIO III

RILEVAZIONE DEI PUNTI DI SVOLTA

 1.  Obiettivo

Il problema che si pone è di generare un algoritmo che prenda in input una serie storica dei prezzi, che legga i dati, che li visualizzi, e che determini i punti di svolta della curva creando metodi e indicatori adeguati.

 In altre parole, l’obiettivo è generare un algoritmo che sia in grado di individuare il punto in cui la distribuzione presenta un picco sell oppure un picco Buy per stabilire quando è il momento di vendere o comprare un titolo. Ovviamente la previsione non è possibile in quando, come vedremo, la serie è generata casualmente e pertanto non essendovi un processo sistematico alla base di essa, è impossibile calcolare con esattezza il valore assunto dal prezzo al tempo t+1. L’applicazione si propone, quindi, di fornire un’indicazione tempestiva del cambiamento di tendenza, ed eventuali picchi ad essa connessi, al fine di limitare le perdite e massimizzare i guadagni dell’investitore.

 2.  Implementazione del metodo

 Esistono numerosi strumenti per aiutare l’analista a decidere tempestivamente quando comprare o vendere un titolo. A tale proposito ne è stato ideato e implementato uno che a fini descrittivi può essere scomposto in quattro passi fondamentali.           

1.   Il primo passo consiste nel generare due serie random e rappresentarle graficamente nella PictureBox. La prima è la serie dei prezzi ask (miglior prezzo di vendita) e la seconda è la serie dei prezzi bid (miglior prezzo di acquisto). In realtà l’algoritmo è applicato esclusivamente sulla serie delle osservazioni bid.

 2.   Il secondo passo consiste nell’implementare l’algoritmo per l’individuazione dei picchi.  Il procedimento è il seguente:

  • Si calcolano le medie mobili della funzione dei prezzi. Lo scopo è di tracciare il trend della funzione. È importante prestare attenzione a non calcolare una media mobile troppo “morbida” perché ci sarebbe il rischio di non riuscire a cogliere gli improvvisi sbalzi della funzione dei prezzi;
  • Si fissa una soglia, cioè una certa percentuale della media in modo da individuare una banda di riferimento rappresentata dall’intervallo

] (1 – soglia) * media, (1 + soglia) * media [

  • Ad ogni passo si confronta il valore casuale del prezzo con la banda che è stata fissata, quest’operazione comporta la distinzione di tre casi:

                                     I.        Il prezzo è compreso nella banda e pertanto non è indicato come picco;

                                    II.        Il prezzo è maggiore dell’estremo superiore della banda e l’osservazione i-sima è maggiore dell’osservazione i-sima+1. Il punto in questione è un picco sell;

                                   III.     Il prezzo è minore dell’estremo inferiore della banda e l’osservazione i-sima è minore dell’osservazione i-sima+1. Il punto in questione è un picco Buy;

3.   Il terzo passo consiste nella rappresentazione grafica. Si sceglie di rappresentare la serie casuale dei prezzi bid, la media mobile, la banda di riferimento, i picchi sell (rossi), i picchi buy (verdi);

 

4. Il quarto passo consiste nell’implementare un indice di performance.

2.1.     Indice di performance

E’ indispensabile inserire nell’algoritmo un indice che misuri la qualità della previsione e che verifichi l’efficienza dell’algoritmo. A tal proposito è stato realizzato un indicatore di performance che segnala se l’algoritmo riesce a individuare in modo corretto un picco.

L’indicatore distingue due risultati parziali:

–      Esito positivo;

–      Esito negativo.

Per l’implementazione è necessario fissare:

–      Una banda di riferimento

Banda= 1/100 * prezzo

–      Un prezzo di partenza

          Prezzo= 1000

–      La minima distanza tra due prezzi

Tick=1

Nel caso in cui è stato trovato un picco buy, l’indice segnala un esito positivo se la funzione dei prezzi interseca prima la soglia superiore della banda, in caso contrario segnala un esito negativo;

Nel caso in cui è stato trovato un picco sell, l’indice segnala un esito positivo se la funzione dei prezzi interseca prima la soglia inferiore della banda, in caso contrario segnala un esito negativo;

І= ∑ Gi – Li/ N° Totale di picchi

Dove:

–      i numero di picchi;

–      G numero di esiti positivi;

–      L numero di esiti negativi.

Download Applicazione e Tesina

http://www.megaupload.com/?d=9RX8Z0H1

Applicazione del 15-11-2011

Generazione di una Serie di Prezzi  Random

Problema: generare una sequenza di numeri casuali per i prezzi bid e ask, che verranno rappresentate graficamente.

1) Si istanzia la variabile random

Public rnd As New Random

2) Nell’evento click del bottone si scrive il seguente codice

‘Creazione delle liste dei prezzi BID ed ASK

        Dim lista_prezzi_rnd_ASK As New List(Of Oss_Prezzi_rnd)

        Dim lista_prezzi_rnd_BID As New List(Of Oss_Prezzi_rnd)

         Me.lista_prezzi_nt_rnd_BID = New List(Of PointF)

        Me.lista_prezzi_nt_rnd_ASK = New List(Of PointF)

 

        ‘Dichiarazione dei riferimenti temporali

        Dim istante_iniziale As Date = New Date(Now.Year, Now.Month, Now.Day, 0, 0, 0, 0)

        Dim istante_prec As Date = istante_iniziale

        Dim istante_corrente As Date

 

        ‘Dichiarazione dei prezzi

     Dim prezzo_iniziale As Decimal = 10000

        Dim prezzo_prec As Decimal = prezzo_iniziale

        Dim prezzo_corrente As Decimal

 

        ‘Generazione dei numeri casuali

       Dim tick As Double = 0.5

 

        For i As Integer = 1 To 1000

 

            If Me.rnd.NextDouble < 0.5 Then

                prezzo_corrente = prezzo_prec – tick

            Else

                prezzo_corrente = prezzo_prec + tick

            End If

 

            istante_corrente = istante_prec.AddSeconds(Me.rnd.Next(5, 61))

 

            ‘Creazione delle liste di osservazioni casuali

            Dim oss_BID As New Oss_Prezzi_rnd

 With oss_BID

                .prezzo = prezzo_corrente

                .istante = istante_corrente

            End With
            lista_prezzi_rnd_BID.Add(oss_BID)

 

            Dim oss_ASK As New Oss_Prezzi_rnd

            With oss_ASK

            .prezzo = prezzo_corrente + tick

            .istante = istante_corrente

            End With
            lista_prezzi_rnd_ASK.Add(oss_ASK)

 

  ‘Determinazione dei minimi e massimi

            Dim x_BID As Single = CSng((oss_BID.istante – istante_iniziale).TotalMilliseconds)

            Dim y_BID As Single = oss_BID.prezzo

 

            Dim x_ASK As Single = CSng((oss_ASK.istante – istante_iniziale).TotalMilliseconds)

            Dim y_ASK As Single = oss_ASK.prezzo

 

            If MinX > x_BID Then MinX = x_BID

            If MaxX < x_BID Then MaxX = x_BID

            If MinY > y_BID Then MinY = y_BID

            If MaxY < y_ASK Then MaxY = y_ASK

 

            ‘Creazione delle liste di punti

            lista_prezzi_nt_rnd_BID.Add(New PointF(x_BID, y_BID))

            lista_prezzi_nt_rnd_ASK.Add(New PointF(x_ASK, y_ASK))

             istante_prec = istante_corrente

            prezzo_prec = prezzo_corrente

         Next

 

        ‘Costruzione delle liste dei punti trasformati

        Dim lista_prezzi_t_rnd_BID As List(Of Point) = Me.funzione_lista_prezzi_t(Me.MinX, Me.MaxX, Me.MinY, Me.MaxY, Me.lista_prezzi_nt_rnd_BID)

       Dim lista_prezzi_t_rnd_ASK As List(Of Point) = Me.funzione_lista_prezzi_t(Me.MinX, Me.MaxX, Me.MinY, Me.MaxY, Me.lista_prezzi_nt_rnd_ASK)

 

        ‘Disegno delle liste dei punti trasformati

        Me.g.FillRectangle(Brushes.White, New Rectangle(Point.Empty, New Size(Me.b.Width, Me.b.Height)))

        Me.g.DrawLines(Pens.Blue, lista_prezzi_t_rnd_BID.ToArray)

     Me.g.DrawLines(Pens.Red, lista_prezzi_t_rnd_ASK.ToArray)

 

        ‘rappresentazione del bitmap nella picture box

        Me.PictureBox1.Image = Me.b

Download Applicazione:

http://www.megaupload.com/?d=INNYOTG0

Navigazione articolo