Simulazione ad agenti di un mercato di titoli con l'uso di ... ad agenti di un mercato di...

46
SIMULAZIONE AD AGENTI DI UN MERCATO DI TITOLI CON L’USO DI ALGORITMI GENETICI Giulio Virginio Clemente, Maggio 2016

Transcript of Simulazione ad agenti di un mercato di titoli con l'uso di ... ad agenti di un mercato di...

SIMULAZIONE AD AGENTIDI UN MERCATO DI

TITOLI CON L’USO DI ALGORITMIGENETICI

Giulio Virginio Clemente,Maggio 2016

IndiceIntroduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Costruire un semplice mercato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1 NetLogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Le regole del gioco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Il prezzo del titolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Le classi di agenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 I random agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.6 I trend agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.7 I behavioural agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.8 Gli intelligent agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.9 Algoritmi genetici e BehaviourSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Le simulazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.1 Solo random agents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 Random e trend agents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3 Random, trend e behavioural agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.4 Random, trend, behavioural ed intelligent agents . . . . . . . . . . . . . . . . . . . . . . . 36

3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

1 Con il nome simulazione si intende, in questo contesto, una serie di tecniche che implementano diversi usidel calcolatore e differenti strategie.

1

INTRODUZIONELa scienza delle complessità ci insegna che la complessità

che vediamo nel mondo è il risultato di unasemplicità nascosta.cit. Chris Langton

L’economia, come tutte le altre discipline scientifiche, per sviluppare ed analizzare i suoimodelli, ha bisogno del confronto con i dati. Simulare1 un modello della realtà checonsente di valutare e prevedere lo svolgersi di una serie di eventi, susseguentiall’impostazione di certe condizioni da parte di un utente, era impensabile fino ad alcunedecine di anni fa.La storia della simulazione in ambito economico è caratteristica. Come evidenzia MagdaFontana nel suo articolo [1], parallelamente allo sviluppo dei calcolatori si è sviluppatol’uso della simulazione nella scienza economica. Inizialmente la simulazione aveva unmero ruolo strumentale, ovvero di risoluzione o approssimazione di modelli già esistenti.Il diffondersi dell’interpretazione del sistema economico come sistema complesso haportato l’uso della simulazione anche come strumento di modellizzazione e non solo diverifica. È interessante leggere cosa dice riguardo i sistemi complessi uno dei maggioriesperti a riguardo, John Holland, ed è impossibile non notare l’analogia col sistemaeconomico : “Questi sistemi consistono in una rete di sottosistemi che si influenzano l’unl’altro continuamente. Questi sistemi sono formati da numerosi agenti che agisconoinsieme. Possono essere cellule nervose nel cervello oppure individui nell’economia.Ogni elemento influisce sugli altri e subisce l’influsso degli altri.Questi agenti interattivi non sono controllati centralmente; i comportamenti emergonodalle interazioni stesse. Non v’è un elemento che controlla tutti gli altri. Ilcomportamento coerente del sistema deriva dalla competizione e collaborazione fra glielementi. Un fenomeno fondamentale di adattamento di questi sistemi è che essi siriorganizzano continuamente, mentre imparano.”Nell’area dei sistemi complessi molte ricerche recenti (vedi Hiroshi Takahashi and TakaoTerano [2]) mostrano come fenomeni complessi emergono dall’interazione attraverso

2 L’algoritmo genetico è un algoritmo che imita il processo di selezione naturale per mettere in atto una ricercaeuristica di soluzione di problemi.

2

micro regole e macro comportamenti. Ad esempio nel contesto dei mercati finanziari, lemicro regole corrispondono al comportamento degli investitori, mentre i macrocomportamenti corrispondono alle fluttuazioni del prezzo dei titoli. L’influenza delcomportamento degli investitori sul prezzo non è necessariamente derivato con metodianalitici così come i macro comportamenti emergono nel mercato reale.Nella computer science, l’approccio Agent Based è proposto come un ottimo metodo peranalizzare le relazioni tra le micro regole ed i macro comportamenti. L’agent basedsimulation prova a spiegare i macro comportamenti dalle micro regole. Come risultatodell’applicazione di questo metodo molti macro comportamenti del sistema emergonodalle micro regole locali. Un mercato artificiale è una buona applicazione dell’approccioagent based.Sulla falsariga di quanto detto, in questo breve elaborato si è voluto simulare un mercatodi titoli, analizzando come il prezzo delle azioni viene influenzato dal comportamentodegli investitori, i quali agiranno secondo delle strategie opportune. In una prima parte,attraverso delle simulazioni mirate, si è analizzata in dettaglio la struttura del sistemacostruito. Nella parte successiva, in un mercato siffatto verrà inserita una classe di agenti“intelligente”, la quale evolve la propria strategia attraverso un algoritmo genetico2. Saràinteressante notare come quest’ultimi riescano ad individuare le regolarità nel mercato(qualora presenti) ed agire di conseguenza.

3

