In questo articolo voglio discutere sulle attività necessarie al fine di impostare un ambiente di sviluppo robusto, efficiente ed interattivo per il testing di strategie di trading algoritmico, utilizzando la distribuzione Linux molto conosciuta, come Ubuntu Desktop e il linguaggio di programmazione Python. Utilizzeremo questo ambiente per quasi tutti i successivi articoli sul trading algoritmico.

Per creare questo ambiente di sviluppo installeremo 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 adeguato database di Securities Master) ci permetteranno 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 si può mantiene il sistema ottimizzato e performante. IPython / matplotlib (e la qtconsole descritta di seguito) consentono la 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 ho scritto un tutorial in modo che gli utenti Windows o Mac OSX che non vogliono o non siano in grado di installare direttamente Ubuntu Linux possano comunque utilizzarlo 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. Ciò consente la sperimentazione di Ubuntu e degli strumenti Python prima di eseguire l’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”:

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, dobbiamo procurarci l’ultima versione del software VirtualBox di Oracle. Clicca 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):

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):

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:

VirtualBox senza l'immagine ISO di Ubuntu

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

Impostanzione di un nuovo ambiente virtuale

Scegli la quantità di RAM che desideri allocare al sistema virtuale. Personamente ho 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 allocerà tutta la memoria disponibile per l’hardware utilizzato):

Scegliere la quantità di memoria da allocare per il sistema virtuale

Creare 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:

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: 

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.

Vai alla sezione Impostazioni, fai clic sulla scheda “Archiviazione” e aggiungi un disco. A questo punto è necessario selezionare il file ISO dell’immagine del sistema Ubuntu, memorizzato direttamente nei tuoi download (o ovunque tu abbia scaricato Ubuntu). Selezionalo e quindi salva le impostazioni:

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”:

Clicca su "Install Ubuntu" per avviare l'installazione

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

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 stai 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). Continua con l’installazione e ti verrà presentata una schermata che ti chiederà la tua posizione e, successivamente, il layout della tua tastiera:

Seleziona la tua zona geografica

Inserisci le tue credenziali ed assicurati di ricordare la password scelta perchè ne avrai bisogno ogni volta che accedi 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, puoi andare sul menu e forzare l’arresto. Al riavvio verrà visualizzata la schermata di login di Ubuntu:

Schermata di login di Ubuntu Desktop

Effettua il login con il tuo username e password (che hai inserito in precedenza) e entra nel tuo nuovo ambiente Ubuntu:

L'interfaccia Unity di Ubuntu Desktop dopo il login

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

Installare su i pacchetti Python per il Trading Algoritmo

Clicca sul bottone “Search” nell’angolo in alto a sinistra dello schermo e digita “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.

Esegui i seguenti comandi (ti verrà richiesta la password):

sudo apt -y update 
sudo apt -y upgrade

Da notare che il prefisso -y specifica ad Ubuntu che tu vuoi 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 amministatrore. Dato che staimo 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.

Se osservi il terminale vedrai il tuo nome utente seguito dal nome del tuo computer. Nel mio caso è “[email protected]”, seguito dal prompt. Nel prompt digitare python e quindi provare a importare NumPy. Verificheremo che funziona calcolando la media aritmetica di una lista di valori:

[email protected]:~$ 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:

[email protected]:~$ 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:
[email protected]:~$ 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 update

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 (ho incluso anche i numeri input/output di IPython che non hai bisogno di digitare):

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

In [2]: plot(x)
Out[2]: []
Che produce il seguente grafico:
un grafico prodotto con IPython e Qtconsole

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 descriverò 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.

Recommended Posts