Sei sulla pagina 1di 10

Alma Mater Studiorum: Universit degli Studi di Bologna

Facolt di Scienze Matematiche, Fisiche e Naturali


Corso di Laurea in Informatica per il Management

La programmazione genetica di algoritmi di trading

Tesi di Laurea in Finanza Aziendale

Relatore: Chiar.mo Prof. Emilio Tomasini Presentata da: Giacomo Guerrini

Anno accademico 2010/2011

1. Introduzione
Mai come oggi sono disponibili per i trader strumenti di costruzione e di valutazione trading system cos allavanguardia da non richiedere nessuna specifica conoscenza del tradizionale approccio manuale di sviluppo strategie. Al giorno doggi chi costruisce e programma trading system seguendo il metodo tradizionale deve necessariamente studiare a fondo il mercato di interesse per capirne dinamiche e caratteristiche. Da questo attento studio nasce poi un modello, unidea di trading che deve essere trasformata in codice, verificata e ottimizzata seguendo una linea dazione ben definita e consolidata fino a che non siano registrati buoni risultati. C da dire che non sempre queste nozioni sono alla portata di tutti; infatti richiesta un ampia specializzazione nel trading finanziario e nella programmazione per riuscire a costruire una strategia di trading solida e profittevole nel tempo utilizzando il metodo tradizionale. Per queste ragioni la figura del programmatore quantitativo viene ancora vista come unentit superiore, una specie di maghetto che dall'alto fa cadere il suo pesante sapere sopra i comuni trader [Toma11]. Niente di pi falso: gli algoritmi genetici e la programmazione genetica possono essere la soluzione a questo limite anche per i pi comuni trader che non hanno conoscenze e risorse necessarie per adottare liter tradizionale di sviluppo strategia. Utilizzare la programmazione genetica per costruire strategie di trading evita gran parte della arbitrariet coinvolte nella scelta di quali regole tecniche utilizzare e permette di generare trading system profittevoli minimizzando il rischio per qualsiasi tipo di mercato. Inoltre alcuni mercati presentano particolarit proprie che li rendono unici, ed utilizzare tecniche tradizionali spesso si rivela inefficace nelloperativit a lungo termine [Algo11]. Ed qui che entra in gioco Builder, un recente software di Adaptrade Software che genera automaticamente trading system sulla base di criteri specificati dall'utente bypassando tutti gli step obbligatori imposti dal metodo tradizionale: non necessaria nessuna conoscenza di linguaggio EasyLanguage, non necessario programmare e non necessario avere una conoscenza approfondita degli indicatori commerciali tecnici e delle tecniche di costruzione della strategia. Un vero e proprio programmatore quantitativo a portata di mano!

2. Programmazione Genetica e Trading Finanziario


La Programmazione Genetica una metodologia di programmazione automatizzata ispirata all'evoluzione biologica per generare programmi informatici che svolgano in maniera (quasi) ottimale un determinato compito. una particolare tecnica di apprendimento automatico che usa un algoritmo evolutivo per ottimizzare una popolazione di programmi di computer secondo un paesaggio adattativo determinato dall'abilit del programma di arrivare ad un risultato computazionalmente valido (ovvero di saper svolgere il compito dato).

2.1. Rassegna Storica


I primi esperimenti con la programmazione genetica vennero eseguiti da Stephen F. Smith (1980)[Smith80] e Nichael L. Cramer (1985)[Cramer85] ma fu John R. Koza (1992)[Koza92] a donare i primi contributi a questa disciplina estendendo il concetto di programmazione genetica a numerosi settori dove lo spazio delle soluzioni era troppo complesso per essere studiato con i metodi tradizionali. Come per gli altri settori anche il trading finanziario ha subito una rapida evoluzione per via della genetica; in particolare nell'ultimo decennio sono state pubblicati numerosi articoli, libri e ricerche che riguardano l'applicazione degli algoritmi e della programmazione genetica nei trading system.

