Ambiente di ricerca sul trading algoritmico con Python su Linux

Ambiente di ricerca sul trading algoritmico con Python su Linux

In questo descriviamo come installare un ambiente di ricerca sul trading algoritmico con Python su Linux, cioè come installare Python e tutte le librerie utili per iniziare ad analizzare i dati finanziari e testare le strategie di trading algoritmico.

In precedenza abbiamo pubblicato un articolo sulla creazione di un ambiente di ricerca sul trading algoritmico con Ubuntu Linux e Python. Quando l’articolo fu scritto per la prima volta, installare Python non era semplice. Problemi con i compilatori GCC, dipendenze incrociate tra librerie e complessità del sistema operativo avevano un ruolo importante nel rendere l’installazione di Python molto più difficile del necessario. Oggigiorno il problema è in gran parte risolto. In effetti ora ci sono così tante opzioni per installare Python che è facile confondersi.

ambiente di ricerca sul trading algoritmico con python su linux

Esistono molti approcci diversi che possiamo adottare per installare Python e ci sono molte opinioni contraddittorie  su quale sia l’approccio migliore. Il mio consiglio è scegliere il metodo in base a come si vuole utilizzare il linguaggio di programmazione. Se prevediamo di utilizzare Python per esplorare il trading algoritmico, questo articolo mostra come rendere operativo un ambiente di ricerca sul trading algoritmico con Python su Linux nel modo più semplice possibile. Se avete familiarità con la programmazione e l’installazione di software, potrebbe essere preferibile installare la distribuzione ufficiale Python. Può essere utile questo eccellente tutorial.

Ad oggi consigliamo di utilizzare la distribuzione Anaconda Python di Continuum Analytics, che ha i seguenti vantaggi:

  • Anaconda include tutte le librerie necessarie per iniziare ad analizzare i dati finanziari. Per citare il loro sito Web, Anaconda è una distribuzione Python e R che fornisce tutto ciò di cui hai bisogno (in termini di Python) per il data science .
  • Anaconda è fornito con Conda. Un gestore di pacchetti che permette di installare, aggiornare e disinstallare tutte le librerie Python. Può installare pacchetti conda pre-costruiti o pacchetti creati dal codice sorgente. Conda può anche creare e gestire gli ambienti virtuali.
  • Anaconda funziona bene con i notebook Jupyter. Utilizzando IPyKernel si può collegare facilmente e velocemente gli ambienti virtuali ai nostri notebook.

Quando installiamo Anaconda, abbiamo accesso immediato a oltre 1500 librerie Python tra cui NumPy, SciPy, Pandas, Beautiful Soup e Requests. Come descritto nei prossimi articoli sul trading algoritmico, possiamo controllare le versioni di queste librerie quando creiamo i nostri ambienti virtuali. Alcune delle critiche rivolte ad Anaconda sono relative alle eccessive risorse necessarie: non tutti i pacchetti sono rilevanti e occupa troppo spazio. Se preferisci una versione più snella, Continuum Analytics offre Miniconda che permette di avere accesso a Python e al gestore pacchetti Conda, ma si dovrà personalmente installare tutte le librerie. Se hai spazio su disco limitato e ritieni che questa sia l’opzione migliore per te, puoi consultare questo tutorial sull’installazione di Miniconda.

Installazione di Anaconda

Questo articolo fa parte di una serie di tutorial che descrivono come installare la distribuzione Anaconda Python su diversi sistemi operativi. In questo articolo vediamo come installare Anaconda3 versione 2021.11 (Python 3.9), per il trading algoritmico con Python su Linux utilizzando la distribuzione Ubuntu. Gli altri articoli della serie descrivono l’installazione di Anaconda per:

Installazione di Anaconda su Linux-Ubuntu

Chi ha optato per un sistema operativo basato su Linux  ha probabilmente abbastanza esperienza per voler interagire con Python senza la necessità di Anaconda. Infatti Ubuntu 21.04 contiene Python 3 già installato. Per verificare la versione di Python attualmente in esecuzione è sufficiente aprire un terminale e digitare python3 --version. Se Python 3 è già stato installato e sei in grado di interagire con Python con facilità allora puoi saltare al paragrafo “Creazione di un ambiente virtuale”. Se sei  un neofita di Linux o preferisci avere Anaconda nel sistema, puoi continuare a leggere questo paragrafo.

Iniziamo con l’aprire il browser web e collegarsi all’indirizzo https://www.anaconda.com/products/individual. Il sito web potrebbe non determinare il download corretto per il nostro sistema. In questo caso è sufficiente selezionare il corretto sistema operativo per procedere con l’installazione.

Ambiente di ricerca sul trading algoritmico con Python su Linux

Facciamo clic sul pulsante verde di download. Il download dovrebbe iniziare immediatamente. Una volta completato il download dobbiamo eseguire il file scaricato sul terminale. Apriamo il file manager e cerchiamo il file Anaconda che abbiamo scaricato. Dovrebbe trovarsi nella cartella Download, nel caso di Firefox potrebbe trovarsi in una sottodirectory all’interno di questa cartella. La posizione del file è elencata sulla destra.

