Programmare un Trading System con Python

Le attuali tecnologie informatiche al servizio dell’Analisi Tecnica dei mercati finanziari

Negli anni ’90, nel pieno della mia adolescenza, ho vissuto il periodo del boom dei Personal Computer. Negozi di informatica spuntarono fuori in ogni quartiere della mia città e la rivendita di componenti per computer e di software conobbe un periodo d’oro. Per me e miei amici era normale parlare di informatica e di elettronica, ci piaceva entrare in questi negozi per conoscere le ultime novità di un mercato in continua evoluzione, ci dilettavamo a comprare i componenti di base come processori, schede, monitor, per poi dedicarci all’assemblaggio in casa, con risultati il più delle volte soddisfacenti! Purtroppo, già negli anni 2000 i personal computer divennero progressivamente prodotti più sofisticati, nelle grandi catene di elettronica trovavi prodotti già pronto all’uso e ad ottimi prezzi, senza possibilità di personalizzarli, fino a quando il concetto di “assemblato” divenne sconosciuto, allo stesso livello di altri prodotti di consumo arrivati sul mercato, come smartphone e tablet.

Nel mio piccolo penso di aver vissuto un’epoca romantica, non era strano vedere un gruppo di amici intorno ad un tavolo con in mezzo un computer completamente smontato, quasi fossimo dei medici in sala operatoria! Quello che per noi era un passatempo, si rivelò invece a distanza di anni un vero e proprio addestramento per le nostre menti: l’elettronica e l’informatica non sono delle scatole nere, bisogna prediligere prodotti trasparenti che permettano di comprendere come funzionano al loro interno e di intervenire per adattarlo alle proprie esigenze. Questa mentalità la porto ancora con me e anche se ora “gioco” con l’analisi tecnica dei mercati finanziari, preferisco la strada che porta ad avere il pieno controllo delle mie analisi, che passa per fogli elettronici come Excel o per linguaggi di programmazione, piuttosto che l’uso di software specifici per come TradingView o Pro Real Time, esempi perfetti di “scatole nere”.

In questo articolo, facendo ricorso alle più recenti tecnologie informatiche e alle buone prestazioni dei nostri computer e smartphone, voglio mostrarvi come sia possibile realizzare un’analisi tecnica dei prezzi mantenendo il controllo di ogni passaggio e dove sia lo strumento ad adattarsi alle nostre esigenze. In particolare, vedremo come creare una simulazione di un Trading System, basato su un solo strumento finanziario ed una media mobile (SMA): compra lo strumento quando i prezzi incrociano al rialzo la propria media mobile, vendilo quando i prezzi incrociano al ribasso. Può sembrare un Trading System fin troppo semplice, però lo useremo come caso studio e volendo come punto di partenza per elaborare strategie più elaborate.

Per far ciò, abbiamo bisogno di tre cose: un linguaggio di programmazione, delle serie storiche e una piattaforma. Vediamo di seguito quello che ho scelto, basandomi su due principi cardine fondamenti che sono il libero accesso (nessuna registrazione o installazione di programmi) e la gratuità (cosa sempre gradita):

  • Python è un linguaggio di programmazione, uno dei più usati al mondo. Il suo punto di forza è la sintassi pulita ma potente, è supportato praticamente da qualsiasi piattaforma ed è utilizzato per una miriade di applicazioni che vanno dal web al calcolo scientifico, dall’analisi dati alla finanza. È distribuito liberamente e si trovano molti corsi e tutorial on-line per imparare ad usarlo.
  • Disporre di serie storiche è di fondamentale importanza, senza di queste i nostri Trading System sono delle scatole vuote. Qui useremo Yahoo Finance: l’azienda americana fornisce un servizio web aperto e gratuito che può essere interrogato per restituire le serie storiche in formato testo di una qualsiasi azione, indice o ETF quotato nelle principali piazze borsistiche mondiali.
  • La Google Research ha realizzato un software chiamato Colaboratory, abbreviato in “Colab“. Colab permette a chiunque di scrivere ed eseguire un qualsiasi codice Python sul proprio Browser. Quando è lanciato, il codice è eseguito sui server di Google, senza coinvolgere le risorse del proprio computer. L’accesso è libero per chiunque, non è necessario nessuna installazione e il servizio è fornito gratuitamente, mentre i file creati sono memorizzati nel proprio spazio di Google Drive.

Sembra tutto facile e… in fondo lo è! L’unico requisito è che abbiamo un proprio account Google e un browser web (Chrome, Firefox, Safari, ecc…). Vi consiglio di operare tramite un Personal Computer le prime volte, così da facilitare l’apprendimento di Python e Colab, successivamente è possibile utilizzarli anche sul proprio smartphone, ovunque siate.

Il programma

Per prima cosa, scaricate il seguente file, estraetelo e mettetelo in una cartella del vostro computer:

Collegatevi al seguente sito https://research.google.com/colaboratory/ e accedete tramite il vostro account Google. Una volta eseguito l’accesso, dovreste vedere una finestra come in figura 1, selezionate “Carica” e cercate il file che avete scaricato precedentemente. Nel caso che questa finestra non comparisse, potete sempre andare sulla barra del menù e scegliere file –> carica blocco note.

Figura 1: Schermata al primo accesso in Google Colab

