Ambiente di sviluppo per il Trading Algoritmico

ambiente di sviluppo per il trading algoritmico con Ubuntu e Python

In questa lezione relativa alle basi del trading algoritmico con Python descriviamo le attività necessarie al fine di impostare un ambiente di sviluppo per il trading algoritmico robusto, efficiente ed interattivo. Questo ambiente si basa sulla distribuzione Linux molto conosciuta, come Ubuntu Desktop e il linguaggio di programmazione Python.  Utilizzeremo questo ambiente  per creare e testare strategie di trading algoritmico.

Per creare un ambiente di sviluppo per il trading algoritmico dobbiamo installe i seguenti strumenti software, tutti open-source e gratuiti da scaricare:

Oracle VirtualBox – Per la virtualizzazione del sistema operativo

Ubuntu Desktop Linux – Come nostro sistema operativo virtuale

Python – l’ambiente principale per la programmazione.

NumPy / SciPy – Per elaborare il calcolo di array / matrice in modo veloce ed efficiente

IPython – Per lo sviluppo interattivo visivo con Python

Matplotlib – Per la visualizzazione grafica dei dati

Pandas – Per il “wrangling” dei dati e analisi delle serie temporali

Scikit-learn – Per il machine learning e gli algoritmi di intelligenza artificiale

Questi strumenti (abbinati ad un efficiente database di asset finanziari) ci permettono di creare un ambiente efficiente ed interattivo per la ricerca di nuove strategie. Pandas è progettato per la “manipolazione” dei dati, potendo importare e ripulire i dati delle serie temporali in modo molto efficiente. Utilizzando NumPy / SciPy possiamo mantenere il sistema ottimizzato e performante. IPython / matplotlib (e la qtconsole descritta di seguito) possiamo avere una visualizzazione interattiva dei risultati e una rapida iterazione. Scikit-learn ci consente di applicare tecniche di machine learning alle nostre strategie per migliorare ulteriormente le prestazioni.

Inoltre abbiamo previsto un tutorial in modo che gli utenti Windows o Mac OSX che non vogliono o non siano in grado di installare direttamente Ubuntu Linux. Gli utenti Windows o Mac OSX possono comunque  usare Linux tramite VirtualBox. 

VirtualBox ci consente di creare una “Macchina Virtuale” all’interno del sistema host in grado di emulare un sistema operativo guest senza influenzare l’host in alcun modo. In questo modo possiamo testare e sperimentare Ubuntu e gli strumenti di Python prima di eseguire un’installazione completa.

Per coloro che hanno già installato Ubuntu, possono direttamente iniziare dalla sezione “Installare i pacchetti di Python nel sistema Ubuntu“.

Installare VirtualBox e Ubuntu-Linux

Questa sezione del tutorial si concentra sull’installazione di VirtualBox ed è stata scritta per un sistema Mac OSX, ma è adatta anche per ambiente Windows. Una volta installato VirtualBox, la procedura sarà la stessa per qualsiasi sistema operativo host sottostante.

Prima di iniziare l’installazione del software, dobbiamo scaricare sia Ubuntu che VirtualBox.

 

Scaricare l'immagine ISO di Ubuntu-Linux

Apri il tuo browser web preferito e vai alla homepage di Ubuntu Desktop, e seleziona “Download Ubuntu”:

ambiente di sviluppo per il trading algoritmico
Scarica Ubuntu Desktop (32-bit o 64-bit)

Scarica l’ultima versione stabile di Ubuntu. Una volta raggiunta la pagina di download, assicurati di selezionarella versione LTS di Ubuntu. Dovrai scegliere se vuoi versione a 32 o 64 bit. È probabile che tu abbia un sistema a 64 bit, ma nel dubbio, scegli 32 bit. Su un sistema Mac OSX l’immagine del disco ISO di Ubuntu Desktop verrà memorizzata nella directory Download. Lo useremo successivamente, dopo aver installato la  VirtualBox.

Scaricare l'immagine ISO di Ubuntu-Linux

Ora che abbiamo scaricato Ubuntu, il passo successivo per creare un’ambiente di sviluppo per il trading algoritmico è installare VirtualBox. Dobbiamo procurarci l’ultima versione del software VirtualBox di Oracle. Clicchiamo qui per visitare il sito web e selezionare la versione relativa al tuo specifico sistema host (in questo tutorial abbiamo bisogno della versione per Mac OSX):