Ambiente di ricerca sul trading algoritmico con Python su Linux

Apriamo il terminale e andiamo nella cartella del file scaricato digitando cd ~/Downloads/"subdirectory" (assicurarsi di integrare il nome della sottodirectory se necessario). Una volta all’interno della directory possiamo eseguire il comando ls -la per vedere i nomi degli elementi situati nella directory e le loro attuali autorizzazioni (a sinistra).

Ambiente di ricerca sul trading algoritmico con Python su Linux

Per installare anaconda è necessario eseguire lo script bash con il file Anaconda, che ha un’estensione .sh. Tuttavia nella maggior parte dei casi il file non viene scaricato con i permessi di esecuzione. La prima colonna sulla riga con il nome del file contiene -rw-rw-r--. E’ necessario modificare le autorizzazioni prima di poter eseguire il file. Per modificare le autorizzazioni dobbiamo digitare chmod 777 nome_del_file_scaricato. Ricordiamo di aggiungere il nome del file scaricato.

ambiente di ricerca sul trading algoritmico anaconda permessi chmod
Se eseguiamo nuovamente ls -la vediamo che le autorizzazioni per il file sono state aggiornate a -rwxrwxrwx. Ora possiamo eseguire il file digitando ./nome_del_file_scaricato (ricordati di inserire il nome del file).
ambiente di ricerca sul trading algoritmico anaconda install

Dopo aver premuto Invio sono visualizzati i termini della licenza d’uso di Anaconda. Dobbiamo premere la barra spaziatrice per andare alla fine e accettare i termini per continuare con l’installazione. Viene poi chiesto di confermare il percorso di installazione, consigliamo di lasciare il percorso predefinito. Dopo aver premuto Invio inizierà l’installazione. Una volta completato dobbiamo inizializzare Anaconda digitando yes.

Dopo l’inizializzazione, Anaconda è l’ambiente Python predefinito. In questo modo all’avvio del prompt della shell dei comandi (o del terminale) Anaconda è attivato come impostazione predefinita. Per disattivarlo in qualsiasi momento dobbiamo usare il comando conda config --set_auto_activate_base false. Per riattivarelo dobbiamo invece usare il comando conda config --set_auto_activate_base true. Possiamo ora chiudere e riaprire il terminale.

Riaprendo il terminale vediamo apparire (base)sul lato sinistro del prompt. Questo indica che ci troviamo nell’ambiente base di Anaconda.

ambiente di ricerca sul trading algoritmico anaconda base

Creare un ambiente per il trading algoritmico con Python su Linux

Dopo aver usato Python per un po’ di tempo o su progetti diversi, è possibile imbatterci nel problema delle dipendenze. Uno script che abbiamo scritto o un progetto su cui stiamo lavorando potrebbe richiedere funzionalità disponibili nell’ultima versione di una libreria Python come Pandas, mentre altri progetti o script usano le versioni precedenti. Come gestire e mantenere l’ambiente Python per consentirci di eseguire e lavorare su diversi script o  diversi progetti? Dobbiamo usare gli ambienti virtuale.

Un ambiente virtuale è un ambiente Python isolato che ha le proprie dipendenze o, in altre parole, le proprie versioni di librerie e pacchetti. È possibile creare ambienti virtuali per ciascun progetto in modo da poter utilizzare le specifiche versioni delle librerie necessarie per  uno specifico progetto. Con Anaconda possiamo anche specificare le versioni di Python da usare quando creiamo l’ambiente virtuale.

Anaconda ha il vantaggio di includere il gestore di pacchetti Conda, che permette di creare facilmente ambienti virtuali. Possiamo creare ambienti virtuali per Python 2.7, 3.5, 3.6, 3.7, 3.8 e 3.9. La maggior parte delle versioni dei pacchetti può essere trovata utilizzando i comandi conda o conda-forge oppure, come ultima risorsa, è possibile utilizzare il gestore pacchetti python pip. Se usiamo pip per installare le librerie negli ambienti conda, le librerie sono installate in un canale diverso e non possiamo usare il comando conda upgrade per aggiornarle. Se non vogliamo usare anaconda come distribuzione Python e abbiamo installato Python direttamente dalla distribuzione ufficiale , la stessa attività può essere eseguita utilizzando pyenv per ottenere più versioni di Python e pipenv o virtualenv per gestire ambienti virtuali. Un buon tutorial su questo  approccio è disponibile in questo sito.

Nell’ambiente base di Anaconda abbiamo accesso a tutti i pacchetti che sono stati scaricati e installati da Anaconda. Se digitiamo python --version nel  terminal vediamo che stiamo eseguendo la versione predefinita di Python, in questo caso Python 3.9.7.

Creare un ambiente virtuale

