• Non ci sono risultati.

Tutte le analisi all’interno di questa tesi verranno effettuate con il supporto del software statistico R, un software facilmente ottenibile e utilizzato per effettuare calcoli statistici e grafici.

3.1 Gli algoritmi genetici in R

All’interno di questo software esistono numerosi pacchetti che implementato i vari algo- ritmi. Per quel che riguarda gli Algoritmi Genetici, R offre diverse possibilità. Tra i pac- chetti più utilizzati troviamo il GA Package, MetaheuristicOpt Package e rgenoud Pac-

kage.

Dopo aver svolto numerose analisi, si è preferito utilizzare il pacchetto MetaheuristicOpt, ed in particolar modo la funzione GA, per l’ottimizzazione dei parametri dei vari indicatori tecnici. I motivi principali di questa scelta sono il fatto che tale funzione garantisce una maggiore libertà nella determinazione dei parametri caratteristici dell’AG. Inoltre permette di ottenere risultati più soddisfacenti in termini di fitness score e, al tempo stesso, genera la soluzione ottima in tempi computazionali molto più contenuti rispetto ad altre funzioni di- sponibili in R.

La funzione metaOpt - GA permette al ricercatore di determinare il numero massimo di iterazioni, la dimensione della popolazione, la probabilità di crossover, la probabilità di mutazione e i limiti, superiori e inferiori, delle variabili da ottimizzare.

Al fine di individuare la soluzione ottima, la funzione metaOpt – GA segue i seguenti passi: 1. Inizializzazione: inizializza la prima popolazione casualmente, individuando e sal-

vando i cromosomi con la fitness migliore (maggiore);

2. Selezione: individua i set di genitori a cui sarà applicato l’operatore crossover. La probabilità può essere definita dall’utente. In questo caso, come si vedrà nei capitoli

71

seguenti, la probabilità di crossover è stata posta pari a 0.8. La funzione GA utilizza il metodo Roulette Wheel Selection, già descritto in precedenza;

3. Crossover: esecuzione del crossover tra i genitori selezionati nello step precedente; 4. Mutazione: la probabilità di subire la mutazione è la stessa per tutti gli individui della popolazione. Quando avviene la mutazione, viene generato un valore casuale che andrà a sostituire il gene precedente;

5. Dopo aver calcolato nuovamente la funzione di fitness di tutti gli individui della popolazione, i cromosomi con il fitness score più elevato verranno utilizzati per la generazione successiva;

6. Se il criterio di arresto, in questo caso il numero massimo di iterazioni, viene sod- disfatto, l’algoritmo si arresta fornendo la soluzione ottima, altrimenti verranno ri- petute le fasi da 2 a 5 fino a quando il criterio d’arresto non verrà rispettato.

3.2 La Particle Swarm Optimization in R

Anche per la Particle Swarm Optimization, come pure per gli Algoritmi Genetici, in R esistono diversi pacchetti che permettono l’ottimizzazione di funzioni attraverso l’utilizzo di tale algoritmo. Si possono facilmente scaricare pso Package, MetaheuristicOpt Package oppure ppso, quest’ultimo disponibile su R-forge.

Anche in questo caso si è preferito utilizzare una funzione già implementata in R, piuttosto che creare un algoritmo ex-novo, per ridurre i tempi computazionali. In particolar modo, i valori ottimi dei parametri degli indicatori tecnici del Trading System oggetto di studio, sono stati individuati utilizzando la funzione metaOpt - PSO del pacchetto Metaheuristi-

cOpt, per gli stessi motivi, precedentemente elencati, che hanno portato all’utilizzo della

funzione metaOpt - GA.

Entrando nel dettaglio, la funzione metaOpt – PSO permette al ricercatore di determinare il numero di particelle, il numero massimo di iterazioni, l’inertia weight, la velocità mas- sima raggiungibile dalle particelle, oltre alla capacità cognitiva individuale e globale. Al fine di individuare la soluzione ottima, la funzione metaOpt – PSO segue i seguenti passi:

72

1. Inizializzazione: dopo aver casualmente inizializzato le particelle inziali e la velo- cità corrispondente, l’algoritmo procede con il calcolo dell’idoneità delle particelle e individua la miglior posizione globale, Global Best, e la miglior posizione locale,

Local Best;

2. Aggiornamento della velocità: ogni particella si sposta all’interno dello spazio di ricerca con una velocità specifica che dipende dal Global Best e dal Local Best di ogni iterazione. Va ricordato che il GB è la miglior soluzione trovata fino a quel momento, mentre il LB è la miglior soluzione trovata nell’iterazione corrente; 3. Aggiornamento della posizione: il calcolo della nuova velocità permette di indivi-

duare quale sia la nuova posizione delle particelle;

4. Aggiornamento del Global Best e del Local Best: nel caso in cui le particelle ab- biano un fitness score migliore nella nuova posizione, si dovrà procedere all’aggior- namento del GB e del LB;

5. Se il criterio di arresto, in questo caso il numero massimo di iterazioni, viene sod- disfatto, l’algoritmo si arresta fornendo la soluzione ottima, altrimenti verranno ri- petute le fasi da 2 a 4 fino a quando il criterio d’arresto non verrà rispettato.

3.3 L’algoritmo Fireworks in R

A differenza di quanto detto per gli Algoritmi Genetici e per la Particle Swarm Optimiza- tion, in R non esiste alcun pacchetto che permetta l’utilizzo del Fireworks Algorithm. Per questo motivo è stato necessario sviluppare una nuova funzione, che prevede le seguenti fasi:

1. Inizializzazione: generazione casuale dei primi n fireworks;

2. Calcolo della fitness function per gli n fireworks al fine di individuare l’ampiezza e il numero di scintille generate da ogni firework. In questo caso, per favorire la ri- cerca della soluzione ottima, sono stati impostati dei limiti sia nel numero di scin- tille sia nell’ampiezza come previsto dall’Enhanced Fireworks Algorithm (EFWA); 3. Explosion Operator: generazione delle scintille per ogni firework. Per la dimensione

z, individuata casualmente, la scintilla avrà un’ampiezza pari al prodotto tra l’am-

73

Verrà effettuata anche una verifica al fine di garantire che i valori non siano al di fuori dello spazio di ricerca;

4. Gaussian Mutation Operator: tale operatore viene applicato casualmente 𝑚̂ volte e porta alla generazione di 𝑚̂ nuove scintille che avranno un’ampiezza pari a:

𝑝𝑜𝑠𝑖𝑧𝑖𝑜𝑛𝑒 𝑎𝑡𝑡𝑢𝑎𝑙𝑒 + (𝑝𝑜𝑠𝑖𝑧𝑖𝑜𝑛𝑒 𝑚𝑖𝑔𝑙𝑖𝑜𝑟 𝐹𝑊 − 𝑝𝑜𝑠𝑖𝑧𝑖𝑜𝑛𝑒 𝑎𝑡𝑡𝑢𝑎𝑙𝑒) ∗ 𝐺 dove G è un coefficiente estratto da una variabile Gaussiana (1,1). Anche dopo que- ste esplosioni si procede alla verifica che le scintille non siano uscite dallo spazio di ricerca;

5. Selezione: dopo aver individuato il firework con il fitness score più elevato, gli altri

n-1 fireworks vengono selezionati in base alla distanza misurata in termini di fitness.

La popolazione iniziale dell’iterazione successiva sarà quindi composta dal fuoco d’artificio con il fitness score più elevato mentre, gli altri n-1 fuochi, saranno le

scintille caratterizzate dalla distanza maggiore per ampliare lo spazio di ricerca;

6. Se il criterio di arresto, in questo caso il numero massimo di iterazioni, viene sod- disfatto, l’algoritmo si arresta fornendo la soluzione ottima, altrimenti verranno ri- petute le fasi da 2 a 5 fino a quando il criterio d’arresto non verrà rispettato.

74

Documenti correlati