ambiente di sviluppo per il trading algoritmico
Pagina di download di Orcacle VirtualBox

Una volta scaricato il file, è necessario eseguirlo e fare clic sull’icona del pacchetto (questo varia leggermente in ambiente Windows ma è un processo simile):

ambiente di sviluppo per il trading algoritmico
Doppio click sull'icona "pacchetto" per installare Oracle VirtualBox

Dopo che il pacchetto è stato aperto, seguiamo le istruzioni di installazione, mantenendo le impostazioni predefinite (a meno che non sentiate la necessità di cambiarle!). Ora che VirtualBox è stato installato possiamo aprirlo dalla cartella Applicazioni (che può essere trovata con Finder). Questo inserisce VirtualBox sul dock delle icone durante l’esecuzione, quindi puoi fissarlo in questa posizione in modo permanente se vuoi esamire e provare Ubuntu Linux Live prima di eseguire l’installazione completa:

ambiente di sviluppo per il trading algoritmico
VirtualBox senza l'immagine ISO di Ubuntu

A questo punto possiamo creare una nuova “scatola virtuale” (cioè un sistema operativo virtualizzato) facendo clic sull’icona Nuova, che sembra un ingranaggio. Abbiamo chiamato la mia scatola virtuale come “Ubuntu Desktop Algorithmic Trading” (quindi potresti usare qualcosa di simile anche tu!):

ambiente di sviluppo per il trading algoritmico
Impostanzione di un nuovo ambiente virtuale

Scegliamo la quantità di RAM che desideri allocare al sistema virtuale. Abbiamo impostato 512 Mb poiché questo è solo un sistema di “test”. Per motivi di performance, un vero ambiente per il backtesting deve necessariamente prevedere un’installazione nativa (e quindi allocherà tutta la memoria disponibile per l’hardware utilizzato):

ambiente di sviluppo per il trading algoritmico
Scegliere la quantità di memoria da allocare per il sistema virtuale

Creiamo quindi un disco rigido virtuale (si consiglia di utilizzare 8Gb) con una VirtualBox Image Box, dinamicamente assegnata, che abbia lo stesso nome dell’immagine virtuale impostata in precedenza:

ambiente di sviluppo per il trading algoritmico
Scegliere il tipo di disco rigido da utilizzare per l'immagine ISO

A questo punto si ottiene un sistema completo, con il seguente elenco delle caratteristiche hardware e software: 

ambiente di sviluppo per il trading algoritmico
Schermata riassuntiva dopo la creazione di un sistema virtuale

Ora dobbiamo dire a VirtualBox di includere un “CD drive” virtuale per la nuova immagine del disco, in modo da poter simulare l’avvio della nostra immagine del sistema Ubuntu da questa unità CD.

Andiamo alla sezione Impostazioni, facciamo clic sulla scheda “Archiviazione” e aggiungiamo un disco. A questo punto dobbiamo selezionare il file ISO dell’immagine del sistema Ubuntu, memorizzato direttamente nei download (o ovunque abbiamo scaricato Ubuntu). Selezioniamo il file e salviamo le impostazioni:

ambiente di sviluppo per il trading algoritmico
Selezionare l'ISO di Ubuntu Desktop per il primo avvio

 

A questo punto siamo pronti per avviare la nostra immagine di Ubuntu ed effettuare l’installazione del sistema operativo. E’ sufficiente fare clic su “Start” e quindi su “OK”.

Verrà quindi visualizzato la schermata di Ubuntu Desktop. Clicca su “Installa Ubuntu”:

ambiente di sviluppo per il trading algoritmico
Clicca su "Install Ubuntu" per avviare l'installazione

Assicuriamoci di selezionare le opzioni corrette per installare i driver delle periferiche come la scheda grafica e il Wi-Fi:

ambiente di sviluppo per il trading algoritmico
Installa i specifici drivers per la scheda grafica e il Wi-Fi

Successivamente viene visualizzata una schermata in cui viene chiesto come si desidera memorizzare i dati creati per il sistema operativo. Non aver paura dell’opzione “Cancella disco e Installa Ubuntu”. Questo NON significa che cancellerà il tuo normale disco fisso!