1 COSTRUIRE UN SEMPLICE MERCATOLa simulazione ad agenti indaga la realtà semplicemente ricreandola in un laboratoriovirtuale. Creare sistemi artificiali, studiare le regolarità emergenti dall’operare di talisistemi e validarne la bontà attraverso i dati reali: è questo un approccio evidentementediverso dalla modellizzazione matematica classica, un approccio empirista.In questo primo capitolo verranno introdotti gli strumenti usati per la simulazione everranno spiegate le regole con le quali il sistema è stato costruito.

1.1 NetLogoL’intero apparato sperimentale è stato costruito con l’ausilio del software NetLogo nellaversione 5.2.1.NetLogo è un linguaggio di programmazione agent-based oltre che un IDE (Integrateddevelopment environment) , il quale fornisce un ambiente completo per lo sviluppo,dall’implementazione del modello simulativo alla creazione dell’interfaccia grafica disupporto alla simulazione. Il suo creatore è Uri Wilensky ed è stato sviluppato al Centerfor Connected Learning della Northwestern University.Il software è scaricabile in maniera totalmente gratuita dal seguente linkhttps://ccl.northwestern.edu/netlogo/download.shtml.La capacità principale dell’ambiente NetLogo è il permetterci di esplorare ed osservare ilcomportamento di un sistema formato da un insieme di elementi costruito ad hoc,permettendoci di mettere in risalto comportamenti anomali e non prevedibili.L’utilizzo di questo ambiente di programmazione è molto intuitivo ed i relativi esempipresenti nel software permettono un apprendimento rapido, infatti, NetLogo è statosviluppato per un audience molto vasto, da scienziati privi di background sullaprogrammazione ad esperti programmatori.

1.2 Le regole del giocoRegole ben definite sono richieste per formare una struttura, non si può costruire unmercato senza delle regole, senza delle leggi che proteggono la libertà ed i beni,ugualmente applicate a tutti gli agenti. Un mercato esiste attraverso una fine struttura cheporta a far emergere un sistema complesso. Gli agenti scambiano, competono, cooperano,combattono per la sopravvivenza nei modi definiti dalle regole del gioco.Prima di definire lo scheletro del programma si faccia attenzione al modo in cui il tempoviene fatto scorrere. Una caratteristica di NetLogo come altri linguaggi di simulazione ad

4

agenti è la capacità di far scorrere il tempo all’interno del sistema senza bisogno diinserire flussi di controllo. Attraverso l’interfaccia e con un opportuna costruzione delcodice si può controllare lo scorrere del tempo con estrema facilità.Continuiamo ora a definire lo scheletro del programma, partendo dall’osservare come siforma il prezzo del titolo.

1.3 Il prezzo del titoloIn questo modello vi è un numero di agenti definito i quali propongono un prezzo per iltitolo e scelgono se comprare o vendere secondo delle strategie che chiarirò in avanti. Ilprezzo proposto dall’agente è uguale a quello corrente maggiorato di un valore casualescelta in un intervallo definito.Ogni proposta di acquisto o vendita da parte degli agenti viene registrata in un vettore chead ogni ciclo può essere preservato e con esso le proposte degli agenti oppure eliminatocon l’ausilio di un pulsante presente sull’interfaccia del programma (fig 1).Il prezzo del titolo è sostanzialmente il più alto prezzo disposto a pagare o il più bassoprezzo a cui sono disposti a vendere gli agenti. Quando la domanda e l’offerta per ilprezzo del titolo si incontrano avviene lo scambio ed i vettori nei quali erano salvati ivalori relativi all’agente che acquista e quello che vende si aggiornano eliminando le duevariabili. Il prezzo corrente del titolo così come la lunghezza dei vettori dei prezzo didomanda (logB) ed offerta (logS) sono rappresentate graficamente sull’interfaccia delprogramma (fig 1). È importante notare che ogni agente può scambiare solo un titolo pervolta.

5

Figura 1: Una parte dell’interfaccia del programma.

1.4 Le classi di agentiIn questo paragrafo vengono definite le diverse tipologie d’agenti presenti nel modello,per ognuna delle quali verrà definito il perché della strategia adottata.Prima però vorrei soffermarmi e porre l’accento sulla presenza delle classi d’agenti.Questa tipologia di metodo usato per modellizzare dei sistemi composti da un numerogrande di elementi venne introdotta per la prima volta con il protocollo SWARM [3]. Conquesta tipologia di struttura è possibile creare classi di agenti ed impartirgli dei comandida eseguire con un ordine stabilito, un grande passo avanti nella modellizzazione adagenti.Sostanzialmente nel seguente lavoro sono presenti quattro tipologie di agenti :- Random agents;- Trend agents;- Behavioural agents;- Intelligent agents;La loro presenza o meno all’interno del mercato è definibile attraverso l’interfaccia, sullaquale è possibile osservare anche una rappresentazione degli agenti in un mondo creato

6

ad hoc. In questo mondo è possibile osservare lo stato di ciascun agente, se venditore,compratore o indifferente al mercato, osservandone il colore assunto. Gli agenti sarannoverdi quando comprano titoli, rossi quando li vendono e grigi quando non compionoazioni durante quel ciclo, si veda la figura 2.