Creiamo ora un ambiente virtuale con Python 3.8 e installiamo alcune librerie necessarie per visualizzare 5 anni di dati Apple in poche righe di codice. Vediamo come creare l’ambiente: nel terminale inseriamo la seguente riga

				
					conda create -n py3.8 python=3.8
				
			

La prima parte “conda create -n” utilizza il gestore pacchetti conda per creare un nuovo ambiente. La seconda parte “py3.8” è il nome dell’ambiente, possiamo inserire qualsiasi nome. Se dimentichiamo il nome dei nostri ambienti possiamo usare in qualsiasi momento il comando conda env list  nel terminale per visualizzare un elenco di tutti gli ambienti che abbiamo creato. La parte finale “python=3.8” specifica quale versione di Python vogliamo usare per questo ambiente. Quando eseguiamo il comando otteniamo un elenco di ciò che verrà installato e scaricato nell’ambiente e chiederà se vogliamo procedere. Una volta completato, dobbiamo digita re quanto segue per attivare l’ambiente.

				
					conda activate py3.8
				
			

Notiamo che il prefisso visualizzato tra parentesi è cambiato in (py3.8). Possiamo quindi iniziare ad aggiungere le nostre librerie e pacchetti python.

ambiente di ricerca sul trading algoritmico anaconda py38

Per visualizzare i dati delle azioni dobbiamo installare solo tre librerie: Pandas per analizzare i dati, Pandas-datareader per scaricare le serie storiche da Yahoo e infine Matplotlib per visualizzare i grafici tramite l’interfaccia di Pandas. Nel terminale digitiamo quanto segue:

				
					conda install pandas pandas-datareader matplotlib
				
			

Digitiamo python nel terminale per aprire una console Python. Vediamo alcune righe di intestazione contenenti informazioni sulla versione di Python in esecuzione e il prompt verrà sostituito da tre segni. Siamo ora all’interno di un terminale Python e possiamo iniziare a scrivere codice in Python. Possiamo tornare alla shell bash in qualsiasi momento digitando exit() nel terminale.

Visualizzazione prezzi di chiusura

Iniziamo importando le librerie per scaricare e analizzare i dati.

				
					import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader.data as web
				
			

Dopo aver importato le librerie, possiamo scaricare le serie storiche dei prezzi OHLCV tramite Pandas DataReader per ottenere 5 anni di dati storici e inserirli direttamente in un oggetto DataFrame. Il seguente comando scarica i dati Apple OHLCV da Stooq.com. Pandas-Datareader permette di scaricare dati da più fonti tra cui Quandl, AlphaVantage e IEX. In questa pagina sono elencati le fonti dati disponibili in Pandas-Datareader.

				
					aapl = web.DataReader("AAPL", "stooq")
				
			

Ora abbiamo cinque anni di dati Apple memorizzati in un DataFrame. Possiamo visualizzare le prime righe utilizzando il comando Pandas aapl.head().

Dati storici AAPL

Per visualizzare il grafico dei dati è sufficiente digitare le seguenti righe.

 

Da notare che l’ultima riga di codice plt.show(). Questo comando utilizza la libreria Matplotlib.pyplot che abbiamo importato all’inizio. Ci permette di visualizzare direttamente il grafico. Il grafico dei prezzi di chiusura di Apple si aprirà in una nuova finestra.

				
					aapl.plot(y="Close")
plt.show()
				
			
Grafico storico AAPL

Abbiamo creato un semplice script utilizzando Pandas e Pandas-Datareader per importare i dati storici dei titoli azionari da diverse fornitori di dati. Possiamo eseguire semplici script, come tracciare il prezzo di chiusura, fino alla creazione di strategie complesse, utilizzando solo tre librerie Python open source. L’unico problema con questo approccio è che quando usciamo dalla console Python perdiamo tutto il lavoro. Possiamo uscire dalla console Python digitando exit() e quindi disattivare l’ambiente virtuale digitando conda deactivate.

In questo articolo abbiamo descritto come creare un ambiente di ricerca e sviluppo per il trading algoritmico con Python su Linux. Nel prossimo articolo descriviamo come utilizzare Jupyter Notebooks per costruire grafici a candele e medie mobili . C’è un ottimo cheat sheet di Conda disponibile qui, è un riferimento davvero utile nel caso in cui sia necessario controllare rapidamente un comando.

Gli altri articoli di questa serie

Benvenuto su DataTrading!

Sono Gianluca, ingegnere software e data scientist. Sono appassionato di coding, finanza e trading. Leggi la mia storia.

Ho creato DataTrading per aiutare le altre persone ad utilizzare nuovi approcci e nuovi strumenti, ed applicarli correttamente al mondo del trading.

DataTrading vuole essere un punto di ritrovo per scambiare esperienze, opinioni ed idee.

SCRIVIMI SU TELEGRAM

Per informazioni, suggerimenti, collaborazioni...

Scroll to Top