Bauer (1994)[Bauer94] stato il primo ad introdurre gli algoritmi genetici nel mondo della finanza, da allora numerosi ricercatori hanno esteso gli studi in molte branche di essa tra cui il trading. Successivamente Levitt (1995)[Levitt95] ha sviluppato una nuova tecnica meccanica di apprendimento chiamata genetic-based global learning per combinare alcuni indicatori (come l'ADX) per predire le future tendenze del mercato. Egli ha dimostrato che il metodo produceva regolarmente profitti quando veniva applicato al foreign Exchange market. Nel 2002 Chen[Chen02] ha raccolto numerose pubblicazioni e ricerche svolte fino a quell'anno per creare uno dei pilastri della materia: Genetic Algorithms and Genetic Programming in Computational Finance. Questo libro offre un' esauriente panoramica della situazione attuale; vengono descritte le applicazioni genetiche all'interno della finanza in molti dei suoi aspetti anche se tutt'ora il settore in continua espansione. Come spiega lo stesso autore dopo dieci anni di sviluppo il momento di chiederci come gli algoritmi genetici e la programmazione genetica possano contribuire al trading finanziario. Sebbene fino ad oggi ci sono solo 150 pubblicazioni circa in questo settore, la loro applicazione nei vari campi in continuo sviluppo.

2.2. Il processo di programmazione genetica nei trading system (cenni)


Per comprendere le concrete potenzialit della programmazione genetica necessario spendere alcune parole sul processo evolutivo che sta al cuore dellalgoritmo genetico. Un algoritmo di programmazione genetica "evolve" una popolazione di strategie di trading partendo da una popolazione iniziale generata in modo casuale. Le strategie (o membri della popolazione) competono uno contro l'altro in base alla loro "fitness" (valore che determina quanto bene viene svolto un certo compito in un certo contesto). I membri con maggiore fitness vengono selezionati come "genitori" per produrre un nuovo membro della popolazione che sostituisce uno pi debole. Due genitori sono poi combinati con una tecnica chiamata crossover, che imita il processo di riproduzione biologica nel mondo naturale. Nel crossover parte della struttura genetica di un genitore combinata con unaltra struttura di un altro genitore per produrre il cosiddetto figlio. Nei trading system la struttura genetica formata da indicatori tecnici tradizionali ed ordini di entrata ed uscita dal mercato. Gli altri membri della popolazione che non sono prodotti attraverso crossover vengono generati attraverso mutazione: un membro della popolazione viene selezionato per essere modificato in modo casuale cambiando parte della sua struttura genetica. In genere una maggioranza dei nuovi membri della popolazione sono prodotti tramite crossover mentre i restanti membri vengono prodotti tramite mutazione. Nel succedersi delle generazioni di riproduzione, il valore fitness complessivo della popolazione tende ad aumentare ed il processo viene interrotto dopo un certo numero di generazioni o quando il valore di fitness medio smette di migliorare (convergenza). Il membro con maggiore fitness dellultima generazione viene generalmente considerato come la migliore soluzione (nel caso dei trading system la strategia che massimizza il profitto e minimizza le perdite).

3. Il caso di Allen e Karjalainen


Tra le numerose pubblicazioni che hanno discusso di programmazione genetica nell'ambito del trading finanziario, ne esiste una in particolare che focalizza l'attenzione su un determinato aspetto del mercato azionario: gli alti costi di commissione. Nel 1998 Allen e Karjalainen [AllKar98] hanno costruito alcuni trading system per S&P 500 con l'aiuto della programmazione genetica analizzando l'archivio storico dei prezzi giornalieri dal 1928 al 1995. Essi hanno dimostrato che, dopo aver applicato le commissioni, le regole di trading non registravano significativi guadagni rispetto ad una strategia buy & hold nel periodo di test out-of-sample. In seguito vengono brevemente descritti i passaggi fondamentali della loro ricerca focalizzando l'attenzione sull'analisi dei risultati ottenuti.

3.1. Sintesi del piano di lavoro


I due ricercatori hanno utilizzato il processo di programmazione genetica per combinare casualmente 500 semplici regole di trading che si basano sulla media mobile e sui massimi (minimi) dei prezzi passati. La scelta di queste regole come blocchi portanti del loro processo deriva da uno studio di Neftci (1991)[Neftci91], il quale ha dimostrato che molte regole di trading che si basano su pattern specifici possono essere espressi in termini di massimo (minimo) locale dei prezzi passati. Inoltre la media mobile viene utilizzata per prevedere un potenziale andamento del mercato a breve e a lungo termine.

3.2. I costi di transazione


Sweeney (1988)[Sweeney88] ha affermato che i grandi investitori istituzionali sostengono commissioni pari allo 0,1%-0.2% sul capitale investito ma possono ottenere ulteriori riduzioni. Tuttavia i reali costi di transazione per la maggior parte degli investitori sono pi elevati. Prendendo spunto da queste considerazioni Allen e Karjalainen hanno deciso di eseguire tre test con diversi costi di transazione al fine di valutare il loro impatto sulle regole generate: partendo dal caso pi comune (0.25% di commissioni) sono arrivati ad analizzare anche i casi estremi (0.1% e 0.5%) al fine di mostrare la sensibilit del risultato.

3.3. Processo evolutivo e valutazione fitness delle regole


Di seguito viene mostrato il processo evolutivo di programmazione genetica (vedi Sezione Il processo di programmazione genetica nei trading system) adottato dai due studiosi per generare le regole di trading: _______________________________________________________________________________________ 1 Passo (a) Creazione casuale di una regola. (b) Valutazione fitness della regola intesa come il rendimento in eccesso che tale regola realizza rispetto ad una strategia buy & hold nel periodo in-sample. (c) Ripetizione dei punti (a) e (b) 500 volte (numero di regole che formano la popolazione iniziale). 2 Passo (d) Le regole con maggiore fitness vengono selezionate per diventare genitori della generazione successiva. (e) Creazione di una nuova regola combinando casualmente alcune parti delle regole scelte come genitori (crossover). (f) Valutazione fitness della nuova regola generata. (g) Ripetizione dei punti (e) e (f) 500 volte (completamento di una generazione). 3Passo (h) La regola che ottiene maggior fitness nel corso di una generazione viene selezionata come miglior regola. Se tale regola possiede un valore fitness maggiore della miglior regola della generazione precedente allora la sostituisce, in caso contrario la miglior regola rimane quella della generazione precedente. (i) Il processo evolutivo viene interrotto quando vengono raggiunte le 50 generazioni oppure se non sono visibili miglioramenti dopo 25 generazioni. _______________________________________________________________________________________

3.4. Risultati
Per trovare una regola di trading per l'S&P 500 sono state eseguite 100 simulazioni indipendenti salvando per ognuna di esse la regola che registrava un maggiore profitto rispetto ad una strategia buy & hold. Al fine di prevenire potenziali data-snooping causati dalla scelta dei periodi di tempo, l'archivio storico stato diviso in dieci intervalli temporali e per ognuno vengono mostrati i risultati ottenuti. Per ogni intervallo i primi sette anni sono utilizzati come periodo di analisi in-sample (1929, 1934,....,1974) e gli anni successivi sono utilizzati come periodo di test out-of-sample (1936, 1941,....., 1981). Per fare un esempio la prima simulazione utilizza l'intervallo 1929-1935 come periodo in-sample e 1936-1995 come test out-of-sample. Per ognuno dei dieci periodi in-sample vengono effettuate dieci simulazioni, inizialmente con costi di transazione pari al 0.25%. Dopo aver eseguito le 100 simulazioni, i risultati mostrano che sono state trovate 89 regole di trading (le simulazioni non hanno salvato le regole che non hanno registrato rendimenti in eccesso positivi durante il periodo in-sample). Per illustrare una breve panoramica dei risultati, la figura 6.20 mostra il rendimento medio annuo in eccesso e il numero medio di operazioni l'anno che registrano le regole di trading.

Le tabelle seguenti illustrano una sintesi dei risultati ottenuti applicando diversi costi di transazione: nella tabella 6.20 sono applicate commissioni pari a 0,25%, le tabelle 6.21 e 6.22 considerano invece lo 0,1% e lo 0,5%. La prima colonna elenca i dieci periodi in-sample della simulazione; le regole migliori che vengono generate per ognuno di questi intervalli vengono testate sul periodo out-of-sample che inizia l'anno successivo e si prolunga fino al 1995. K il numero di regole di trading generate dal processo evolutivo. Excess denota il rendimento medio annuo in eccesso che registra la regola durante il periodo di test out-ofsample rispetto ad una strategia buy & hold dopo aver applicato i costi di transazione. K+ il numero di regole generate con un rendimento positivo in eccesso.

3.5. Analisi dei risultati


Dopo aver analizzato l'impatto delle commissioni sui risultati ottenuti, sono state tratte le seguenti conclusioni: nel caso generale (0.25%) il rendimento medio in eccesso dopo aver applicato le commissioni negativo nove periodi di test su dieci e la frequenza delle operazioni relativamente bassa con una media di 3,8 trade l'anno. Nella maggior parte dei periodi sono state trovate solo poche regole con rendimenti positivi in eccesso rispetto ad una strategia buy & hold. Con bassi costi di transazione (0.1%) il numero di trade aumenta con una media che raggiunge i 18 trade l'anno. Il rendimento medio in eccesso negativo sei volte su dieci. Con commissioni ingenti (0.5%) il numero medio di trade sfiora una media di 1.4 l'anno. I rendimenti in eccesso sono negativi per nove periodi su dieci. Nonostante alcune regole abbiano alti rendimenti e buona capacit di previsione, generalmente i rendimenti in eccesso rispetto ad una strategia buy & hold sono negativi. Soprattutto i risultati out-of-sample mostrano come le regole generate dagli algoritmi genetici non registrano significativi rendimenti in eccesso dopo aver applicato le commissioni.

3.6. Considerazioni
L'S&P 500 un mercato liquido tra i pi efficienti ed quindi molto difficile trovare strategie che siano robuste e che durino nel tempo. E consigliabile testare le strategie generate da algoritmi genetici su mercati meno liquidi con commissioni irrisorie (come futures o foreign exchange market) per eliminare questo problema. Inoltre negli anni 90 la programmazione genetica stata utilizzata principalmente per risolvere problemi relativamente semplici poich tale metodologia richiede una grande capacit computazionale. Tuttavia, pi recentemente, grazie ai recenti sviluppi nella tecnologia e alla ben conosciuta legge di Moore [Moore65], la programmazione genetica ha cominciato a fornire un certo numero di risultati. In particolare dopo il 2000 la teoria della programmazione genetica ha avuto un formidabile e rapido sviluppo; cos rapido che stato possibile costruire modelli probabilistici esatti ed ottenere risultati innovativi e inimmaginabili fino a pochi anni prima. Probabilmente se Allen & Karjalainen avessero utilizzato strumenti computazionali allavanguardia (come Builder) per effettuare i loro studi, i risultati sarebbero cambiati drasticamente.

4. Adaptrade Builder
Adaptrade Builder un software che genera automaticamente strategie di trading per TradeStation e Multichart. Builder automatizza il tradizionale approccio di sviluppo trading system in cui il trader seleziona gli elementi della strategia di trading basandosi sullesperienza passata combinata con la conoscenza di indicatori tecnici e tipi di ordini di entrata e uscita dal mercato. Una buona strategia di trading tipicamente sviluppata attraverso una lunga sperimentazione che coinvolge numerose iterazioni, revisioni e collaudi fino a quando vengono registrati risultati accettabili. Tutti questi passi sono eseguiti automaticamente da Builder [Adapt11]. In particolare il programma genera una popolazione iniziale di strategie di trading selezionando casualmente alcuni indicatori tecnici tradizionali e alcune regole di entrata e di uscita dal mercato per ogni membro della popolazione. Successivamente la popolazione iniziale di strategie "evolve" nel corso di varie generazioni utilizzando un algoritmo genetico con criteri di performance specificati dall'utente. Il programma si basa su strategie generate nel periodo "in-sample" e poi testate nel cosiddetto periodo di prova "out-of-sample" per verificare che la strategia porti buoni risultati anche nel futuro.

4.1. Caratteristiche e principali funzionalit


Builder in grado di generare strategie per quasi tutti i mercati in ogni fascia oraria: da 1 minuto alle barre mensili; per le commodities, i futures, i forex e altri mercati. Non vi alcun limite al numero di strategie che si possono costruire e quanto spesso si possono costruire. Se una strategia comincia a dare prestazioni peggiori del solito, basta costruirne una nuova affinch prenda il suo posto. Se si vuole diversificare il

portafoglio aggiungendo un nuovo mercato nel proprio trading, possibile utilizzare Builder per trovare una nuova strategia. Le strategie generate sono complete, incluse le regole per entrare nel mercato, per uscire in profitto e per uscire in perdita. Il codice della strategia fornito in formato testuale e pu essere copiato e incollato nell'editor EasyLanguage in TradeStation 6 o in Multichart attraverso l'editor Power Language, per essere eseguito cos com' oppure modicato a proprio piacimento. Le strategie possono essere solo long, solo short oppure entrambi. Per semplicare la logica di trading esiste un'opzione che crea regole di ingresso long e short logicamente opposte. In alternativa le regole di ingresso long e short possono essere generate in modo indipendente. Builder comprende indicatori tecnici come il: trend (semplice media mobile, media mobile esponenziale) la forza trend (ADX, rate of change) oscillatori (SlowD stocastico, RSI) volatilit ora del giorno, giorno della settimana e modelli di prezzo

Gli indicatori vengono combinati tramite funzioni logiche ("e", "o") e con operatori di disuguaglianza (<, <=,>,> =, =). In oltre ci sono tre diversi ordini di ingresso e sei diversi tipi di ordini di uscita. Per costruire strategie di trading il programma utilizza un algoritmo genetico per selezionare diverse combinazioni degli indicatori tecnici, degli operatori, degli ordini di entrata e di quelli di uscita. Con tutte le possibili combinazioni di regole e di ordini, Builder in grado di generare letteralmente migliaia di miliardi di diverse possibili strategie di trading. Per garantire che le strategie generate da Builder soddisfino le vostre esigenze, possibile specificare i parametri di performance per guidare il processo di creazione [Adapt11]. I parametri di performance pongono pi o meno enfasi sulle misurazioni delle seguenti prestazioni: Profitto netto Numero di trade Average trade Percentuale di trade vincenti Profit Factor Coefficiente di correlazione nella equity line Significativit statistica Complessit della strategia MAE Drawdown

Altre impostazioni in Builder consentono di controllare vari aspetti del processo di programmazione genetica e specificano le caratteristiche delle strategie generate.

4.2. Trucchi e consigli


Il miglior modo per imparare ad utilizzare Adaptrade Builder quello di trascorrere qualche ora ad usarlo. Non bisogna aspettarsi che ogni processo di generazione si tradurr in una strategia che faccia guadagnare soldi. E' molto pi probabile che dopo la prima manche si desideri modificare alcuni parametri e costruire di nuovo la strategia. Tuttavia presto troverete le combinazioni dei pesi che generano i risultati desiderati. Ecco alcune linee guida generali e suggerimenti per iniziare a costruire buone strategie in poco tempo con lutilizzo di Builder: Minimizzare la complessit della strategia. Ponendo la complessit ad un valore basso si possono rompere i legami tra le strategie che danno risultati con le stesse prestazioni ma con un diverso numero di input (effetto bloating). L'impostazione di questo peso ad un valore relativamente basso pu contribuire a mantenere le condizioni di input non troppo estese. Valorizzare la significativit e coefficiente di correlazione. Questa operazione garantisce che la strategia abbia un'adeguata dimensione dell'average trade e un numero sufficiente di trade. Inoltre aiuter a garantire che le prestazioni siano abbastanza uniformi su tutto l'archivio storico. Risparmiare tempo sul processo di costruzione. Aumentando il parametro tournament Size l'algoritmo converge alla soluzione finale in un minor numero di generazioni. Minimizzare il MAE massimo e medio. Laggiunta di questi due nuovi parametri nella nuova versione del Builder permette di ridurre ulteriormente il rischio poich gestisce lopen drawdown. Attenzione alla massimizzazione e minimizzazione dei parametri di costruzione. Quando si scelgono i parametri di costruzione bisogna tenere presente che alcuni parametri sono legati gli uni agli altri. Per esempio, l average trade correlato al numero di trade. Se si imposta un alto valore di average trade probabilmente verr generata una strategia con un minor numero di trade. In alcuni contesti dunque consigliabile inserire valori target senza massimizzare (minimizzare) i parametri esistenti affich altri non vengano influenzati. Iniziare con un basso numero di parametri di performance Solitamente meglio cominciare con un piccolo numero di parametri di performance, come ad esempio tre o quattro. I parametri selezionati di default sono spesso un buon punto di partenza. Riguardando i risultati delle prestazioni possibile aggiugere successivamente alcuni parametri, modificare i pesi, e aggiungere o rimuovere i valori target al fine di correggere eventuali carenze nate nei risultati delle simulazioni precedenti.

Bibliografia
[Algo11] [Toma11] [AllKar98] [Neftci91] Quantirica, Adaptrade Presentation, 2011, www.quantirica.it/public/uploads/updir70/Adaptrade%20presentation.pdf Tomasini E., Trading System La nuova frontiera, Trading Library, 2011 Allen F., Karjalainen R., Using Genetic Algorithms to Find Technical Trading Rules, in: Journal of Financial Economics, 51, 1999, 245-271. Neftci S.N., Naive Trading Rules in Financial Markets and WienerKolmogorov Prediction Theory: a Study of Technical Analysis, in: Journal of Business, 64(4), 1991, 549-571. Sweeney, R.J., Some new filter rule tests: methods and results, in: Journal of Financial and Quantitative Analysis, 23, 1988, 285-300. Smith S.F., A Learning System Based on Genetic Adaptive Algorithms, University of Pittsburgh, 1980. Cramer N.L., "A representation for the Adaptive Generation of Simple Sequential Programs", in: Proceedings of an International Conference on Genetic Algorithms and the Applications, Grefenstette, John J. (ed.), Carnegie Mellon University, 1985. Koza J.R., Genetic Programming: On the Programming of Computers by Means of Natural Selection, Cambridge, MIT Press, 1992. Bauer R.J., Genetic Alghoritms and Investment Strategies, Wiley Finance Edition, 1994. Levitt M.E., Machine Learning for Foreign Exchange Trading in: Neural Networks in Capital Markets, in A-P. (.ed), John Wiley and Sons, Chichester, 1995, 233-243. Moore G.E., Cramming more components onto integrated circuits in: Electronics, 38(8), 1965, 114. Chen S.H., Genetic Algorithms and Genetic Programming in Computational Finance, Kluwer Academic Publisher, 2002. Adaptrade Software, Adaptrade Builder for Tradestation Users Guide, 2011, http://www.adaptrade.com/Builder/AdaptradeBuilderUG.pdf

[Sweeney88] [Smith80]

[Cramer85]

[Koza92]

[Bauer94]

[Levitt95]

[Moore65]

[Chen02]

[Adapt11]

Potrebbero piacerti anche