Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
C#.
Grazie al primo è stata possibile la creazione del modello di classificazione; esso in-
fatti, grazie ad un’interfaccia grafica, senza bisogno di scrivere del codice, è in grado
di sviluppare vari processi tipici del machine learning e del text mining. In esso
è stato possibile aggiungere dei plugin utili all’analisi, nello specifico ci si è serviti
1
dell’ulteriore libreria Weka .
Il secondo ha permesso invece il download, la fase di pre-processing dei dati da dare
poi in input al classificatore, e l’elaborazione finale di quest’ultimi.
Per quanto riguarda l’Hardware, tutti gli esperimenti sono stati effettuati su un
computer di processore Intel i5-4210U e RAM 8 GB 2,7 GHz, sistema operativo
Windows 10 Home.
1 Weka: Waikato Environment for Knowledge Analysis; estensione di Rapidminer contenente
algoritmi e schemi aggiuntivi del machine learning appartenenti all’omonimo Software.
26
4 – Il sistema di trading utilizzato 2
Figura 4.1: Rappresentazione del processo KDD.
Acquisizione e trasformazione dei dati
L’intero processo ha inizio con il download dei dati utili mediante API di Yahoo!
dopo aver definito la data di inizio e di fine della fascia temporale consi-
Finance;
derata e gli attributi relativi ai prezzi delle azioni, si avrà un dataset in cui ad una
data specifica vengono associati i prezzi di apertura, chiusura, minimo e massimo
di giornata delle azioni appartenenti al mercato di riferimento. In caso alcune in-
formazioni non fossero disponibili vengono assegnati dei valori null gestite poi nella
fase successiva.
Poiché, una volta generato tale file, questo resta invariato per tutte le simulazioni
relative alla stessa fascia temporale e allo stesso mercato, il download viene effet-
tuato una volta sola, permettendo così di accelerare gli step successivi riutilizzando
le informazioni presenti in memoria.
Tutte le variabili caratterizzanti gli esperimenti vengono settate all’inizio in un file
2 Immagine tratta da: What is data mining? URL: https://busy.org/@machinelearning/what-
is-data-mining. 27
4 – Il sistema di trading utilizzato
di configurazione chiamato nel quale vengono definiti anche i path dei file
config.txt,
e dei processi coinvolti nel sistema.
In particolare, fissato un giorno in cui si voglia predire il portafoglio di azioni da com-
prare/vendere, l’intero processo andrà a coinvolgere tre file; qualora si voglia lanciare
l’intero processo ciclicamente per più giorni consecutivi, questi saranno aggiornati
ad ogni iterazione:
• file contenente i prezzi di tutti gli asset riferiti ad una determinata
prezzi.csv:
finestra di training;
• file contenente la lista degli asset su cui agirà il classificatore per poter
list.csv:
generare la predizione;
• file contenente il portafoglio delle azioni selezionate come le
portfolio.csv:
migliori da commerciare nel giorno considerato.
La seconda fase riguarda sia il dei dati, in cui questi vengono puliti
pre-processing
da eventuali valori nulli e outliers che possono invalidare l’intero processo, che la
selezione e la trasformazione degli stessi.
Scelto il giorno di predizione, avendo deciso di utilizzare una finestra di training lun-
ga 10 giorni (variabile verranno selezionati tutti i prezzi di chiusura
windowTrain),
relativi ai dieci giorni precedenti il questi andranno a comporre il
giornoDaPredire:
file Il file conterrà invece la lista delle azioni che non presentano
prezzi.csv. list.csv
valori nulli o outliers nel dataset originale; questo può essere modificato prima o
dopo il processo di classificazione, nel caso in cui venga applicato o meno lo step di
(descritto in modo più approfondito nei capitoli 5 e 6), avente
pattern recognition
l’obiettivo di selezionare tra tutte le azioni, quelle in possesso di determinate carat-
teristiche.
Durante questa cernita di titoli, a seconda del tipo di filtraggio effettuato, si potran-
no o selezionare degli asset da non mantenere nell’elenco generale, ed in quel caso
andranno a riempire una lista chiamata per poi essere sottratte
stocksToRemove,
dall’insieme originario, oppure verranno scelti quelli da preservare ed inseriti nella
lista che rimpiazzerà di fatto il file
stocksToMantain, list.csv.
Nel dettaglio tale selezione viene effettuata per una azione alla volta, esaminando
in relazione ad essa, uno per uno tutti i 61 pattern dell’analisi tecnica considerati.
Tale operazione è resa possibile grazie alla libreria open source TA-Lib ([5]), i cui
metodi finalizzati allo riconoscimento di un pattern specifico, ricevono in ingresso
i prezzi di apertura, chiusura, minimo e massimo relativi all’intervallo di tempo
considerato (i 10 gg delle finestra di training), e restituiscono in output un vettore
costituito dai valori -100, 0 o 100, in corrispondenza del giorno conclusivo di
taOut,
un pattern, slittato di un valore pari alla variabile in particolare -100
outBeginIdx:
nel caso in cui la figura in questione sia di tipo (al ribasso), 100 nel caso
bearish
opposto bullish. 28
4 – Il sistema di trading utilizzato
Applicazione del processo di classificazione
Dopo la fase di pre-processing effettuata tramite il tool di C#, avendo generato cor-
rettamente i file di input del classificatore, si può eseguire il processo di Rapidminer
via linea di comanda ed ottenere così la predizione.
Il processo di Rapidminer, prima ancora di applicare il classificatore scelto, si pre-
occupa, attraverso una fase di sui dati, di creare per ciascuna azione un
windowing
ulteriore attributo pari al prezzo di chiusura del giorno precedente rispetto a quello
che si considera in ciascuna riga del dataset, relativa ad uno dei 10 giorni di trai-
ning.
Per poter dar vita al processo predittivo è necessario creareper ciascuno di essi,
il ovvero l’etichetta di classe che deve essere predetta. In questo caso il
label,
sistema si occupa di generare dei segnali, ovvero di accettare o meno un asset al-
l’interno del portafoglio se il prezzo di chiusura subirà una variazione maggiore
dell’1% (in caso di strategia long), o inferiore al -1% (se short); ecco perché l’e-
tichetta di classe, dopo aver discretizzato la variazione percentuale del prezzo in
−1%], −
]-∞, ] 1%, +1%[, [1%, +∞[, assumerà rispettivamente i valori "-", "=" e "+".
Scelto il classificatore (per ciascuno di essi è necessario un differente processo di
Rapidminer), questo riceverà in ingresso l’input modificato come sopra; potrà così
generare il modello ed effettuare una predizione per ciascuna delle azioni presente
in list.csv.
I parametri di ciascun classificatore sono quelli assegnati di default dal Software (ve-
di Tabelle 4.1). In dettaglio ne sono stati presi in considerazione cinque differenti:
Naive Bayes, Decision Tree, SVM, Neural Network e AODE.
La predizione viene effettuata applicando il modello al giorno di predizione che non è
stato etichettato alla fase precedente. A seconda dei tre valori di confidenza, relativi
ciascuno ad un valore di etichetta differente (-, = e +), e a seconda della strategia di
investimento scelta (long o short), verranno prese in considerazione nel portafoglio
finale, solo le azioni avente come massimo valore di confidenza quello relativo alla
classe "+" se la posizione è di tipo long, o "-", se di tipo short.
Elaborazione dei risultati
Dopo aver effettuato la predizione per tutti gli asset, il portafoglio generato per un
determinato giorno di predizione, andrà ad aggiornare il file fino a
portafoglio.csv,
completamento del ciclo su tutti i giorni della finestra scelta.
Il tool in C#, potrà così calcolare la variazione percentuale del prezzo di chiusura per
ciascuna delle azioni in portafoglio, ed valutare nel calcolo l’inserimento dello stop
loss nel caso in cui tale opzione fosse stata abilitata all’inizio nel file di configurazione.
29
4 – Il sistema di trading utilizzato SVM
Parametro Valore
Neural Network svm type C-SVC
Parametro Valore kernel type Poly
degree 3
training cicle 500 gamma 0.0
learning rate 0.3 coef 0.0
momentum 0.2 −5
· C 0.0
error epsilon 1.0 10 epsilon 0.001
(a) calculate confidence disabilitato
(b)
Decision Tree
Parametro Valore AODE
criterion gain_ratio Parametro Valore
minimal size for split 4 frequency limit 1.0
minimal leaf size 2 m-estimate disabilitato
minimal gain 0.1 weight for m-estimate 1.0
maximal depth 20 (d)
confidence 0.25
(c) Naive Bayes
Parametro Valore
laplace correction abilitato
(e)
Tabella 4.1: Configurazioni di tutti i classificatori.
30
Capitolo 5
Strategie di integrazione di
tecniche di pattern recognition per
l’identificazione di figure di analisi
tecnica
Nel mondo del trading azionario l’analisi tecnica, grazie ai suoi innumerevoli punti di
forza, è oggi uno degli strumenti più diffusi; non solo è di facile applicazione necessi-
tando di pochi dati (reperibili con facilità) per essere messa in atto, ma soprattutto
può essere utilizzata su più archi temporali e adattata a diversi strumenti finanziari
(obbligazioni, azioni etc.).
Per tale motivo, in questo lavoro di tesi, si è deciso di affiancare al processo di
classificazione originale un sistema di applicato ai segnali stori-
pattern recognition
ci, che identificasse e analizzasse i pattern grafici (rialzisti o ribassisti) dell’analisi
tecnica; in particolare si prediligono i Quest’ultimi, essendo
candlestick giapponesi.
tra tutti i più intuivi, permettono di comprendere nell’immediato quale tendenza
stanno assumendo i prezzi, e sono in grado di anticipare i cambiamenti del trend,
così da favorire i trader nell’individuare il momento più adatto per entrare o uscire
dal mercato.
La realizzazione di tale sistema di riconoscimento si attua mediante un filtro il quale
si occupa di selezionare l’insieme di azioni su cui applicare il metodo di predizione,
seguendo diversi criteri elencati di seguito (per maggiori dettagli vedi Capitolo 4).
Su una delle caratteristiche principali delle configurazioni, ovvero che esse predicano
un andamento del mercato al rialzo o al ribasso, e sulla possibilità di scegliere tra
le due posizioni di investimento (short e long), si fondano le due tipologie di filtro
considerate: 31
5 – Strategie di integrazione di tecniche di pattern recognition per l’identificazione di figure di analisi tecnica
• In tal
Pruning di azioni associate ad un pattern in controtendenza.
caso, vi è l&