Bene, a questo punto dovreste vedere il codice del programma che ho scritto, come mostrato nella figura 2. Senza addentrarci troppo nei meandri della programmazione, vediamo i principali blocchi che compongono questo file:

  • Dopo il primo blocco con l’importazione delle librerie, troviamo il blocco con la dichiarazione delle variabili. È la parte più importante, nella quale andremo a inserire i parametri del nostro Trading System.
    • La variabile “stock” indica lo strumento che vogliamo analizzare. Questo va scritto in modo che sia compreso da Yahoo Finance, per esempio per azioni ed ETF quotati su Borsa Italiana si usa il ticker seguito da”.MI” (ENI.MI, CSSPX.MI), per azioni statunitensi si usa solo il Ticker (TSLA, MRNA, ecc…), per gli indici si usa il ticker preceduto da “%5E” (%5EIXIC per Nasdaq, %5EDJI per il Dow Jones).
    • La variabile “inizio” riporta la data da cui vogliamo iniziare l’analisi. Nel caso che il titolo selezionato abbia un inizio successivo a questa data (per esempio, titoli quotati da pochi mesi come Coinbase), il software si adatta senza creare un errore.
    • Variabile “media_mobile“, dove si definisce l’intervallo su cui calcolare la media mobile. Fondamentale che il numero sia un intero, altrimenti il programma va in errore.
    • Variabile “capitale“, è il valore di partenza del nostro portafoglio.
  • I due blocchi che seguono quelli delle variabili è il cuore del programma. Il codice Python prende dal sito di Yahoo i prezzi del titolo che abbiamo scelto, rielabora i dati e calcola la SMA e due Equity Line, una senza ed una con il filtro SMA.
  • I blocchi finali creano due grafici, uno con l’andamento temporale dei prezzi e della SMA, l’altro le due Equity Line, e un file Excel con tutti i dati calcolati dal programma.
Figura 2: Google Colab dopo il caricamento del file

Per utilizzare il programma, è sufficiente impostare i dati all’interno del blocco “variabili” poi selezionare “Runtime” nella barra dei menù, seguito da “Esegui Tutte”. Lasciamo che il programma elabori i dati e che restituisca i grafici, che potete trovare in fondo alla pagina.

Prendiamo ad esempio i seguenti dati:

  • Stock = ‘BTC-EUR’
  • Inizio = ’01-01-2012’
  • media_mobile = 128
  • Capitale = 1000

Stiamo chiedendo al nostro programma di recuperare i prezzi giornalieri del Bitcoin quotato in Euro, di utilizzare i dati seguenti al 1 gennaio 2012, di usare una media mobile a 128 giorni e di partire con un capitale di 1000€. Il programma creerà due grafici interattivi, che permettono di zoomare oppure di salvarli per usi successivi. Per quanto riguarda il file Excel, questo è salvato all’interno di Colab con il nome “Equity.xlsx” ed è visibile nella barra laterale di sinistra (figura 3), se vogliamo portarlo in locale nel nostro computer o smartphone è sufficiente clikkarci sopra con il tasto destro.

Figura 3: File Excel generato dal programma

Dopo aver preso un po’ di pratica, sono sicuro che troverete utile uno strumento che fa della semplicità il suo punto di forza! Però le note dolenti non mancano, se da un lato i dati Yahoo Finance sono incredibilmente facili da accede, dall’altro la loro qualità non è ottima: molte serie storiche sono mancanti, come nel caso del Bitcoin quotato in Euro dove i dati sono disponibili solo dal 2019, così come alcuni indici, dove pesa l’assenza del nostro FTSE MIB, mentre per titoli azionari non ci sono particolari problemi, i dati sono completi e con molti anni di profondità. In fin dei conti non c’è da lamentarsi, “poco pagare, poco avere!”.

Figura 4: Serie Storica dei prezzi di BTC-EUR e SMA(128)
Figura 5: Equity Line di BTC-EUR con e senza filtro SMA(128)

In chiusura

La mia generazione è quella che ha vissuto il passaggio da un tecnologia prettamente analogica ad una digitale, con l’adozione di massa di internet, e-mail, SMS, MP3, personal computer e telefonia mobile. Il livello di complessità era ancora tale che chiunque avesse una passione per l’informatica e l’elettronica avrebbe compreso con chiarezza i funzionamenti e le caratteristiche di questi prodotti. Con questo approccio, dove è la macchina che si deve orientare alle esigenze dell’utente, ho realizzato questo programma che rende visibile tutti i meccanismi che ci sono dietro e soprattutto permette di averli sotto il proprio controllo. Tra i più avvezzi alla programmazione informatica, sono sicuro che non sarà difficile modificare e modellare questo codice a proprio piacimento, per ottenere nuove analisi.

Prossimamente ho in mente di scrivere un codice che permetta di analizzare la natura di uno strumento finanziario, se è trend follower o mean reverting, nel frattempo se volete approfondire l’uso di Colab e di Python, segnalo l’ottimo tutorial di Claudio Cama disponibile su You Tube a questo indirizzo, mentre se volete approfondire l’importanza delle serie storiche, vi rimando al mio articolo Serie Storiche la Cartografia per i Trading Systems.

Buon coding e buon trading!



Se hai domande o curiosità da chiedermi, non esitare a scrivermi nel modulo qui in basso, oppure mi trovi su Facebook e su LinkedIn. Se vuoi rimanere sempre aggiornato e non perderti nessun articolo appena esce, iscriviti alla newsletter compilando il seguente modulo:

Se apprezzi i miei articoli e il progetto MP Investit, puoi sostenermi con un contributo libero tramite PayPal o con una ricompensa del browser Brave. Questo mi motiva e mi incentiva a produrre contenuti sempre migliori. Grazie!

Articoli simili

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

3 Commenti

  1. Ho gradito molto questo post, sia dal punto di vista tecnico (il COME) sia da quello culturale (il PERCHE’).
    Attendo con ansia il prossimo contributo, inseguitore vs rompitore di tendenza, sempre che partendo dalla tua base non provi a farlo da me.
    Grazie