Figura 2: Sull’interfaccia è possibile selezionare in maniera interattiva il numero totaledi agenti, da qui è possibile individuare, sul totale, il numero di agenti componenti lealtri classi. Il tutto è fatto con l’ausilio di slider e finestre di input. Si noti la presenza delmonitor sul quale viene rappresentato il mondo degli agenti e dove è possibile osservarnelo stato.

1.5 I random agentsI random agents rappresentano una parte fondamentale della simulazione, sono la classedi agenti che sarà mantenuta in numero maggiore rispetto a tutte le altre tipologie.All’interno del mondo sono rappresentati con lo shape “person”.I random agents con il loro ‘rumore’ permettono l’avanzamento del sistema e leoscillazioni del prezzo. In un mercato mosso dal caso definito dai random agentsandremo poi, ad inserire tutti gli altri agenti. Essi Comprano e vendono titoli in manieracasuale e con la stessa probabilità ed hanno una probabilità di rimanere indifferenti almercato che si può decidere sull’interfaccia attraverso un apposito slider (fig 3).Oltretutto per questo tipo di agenti è stato inserito un controllo per rendere più piccola la

7

probabilità che il prezzo del titolo scenda ad un valore troppo basso, il floorActing (vedifig 4). Di seguito il codice che definisce il modo in cui operano (fig 5)

Figura 3: Slider passLevel.

Figura 4: Il floorActing, qualora attivo, aumenta la probabilità che i random agentsacquistino titoli facendone salire di conseguenza il prezzo. Questo è un modo perimpedire che il prezzo del titolo scenda sotto la soglia minima delle 0 unità. Quando èattivo ed il prezzo del titolo è sotto le 500 unità, la probabilità di acquisto passa da 0.5 a0.8.

8

Figura 5 : Codice che definisce il modo in cui operano i random agents.

1.6 I trend agentsI trend agents sono una tipologia di agenti che agisce sulla base dell’andamento delmercato, in maniera diretta (con scelte non probabilistiche). Essi sono rappresentati conlo shape “computer server”. All’interno del codice è inserito un comando per lavalutazione del trend del mercato (fig 6). Il trend viene valutato sulla base di un semplicealgoritmo :Sull’interfaccia è presente uno slider (vedi fig 7) sul quale è possibile selezionare ilnumero di cicli utili alla valutazione del trend. Se il prezzo del titolo è in aumento per ilnumero di cicli selezionato il trend sarà ‘up’, mentre se il prezzo del titolo è in ribasso per

9

il numero di cicli selezionato il trend sarà ‘down’. Il numero di trend up e down osservatidurante lo svolgimento della simulazione è osservabile in appositi monitor posizionatisull’interfaccia.

Figura 6: Codice per la valutazione dei trend.

Figura 7: Parte dell’interfaccia raffigurante lo slider per la selezione del numero di cicliper la valutazione del trend ed i monitor raffiguranti il numero totale di trend.I trend agent una volta valutato il trend seguono uno schema molto semplice:- se il trend è ‘up’ allora comprano titoli;- se il trend è ‘down’ allora vendono titoli;

10

Il codice relativo all’azione dei trend agents è rappresentato in figura 8.

Figura 8: Codice relativo all’azione dei trend agents.

1.7 I behavioural agentsI behavioural agents sono rappresentati con lo shape “person business”. Essirappresentano una classe di agenti le cui azioni sono guidate dal bias dell’avversione allaperdita certa, o almeno si è implementata in maniera molto semplicistica questa tipologiadi reazione degl’individui.Il bias, in psicologia cognitiva, indica un giudizio non necessariamente corrispondenteall’evidenza, sviluppato sull’interpretazione dell’informazioni in possesso che porta ad unerrore di valutazione o mancanza di giudizio oggettivo.Il fenomeno dell’avversione alla perdita certa è un comportamento riscontrabile in unelevato numero di persone, le quali piuttosto che arrendersi ad una perdita subita, tentanodi recuperarla pur andando incontro ad un ulteriore rischio, quindi ad una più ingenteperdita di denaro.Supponiamo che un individuo abbia perso in un gioco rischioso 79 euro e sia costretto difronte ad un’alternativa:A - accettare la perdita e pagare 79 euro;B - affrontare una nuova scommessa più rischiosa per provare a recuperare quanto perso;Scegliendo l’alternativa B l’individuo ha l’80% di probabilità di dover sopportare unaperdita di 100 euro ( dunque maggiore rispetto a quella già nota) e solo il 20% di

11

probabilità di non dover soffrire alcuna perdita.Secondo diverse ricerche comportamentali [4] , una buona parte delle persone propendeper l’alternativa rischiosa sebbene la perdita attesa di 100 euro (con una probabilità diverificarsi molto alta) sia maggiore di quella certa.È stato dimostrato [5] come gli individui avversi alle perdite abbiano infatti unapercezione circa due volte più acuta della perdita rispetto al guadagno.I behavioural agents acquisteranno titoli, venderanno titoli o rimarranno indifferenti almercato proprio come fanno i random agents, ma qualora il trend del mercato fosse inribasso questi agiranno secondo il bias dell’avversione alla perdita certa acquistando ititoli con una probabilità circa due volte maggiore rispetto alla probabilità di vendere. Infigura 9 il codice relativo ai behavioural agents.