In realtà si riferisce al disco virtuale che stiamo usando per avviare Ubuntu, che deve essere sicuramente cancellato e formattato (e comunque non ci sono dati al suo interno dato che lo abbiamo appena creato). Continuando con l’installazione e viene presentata una schermata che chiede il fuso orario e, successivamente, il layout della tastiera:

ambiente di sviluppo per il trading algoritmico
Seleziona la tua zona geografica

Inseriamo le tue credenziali ed assicuriamoci di ricordare la password scelta perchè è necessaria ogni volta  per accedere al sistema e per installare nuovi software e pacchetti:

Inserisci il tuo Username e Password (questa sarà la password utilizzata dall'amministratore)

Dopo aver inserito tutti i dati richiesti, Ubuntu installerà i tutti i file del sistema operativo. Dovrebbe essere un processo relativamente veloce dato che copia i dati dal disco fisso al disco fisso!

Quando questo processo sarà concluso, VirtualBox si riavvierà. Se non si riavvia da solo, possiamo andare sul menu e forzare l’arresto. Al riavvio verrà visualizzata la schermata di login di Ubuntu:

Schermata di login di Ubuntu Desktop

Effettuiamo il login con lo username e la password (che abbiamo inserito in precedenza) e entriamo nel nuovo ambiente Ubuntu:

L'interfaccia Unity di Ubuntu Desktop dopo il login

Installare i pacchetti Python per l'ambiente di sviluppo per il trading algoritmico

Ora che abbiamo installato Ubuntu Desktop, possiamo iniziare ad installare i pacchetti per l’ambiente di sviluppo per il trading algoritmico.

Clicchiamo sul bottone “Search” nell’angolo in alto a sinistra dello schermo e digitiamo “Terminal” nella casella in modo da individuare l’interfaccia per la linea di comandi.

Doppio click sull’icona terminal per avviare il Terminal:

Il Terminal a linea di comando di Ubuntu Desktop

Tutti i comandi successivi dovranno essere digitati in questo terminale.

La prima cosa da fare su qualsiasi nuovo ambiente Ubuntu Linux è fare l’update e l’upgrade dei pacchetti. Il primo ci informa se ci sono aggiornamenti disponibili per Ubuntu, mentre il secondo esegue effettivamente il processo di aggiornamento dei vecchi pacchetti con le versioni più recenti.

Eseguiamo i seguenti comandi (verrà richiesta la password):

				
					sudo apt -y update 
sudo apt -y upgrade
				
			

Da notare che il prefisso -y specifica ad Ubuntu che vogliamo rispondere ‘yes’ a tutte le domande yes/no del sistema. “sudo” è un comando degli ambienti Ubuntu/Debian Linux che permette di eseguire altri comandi con i privilegi di amministratore. Dato che stiamo installando dei pacchetti per tutto il sistema, abbiamo bisogno dell’accesso ‘root’ alla macchina e per questo dobbiamo usare il comando ‘sudo’.

Dopo che entrambi i comandi sono stati eseguiti e il sistema è stato aggiornato, è necessario installare Python, NumPy / SciPy, matplotlib, panda, scikit-learn e IPython. Inizieremo installando i pacchetti di sviluppo Python e gli strumenti necessari per compilare tutto il software:

				
					sudo apt install python3-pip python-dev python3-dev build-essential liblapack-dev libblas-dev
				
			

Una volta installati i pacchetti necessari, possiamo procedere e installare NumPy tramite pip, il gestore di pacchetti Python.
Pip scaricherà un file zip del pacchetto e compilerà il codice sorgente per noi. Ricorda che ci vorrà un po ‘di tempo per compilare, probabilmente 10 minuti!

				
					sudo pip install numpy
				
			

Terminata l’installazione di  NumPy, è necessario verificare che tutto funzioni correttamente prima di procedere.

Osservando il terminale vediamo il nome utente seguito dal nome del computer. In questo caso è “algotrader@algobox”, seguito dal prompt. Nel prompt dobbiamo digitare python e quindi provare a importare NumPy. Verifichiamo che tutto funzioni calcolando la media aritmetica di una lista di valori:

				
					algotradere@algobox:~$ python 
Python 3.6.0 (default, Jan 12 2017, 03:20:26) 
[GCC 4.7.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy 
>>> from numpy import mean 
>>> mean([1,2,3]) 
2.0
>>> exit()
				
			

Ora che NumPy è stato installato con successo, vogliamo installare la libreria Python Scientific conosciuta come SciPy. 

Questo pacchetto ha alcune dipendenze tra cui la libreria ATLAS e il compilatore GNU Fortran:

				
					sudo apt install libatlas-base-dev gfortran
				
			

Ora siamo pronti per installare SciPy tramite il gestore. Ci vorrà molto tempo (circa 10 minuti, a seconda del computer), quindi potrebbe valere la pena andare a prendere un caffè:

				
					sudo pip install scipy
				
			

Perfetto! SciPy è stato installato.
Proviamolo calcolando la deviazione standard di un elenco di numeri interi:

				
					algotradere@algobox:~$ python 
Python 3.6.0 (default, Jan 12 2017, 03:25:17) 
[GCC 4.7.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import scipy
>>> from scipy import std
>>> std([1,2,3])
0.81649658092772603
>>> exit()
				
			

Successivamente dobbiamo installare i pacchetti necessari al corretto funzionamento di matplotlib, la libreria di grafi di Python. Dato che matplotlib è un pacchetto Python, non possiamo usare pip per installare le librerie sottostanti per lavorare con PNG, JPEG e font freetype, quindi abbiamo bisogno di Ubuntu per installarli per noi:

				
					sudo apt install libpng-dev libjpeg8-dev libfreetype6-dev
				
			

Ora possiamo installare matplotlib:

				
					sudo apt install matplotlib
				
			

Passiamo ora ad installare le librerie per l’analisi dei dati e per l’apprendimento automatico, Pandas e Scikit-learn. Non abbiamo bisogno di ulteriori dipendenze in questa fase in quanto sono coperti da NumPy e SciPy:

				
					sudo pip install -U scikit-learn 
sudo pip install pandas
				
			
Per effettuare il test di Scikit-learn si può procedere come segue:
				
					algotradere@algobox:~$ python 
Python 3.6.0 (default, Jan 12 2017, 03:33:46) 
[GCC 4.7.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> iris
..
..
'petal width (cm)']}
>>>
				
			

Inoltre possiamo testare il funzionamento di Pandas:

				
					>>> from pandas import DataFrame
>>> pd = DataFrame()
>>> pd
Empty DataFrame
Columns: []
Index: []
>>> exit()
				
			
Infine, vogliamo installare IPython. Si tratta di un interprete Python interattivo che offre un flusso di lavoro molto più snello, rispetto all’uso della console Python standard. Nei tutorial successivi illustrerò la piena utilità di Jupiter per lo sviluppo del trading algoritmico:
				
					sudo pip install ipython
				
			

Nonostante IPython è sufficientemente funzionale anche da solo, può essere reso ancora più potente aggiungendo la qtconsole, che fornisce la possibilità di visualizzare matplotlib in linea. Tuttavia, ci vuole un po ‘più di lavoro per farlo funzionare.

Per prima cosa, dobbiamo installare la libreria Qt. Per questo potrebbe essere necessario aggiornare nuovamente i pacchetti:

				
					sudo apt update
				
			

Adesso possiamo installare Qt:

				
					sudo apt-get install libqt4-core libqt4-gui libqt4-dev
				
			

La qtconsole ha alcuni pacchetti addizionali, nello specifico le librerie ZMQ e Pygments:

				
					sudo apt-get install libzmq-dev
sudo pip install pyzmq
sudo pip install pygments
				
			

A questo punto siamo pronti ad avviare IPython con la qtconsole:

				
					ipython qtconsole --pylab=inline
				
			

A questo punto siamo pronti ad avviare IPython con la qtconsole:

Quindi possiamo costruire un semplice grafico tramite i seguenti comandi (abbiamo incluso anche i numeri input/output di IPython che non devono essere digitati):

            In [1]: x=np.array([1,2,3])

In [2]: plot(x)
Out[2]: []
        

Otteniamo il seguente grafico:

un grafico prodotto con IPython e Qtconsole

Conclusione

Qui si conclude la procedura di installazione. Ora abbiamo a portata di mano di un ambiente di sviluppo per il trading algoritmico estremamente robusto, efficiente e interattivo.

Negli articoli successivi descriviamo in dettaglio come IPython, matplotlib, panda e scikit-learn possano essere combinati per trovare ed effettuare il backtesting di nuove strategie di trading quantitative in modo diretto.

Torna in alto