12

Figura 9: Codice che definisce le azioni dei behavioural agents. (pSellDown = 0.3).

13

1.8 Gli intelligent agentsGli intelligent agents sono una classe di agenti rappresentati con lo shape “personstudents”. Questa tipologia di agenti sceglie la sua strategia in base ad un algoritmogenetico. Per gli intelligent agents è possibile scegliere le probabilità con cui questiagiscono o meno attraverso degli slider presenti sull’interfaccia (figura 10), una voltascelte le probabilità di azione gli agenti si comporteranno in base al codice che nedefinisce le azioni (figura 11).La particolarità di questi agenti è la capacità di evolvere la loro strategia in base ad unalgoritmo genetico.Si è selezionata una variabile da massimizzare definita come sa somma dei beni degliagenti intelligenti (rappresentata su di un apposito monitor sull’interfaccia) e con l’ausiliodel software BehaviourSearch (versione 1.01) si è evoluta le probabilità d’azione diquesta tipologia d’agenti.

Figura 10: In figura sono rappresentati gli slider con le rispettive indicazioni ed ilmonitor rappresentate la somma dei beni degl’intelligent agents. La somma è calcolatasommando il cash in possesso degli agenti e il numero di titoli moltiplicati per il prezzocorrente del titolo.

14

Figura 11: In figura è rappresentato il codice che definisce la strategia degli intelligentagents.Propongo, ora, una breve digressione sull’uso di BehaviourSearch ed una brevedescrizione della struttura di un algoritmo genetico.

1.9 Algoritmi genetici e BehaviourSearchBehaviourSearch è uno strumento che ha il fine di aiutare con l’automatizzazione el’esplorazione di modelli agent based, attraverso l’uso di algoritmi genetici ed altretecniche euristiche. Si può scaricare in maniera del tutto gratuita dal seguente link(http://behaviorsearch.org/download.html).L’algoritmo genetico è un algoritmo euristico ispirato al principio di selezione naturale,l'aggettivo "genetico" deriva dal fatto che il modello evolutivo darwiniano trova

15

spiegazioni nella genetica. In sintesi si può dire che gli algoritmi genetici consistono inalgoritmi che permettono di valutare delle soluzioni di partenza e che ricombinandole edintroducendo elementi di disordine sono in grado di crearne di nuove nel tentativo diconvergere a soluzioni ottime.Nonostante questo utilizzo, data la natura intrinseca di un algoritmo genetico, non vi èmodo di sapere a priori se sarà effettivamente in grado di trovare una soluzioneaccettabile al problema considerato.Ora propongo una breve descrizione del funzionamento di un algoritmo genetico.Prima dell’effettiva spiegazione del funzionamento degli algoritmi genetici è necessariopremettere che questi ereditano e riadattano dalla biologia alcune terminologie:- Cromosoma : una delle soluzioni del problema considerato.- Popolazione: insieme delle soluzioni relative al problema considerato.- Gene: parte di un cromosoma. È una parte del vettore di bit o caratteri con cui vienecodificato il cromosoma.- Fitness : grado di valutazione associato ad una soluzione. La valutazione avviane inbase ad una funzione appositamente progettata detta funzione di fitness.- Crossover : generazione di una nuova soluzione mescolando delle soluzioni esistenti.Un tipico algoritmo genetico, nel corso della sua esecuzione, provvede a far evolveredelle soluzioni secondo il seguente schema di base :1 Generazione casuale della prima popolazione di soluzioni.2 Applicazione della funzione di fitness alle soluzioni appartenenti all’attualepopolazione.3 Selezione delle soluzioni considerate migliori in base al risultato della funzione difitness e della logica di selezione scelta.4 Procedimento di crossover per generare delle soluzioni ibride a partire dalle soluzioniscelte al punto 3.5 Creazione di una nuova popolazione a partire dalle soluzioni identificate al punto 4.6 Riesecuzione della procedura a partire dal punto 2 ed utilizzando la nuova popolazionecreata al punto 5.L’iterazione dei passi presentati permette l’evoluzione verso una soluzione ottimizzata delproblema considerato.Dopo questo breve excursus sul funzionamento degli algoritmi genetici, ritorniamo aBehaviourSearch. Esso si interfaccia perfettamente con NetLogo ed è questo il motivo delsuo utilizzo. Questo ci permette di selezionare dei parametri da variare al fine di ottenereuno specifico target comportamentale. L’esplorazione del modello si dividesostanzialmente in quattro parti:- Scelta di una grandezza che definisce il comportamento.- Scelta dei parametri da variare e del range in cui variarli.

16

- Scegliere un algoritmo di ricerca.- Esaminare il risultato, ovvero osservare quali parametri ottimizzano il comportamentodesiderato.In figura 12 si osserva l’interfaccia di BehaviourSearch.

Figura 12: Interfaccia di BehaviourSearch.Sull’interfaccia sono presenti diverse finestre nelle quali inserire o selezionare le variabilie le con le quali il software deve lavorare.In Parameter Specification vanno inseriti i parametri da variare per far emergere ilcomportamento desiderato. Il software carica in automatico tutti i parametri presentisull’interfaccia del programma NetLogo, a quel punto vanno eliminati i parametri chenon vogliono essere modificati.Nelle finestre setup e step vanno indicati i pulsanti utilizzati per il setup del programma diNetLogo e per l’avvio dell’esperimento in quest’ultimo.

17

In measure viene inserita la variabile che caratterizzerà il comportamento degli agenti.In steps limit inseriamo il numero massimo di passi per modello.In Search Method Configuration viene scelto il metodo usato da BehaviourSearch.In objective inseriamo lo scopo del programma, nel caso specifico la massimizzazionedella variabile. Quindi vi sono altri parametri specificabili per variare il modo di lavoraredel software. In questo esperimento è stata usata la configurazione definita nella figura 12.Per ulteriori approfondimenti sull’utilizzo di BehaviourSearch si veda il seguente link(http://terna.to.it/tesi/massobrio.pdf).

18

2 LE SIMULAZIONIIn questo capitolo verranno esposte le diverse tipologie di simulazioni effettuate con ilmodello costruito. Tutte le simulazioni sono state eseguite con un acer aspire E 15,modello E5-573G-79UB.Prima però osserviamo nella figura 13 alcuni elementi dell’interfaccia del programma chenon sono stati ancora definiti.

Figura 13: Figura rappresentate alcuni elementi dell’interfaccia.Con lo switch LimPriceAndStocks si è voluto porre un controllo sul numero di titoli e sulcash totale in circolo sul mercato ed in possesso di ciascun agente. Si è pensato che talecontrollo possa intervenire in una situazione di mercato reale, in cui a seguito diparticolari condizioni giuridiche, gli agenti non possano indebitarsi. I ritorni graficatisull’asse delle ordinate, come indicato in figura 13, sono calcolati ad ogni ciclo come ladifferenza tra il prezzo al ciclo corrente ed il prezzo al ciclo immediatamente precedente,diviso il prezzo al ciclo immediatamente precedente. Tutti gli agenti, all’inizio dellasimulazione, vengono dotati di 100 unità di stocks (titoli) e 10000 unità di cash e vieneimpostato, per il titolo, un prezzo di partenza di 1000 unità di cash.

19

2.1 Solo random agentsNumero totale di agenti = 100Numero di random agents = 100PassLevel = 0.3floorActing = onLimPriceAndStocks = on

Figura 14: In figura è rappresentato l’andamento del prezzo del titolo. Si noti, a parte ilpicco iniziale, che il prezzo del titolo oscilla in maniera del tutto casuale intorno alvalore iniziale del titolo. L’ampiezza delle oscillazioni è limitata dall’attività delLimPriceAndStocks; si vedrà come la disattivazione di quest’ultimo porta ad un aumentodelle oscillazioni del prezzo del titolo.

Figura 15: Il grafico dei ritorni in funzione della differenza tra logB e logS.Ora spengo il floorActing lasciando invariati gli altri parametri dell’esperimento.

20

Figura 16: Il prezzo del titolo diventa negativo dopo pochi cicli. Il floorActing infatti losi può osservare come una sorta di limitatore per i valori assumibili dal prezzo, quandoquesto è disattivato il prezzo ha molte più probabilità di diventare negativo. Quando ilprezzo del titolo diventa negativo il sistema reagisce bloccando l’esecuzione delprogramma.

Figura 17: Il valore del ritorno così basso corrisponde all’assunzione repentina di unvalore negativo da parte del prezzo del titolo .

21

Figura 18: Nel grafico è presente la rappresentazione del mondo nel momento in cui ilprezzo del titolo è diventato negativo. Si noti che la maggior parte degli agenti è nellostato di venditore.Aumentando il passLevel a 0.7 si osserva una minore partecipazione degli agenti almercato, ma comunque nessun effetto sull’andamento del prezzo.Per tutte le altre simulazioni il floorActing sarà tenuto attivo per evitare che il codice siblocchi dopo pochi cicli. Ovviamente l’ effetto del floorActing dipende dal rapporto tra ilnumero di random agents e gli altri agenti presenti nella simulazione.

Numero totale di agenti = 100Numero di random agents = 100PassLevel = 0.3floorActing = onLimPriceAndStocks = off

22

Figura 19: In figura si nota subito che le oscillazione verso l’alto del prezzo sono moltopiù ampie di quelle in figura 14. Questo è dovuto al fatto che gli agenti possonoacquistare e vendere titoli senza alcun vincolo relativo a quanto in loro possesso. Versovalori bassi del prezzo notiamo ancora una volta l’azione del floorActing.

Figura 20: La leggera asimmetria che si nota nella differenza tra la lunghezza di logB elogS è dovuta all’effetto del floorActing, questo rende (quando il prezzo scende troppo)più probabile che gli agenti si pongano nello stato di compratori, rendendo più grande ilvettore logB.

23

2.2 Random e trend agentsNumero totale di agenti = 100Numero di trend agents = 30Numero di random agents = 70HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = onCleanTheLogs = onFloorActing = onNum trend Up = 128Num trend down = 139

Figura 21: In figura si nota la presenza di picchi, sicuramente dovuti all’effetto dei trendagents che agiscono come una sorta di amplificatore delle oscillazioni del prezzo.Quando il prezzo subisce un aumento o una diminuzione per 5 volte consecutive, tutti itrend agents si pongono sullo stato di compratori o venditori, producendo un aumentodel prezzo del titolo.

24

Figura 22: Il picco nel grafico si pensa sia dovuto ad un aumento repentino del prezzo inun momento in cui sia tutti i trend agents che parte dei random agents erano nello statodi compratori.

Figura 23: La differenza tra logB e logS, in questo caso, non è marcata come nellesimulazioni precedenti. L’effetto si pensa sia dovuto alla presenza in grande numero deitrend agents che tende ad affievolire l’azione del floorActing.

25

Figura 24: Nella figura è rappresentato il mondo quando l’esecuzione del programma siè arrestata a causa dell’assunzione da parte del prezzo del titolo di un valore negativo. Sinota che l’evento è stato causato dall’azione dei trend agents contro la quale nemmeno lapresenza del floorActing ha potuto far niente.

Numero totale di agenti = 100Numero di trend agents = 20Numero di random agents = 80HowManyTicks = 5PassLevel = 0.7LimPriceAndStocks = onCleanTheLogs = onFloorActing = onNum trend up = 66Num trend down = 74

26

Figura 25: In figura si nota come il prezzo del titolo abbia assunto un valore negativodopo molti meno cicli dell’esperimento precedente.

Figura 26: Un passLevel così alto implica una minore partecipazione dei random agentsal mercato e di conseguenza un minore effetto del floorActing sul prezzo. In figura si notala situazione che si presenta nel momento del blocco dell’esecuzione del codice, causatodall’assunzione da parte del prezzo del titolo di un valore negativo.

Numero totale di agenti = 100Numero di trend agents = 20Numero di random agents = 80HowManyTicks = 10PassLevel = 0.3

27

LimPriceAndStocks = onCleanTheLogs = onFloorActing = onNum trend up = 0Num trend down = 3

Figura 26: L’andamento del prezzo è quasi indifferente alla presenza dei trend agents.Aumentando HowManyTicks si diminuisce la probabilità che i trend agents agiscano,perché, ovviamente, la probabilità che il prezzo subisca casualmente 10 aumenti odiminuzioni consecutive è molto più piccola della probabilità che ne subisca 5. Si notiche qui l’interruzione della simulazione è stata eseguita dall’utente.Una volta valutato l’effetto di HowManyTicks sugli agenti che hanno una strategia basatasui trend si è deciso di mantenerlo al valore 5 per il resto degli esperimenti.Vediamo ora cosa succede spegnendo il LimPriceAndStocks.

Numero totale di agenti = 100Numero di trend agents = 20Numero di random agents = 80HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = offCleanTheLogs = onFloorActing = onNum trend up = 714Num trend down = 606

28

Figura 27: Togliendo il LimPriceAndStocks si osserva che le oscillazioni verso l’alto delprezzo non sono più limitate e quindi osserviamo un aumento di quest’ultimo. Per valoribassi (< 500 unità) del prezzo abbiamo sempre attivo il floorActing che ne sfavorisce ilribasso iniziale.

Figura 28: Per i ritorni si nota un andamento quasi simmetrico.

29

2.2 Random, trend e behavioural agentsNumero totale di agenti = 100Numero di trend agents = 0Numero di Behavioural agents = 20Numero di random agents = 80HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = onCleanTheLogs = onFloorActing = onNum trend up = 50Num trend down = 38

Figura 29: In figura si nota un andamento del prezzo casuale, salvo in alcuni punti dovesi notano dei picchi dovuti all’azione dei behavioural agents.

Figura 30: In figura si può notare una leggere asimmetria tra la lunghezza di logB elogS. Questa è dovuta alla strategia d’azione dei behavoural agents, i quali in accordo

30

con il bias dell’avversione alla perdita certa, quando il mercato è in ribasso, si pongononello stato di compratori aumentando la lunghezza di logB rispetto a logS.

Figura 31: In figura si può notare ancora una volta l’asimmetria sull’asse delle ascisse edelle ordinate, entrambe dovute alla strategia dei behavioural agents.

Numero totale di agenti = 100Numero di trend agents = 0Numero di Behavioural agents = 20Numero di random agents = 80HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = offCleanTheLogs = onFloorActing = onNum trend up = 199Num trend down = 208

Figura 32: Spegnendo il LimPriceAndStocks l’effetto dei behavioural agents diventa più

31

evidente. Il bias di avversione alla perdita certa spinge gli agenti ad acquistare quando iltrend del mercato è down portando ad una risalita del prezzo, il quale per questa ragionetenderà ad aumentare nel tempo.

Figura 33: In figura si può notare un comportamento simile a quello descritto in figura31.

Numero totale di agenti = 100Numero di trend agents = 30Numero di Behavioural agents = 15Numero di random agents = 55HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = onCleanTheLogs = onFloorActing = onNum trend up = 200Num trend down = 230

32

Figura 34: La numerosa presenza dei trend agents agisce ancora come amplificatoredelle oscillazioni del prezzo che quindi, anche con attivo il flooracting e con ibehavioural che dovrebbero far risalire il prezzo nel caso di trend down, non riesce arimanere positivo nel tempo.

Figura 35: In figura si possono notare numerosi picchi dovuti all’effetto dei trend e deibehavioural agents che agendo in gruppo portano a cambiamenti repentini del prezzo.

Numero totale di agenti = 100Numero di trend agents = 20Numero di Behavioural agents = 20Numero di random agents = 60HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = offCleanTheLogs = onFloorActing = onNum trend up = 571Num trend down = 325

33

Figura 37: La disattivazione del LimPriceAndStocks e l’azione delle strategie dellediverse tipologie d’agenti portano il prezzo del titolo ad un aumento molto più rapidodelle altre configurazioni e soggetto ad oscillazioni meno ampie. Abbiamo una evidenteregolarità nel mercato.

Figura 38: L’aumento del prezzo del titolo è correlato alla differenza tra la lunghezza deivettori logB e logS, infatti logB risulta essere mediamente più grande.

Numero totale di agenti = 100Numero di trend agents = 30Numero di Behavioural agents = 15Numero di random agents = 55HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = onCleanTheLogs = offFloorActing = onNum trend up = 12Num trend down = 16

34

Figura 39: In figura si evidenzia l’effetto della disattivazione del CleanTheLogs. Gliagenti trovano inizialmente, per gli scambi, un prezzo sempre vicino al valore di partenza(1000 unità). Nel tempo il prezzo, seppur lentamente, scende. La spiegazione di questofenomeno la si trova in figura 41.

Figura 40: In figura si osserva una simmetria sull’asse delle ordinate, in accordo conquanto detto in figura 39. Sull’asse delle ascisse si nota una forte asimmetria.

Figura 41: La figura mostra l’asimmetria tra il vettore logB ed il vettore logS. Questa è

35

dovuta alla presenza del LimPriceAndStocks, il quale, considerando anche le proprietàpossedute all’inizio del mercato dagli agenti (100 unità di stocks e 10000 unità di cash),produce casualmente durante l’avanzamento del mercato un aumento del numero divenditori.

Figura 42: La caratteristica della disattivazione del CleanTheLogs è l’aumento linearedella lunghezza dei vettori logS e logB. Le piccole oscillazioni che si osservano sonodovute ai momenti in cui si riescono ad effettuare scambi portando ad una diminuzionedel numero di elementi nell’uno e nell’altro vettore.

Disattivando il LimPriceAndStocks e mantenedo le stesse impostazioni, si ha unasimmetria all’interno del mercato, con l’oscillazione costante del prezzo intorno al valoredelle 1000 unità.

36

2.3 Random, trend, behavioural ed intelligent agentsNumero totale di agenti = 100Numero di trend agents = 20Numero di Behavioural agents = 20Numero di random agents = 59Numero di Intelligent agents = 1HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = offCleanTheLogs = onFloorActing = onInitial IntelligentTotalPropety = 110 000Num trend up = 318Num trend down = 79Step Limit 1000Number of searches = 1Starting at search ID = 1Initial random seed = 601,855,076Number of threads = 4I parametri trovati con l’algoritmo genetico sono:intelligent_p_buy=0.800000intelligent_p_pass=0.00000intelligent_p_buy_control=0.200000

Figura 43: L’andamento del prezzo risulta avere una regolarità, è crescente nel tempo.

37

Figura 44: In figura si osserva un andamento simile a quello descritto in figura 38. Ilmercato non si accorge dell’intelligent agent.

Figura 45: In questo contesto la strategia trovata con l’algoritmo genetico porta ad unguadagno da parte degli intelligent agents, i quali riescono ad avere un aumento neltempo dei beni in loro possesso.Numero totale di agenti = 100Numero di trend agents = 20Numero di Behavioural agents = 20Numero di random agents = 59Numero di Intelligent agents = 1HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = onCleanTheLogs = onFloorActing = onInitial IntelligentTotalPropety = 110 000Step Limit 1000Number of searches = 1Starting at search ID = 1Initial random seed = 1,629,392,360Number of threads = 4

38

intelligent_p_buy=1.00000intelligent_p_pass=0.300000intelligent_p_buy_control=0.200000

L’andamento del mercato è simile a quello descritto nell’esperimento precedente.L’intelligent agent continua ad accumulare beni, la strategia trovata risulta quindi essereefficace sia nel primo che nel secondo caso. Si nota in entrambi i casi un’alta probabilitàdi acquisto del titolo. Intuitivamente si capisce che essendo il mercato in costante rialzocomprare titoli costituisce un investimento che risulta essere estremamente redditizio neltempo. Una strategia che avrebbe operato qualsiasi essere razionale.

Numero totale di agenti = 100Numero di trend agents = 20Numero di Behavioural agents = 20Numero di random agents = 59Numero di Intelligent agents = 1HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = onCleanTheLogs = onFloorActing = onInitial IntelligentTotalPropety = 110 000Num trend up = 315Num trend down = 283Step Limit 1000Number of searches = 1Starting at search ID = 1Initial random seed = -651,786,785Number of threads = 4intelligent_p_buy=0.700000intelligent_p_pass=0.00000intelligent_p_buy_control=0.300000

39

Figura 46: Con il LimPriceAndStocks attivo il mercato sembra avere un andamento deltutto casuale con rialzi e ribassi repentini.

Figura 47: La figura riflette l’andamento casuale del mercato.

Figura 48: La strategia trovata dall’algoritmo genetico non porta ad alcun risultato utileper l’ intelligent agent, il quale subisce il forte andamento aleatorio del mercato.

Numero totale di agenti = 200Numero di trend agents = 40Numero di Behavioural agents = 40Numero di random agents = 119Numero di Intelligent agents = 1HowManyTicks = 5PassLevel = 0.3LimPriceAndStocks = on

40

CleanTheLogs = onFloorActing = onInitial IntelligentTotalPropety = 110 000Num trend up = 326Num trend down = 369Step Limit = 1000Number of searches = 1Starting at search ID = 1Initial random seed =1,629,392,360Number of threads = 4intelligent_p_buy=0.600000intelligent_p_pass=0.700000intelligent_p_buy_control=0.600000

Figura 49: Ritroviamo, come nella simulazione precedente, un andamento del mercatofortemente casuale.

41

Figura 50: Si ripete quanto detto nella figura 47.

Figura 51: L’algoritmo genetico non riesce a trovare dei valori per i parametri chemassimizzino i beni dell’intelligent agent.

Negl’ultimi due esperimenti i risultati ottenuti dall’algoritmo genetico sono molto diversi,ma in entrambi i casi non producono gli effetti richiesti.Ciò è dovuto alla forte irregolarità del mercato che non permette di trovare una strategiavincente. L’algoritmo genetico offre comunque delle soluzioni al problema posto, cheperò risultano essere inutili.

42

3 CONCLUSIONIGli agent based models sono risultati uno strumento di simulazione molto utile emaneggevole. Le simulazioni effettuate hanno portato all’emersione di macrocomportamenti peculiari, ma comunque interpretabili in funzione delle micro regole allequali obbedivano gli agenti. Nell’ultima parte si è notato come l’algoritmo genetico siariuscito ad ottenere dei buoni risultati. Infatti, l’uso di quest’ultimo, si è dimostratoestremamente utile quando all’interno del mercato vi era una qualche regolarità, portandoa definire delle strategie che hanno realizzato l’obiettivo proposto. Si è visto però, chequalora il sistema non presenti alcuna regolarità, questo propone strategie sempre diversee del tutto inutili.In questo elaborato le strategie usate dagli agenti, come la struttura costruita del mercato,sono molto semplici. Interessante potrebbe essere usare modelli matematici più elaboratie dettagliati per definire le micro regole con le quali agiscono gli agenti, nonché raffinarela struttura del mercato. In queste circostanze sarebbe interessante definire degliintelligent agents che agiscono secondo delle funzioni di variabili caratterizzanti ilmercato ed osservare le evoluzioni di queste attraverso un algoritmo genetico.

43

BIBLIOGRAFIA[1] Simulation in Economics: Evidence on Diffusion and Communication Magda Fontana[2] http://jasss.soc.surrey.ac.uk/6/3/3.html[3]http://www.santafe.edu/research/working-papers/abstract/70e0c84b2cff6e8e87f2940fa60965e9/[4]KAHNEMAN, D. and TVERSKY, A. (1979), "Prospect Theory of Decisions underRisk," Econometrica 47,263-291[5] TVERSKY, A AND KAHNEMAN, D. (1981), "The Framing Decisions and thePsychology of Choice[6] http://blog.moneyfarm.com/it/guide/finanza-comportamentale/avversione-alla-perdita/[7] Optimizing the behavior of trading agents using genetic algorithms in a stockexchange simulation framework with real data. di Gerson Massobrio.[8] https://it.wikipedia.org/wiki/Algoritmo_genetico[9] http://economicliberty.net/complexmarket.pdf[10] http://www.apmath.spbu.ru/degit/papers/Sarkar.pdf[11] http://terna.to.it/tesi/massobrio.pdf[12] http://terna.to.it/econophysics16/NetLogo_examples/[13] “Formicai, Imperi, Cervelli” di Alberto Gandolfi