top of page
  • Immagine del redattoreNevro Cerasani

Il Deep Reinforcement Learning nel trading algoritmico di criptovalute

Negli ultimi anni il volume delle attività di trading svolte per via telematica è notevolmente aumentato. Secondo uno studio recente, nel 2019 circa il 92% del trading nel mercato Forex è stato eseguito da algoritmi e si prevede che crescerà a un CAGR (Compound Annual Growth Rate) dell'11,23% dal 2021 al 2026.



Lo scopo di questo studio è sviluppare un sistema di trading algoritmico basato sull'apprendimento per rinforzo profondo e testarlo rispetto ad alcune strategie di trading già note.


L'apprendimento per rinforzo è definito come "il problema affrontato da un agente che apprende il comportamento attraverso interazioni per tentativi ed errori con un ambiente dinamico". Al centro di un modello di apprendimento per rinforzo c'è l'interazione di due componenti:

- Agente: colui che sviluppa la policy ottimale, ovvero l'insieme di azioni ottimali da intraprendere in una particolare situazione al fine di massimizzare una funzione di ricompensa definita dall'utente;

- Ambiente: il “mondo” dell'agente, dove avviene il processo di apprendimento. Quando l'agente compie un'azione, l'ambiente restituisce un nuovo stato e l'agente si sposta in esso: questo processo continua fino alla fine dei cosiddetti episodi.


Quando si parla di policy ci si riferisce al “modo di comportarsi dell’agente in un dato momento”. La policy ottimale è quella che massimizza la funzione di ricompensa, ovvero una misura definita dall'utente che rappresenta, in un certo senso, l'obiettivo del problema di apprendimento per rinforzo. Ad ogni fase del processo di apprendimento, l'agente “fornisce” un segnale di ricompensa rappresentato dalla frazione della ricompensa totale guadagnata/persa in quella fase; alla fine di tutti gli step componenti un episodio, tutti questi segnali di ricompensa vengono sommati e il risultato sarà la ricompensa totale.


Quando si ha a che fare con stati discreti (come in una partita a scacchi con un insieme finito di mosse) l'agente apprende (sviluppa la politica ottimale) utilizzando una procedura tabulare chiamata Q-Learning, che cosiste fondamentalmente nell'utilizzare aggiornamenti iterativi basati sull'equazione di Bellman e memorizzare i risultati nella cosiddetta Q-Table. Al contrario, gli stati continui (come quando si tratta di serie temporali finanziarie in cui il prezzo successivo può essere qualsiasi numero positivo) implicano un numero infinito di valori che rende impossibile tabularli. Pertanto, adottiamo una soluzione chiamata Deep Q Learning, che, in parole povere, consiste nello stimare il valore delle azioni disponibili per un dato stato utilizzando una rete neurale.


Le strategie di trading che ho preso come benchmark per verificare come si comporta il modello sono:

- Buy & Hold: consiste semplicemente nel comprare all'inizio del periodo e vendere alla fine;

- Moving Average Crossover: per questa strategia, calcoleremo due medie mobili: la MA di breve termine (finestra più corta) e la MA di lungo termine (finestra più ampia). La strategia consiste nell'acquistare quando la MA a breve termine incrocia al rialzo la MA a lungo termine, e vendere nella situazione opposta (la MA a breve termine incrocia al ribasso la MA a lungo termine).


Per eseguire gli esperimenti è stata utilizzata la seguente configurazione:

- Linguaggio di programmazione: Python;

- L'agente di Deep Reinforcement Learning è stato addestrato per 100 episodi utilizzando i prezzi orari di tre criptovalute (BTC, ETH, XRP) nell'intervallo di tempo dal 30/10/2019 al 30/10/2020;

- Per tutte e tre le strategie il capitale iniziale era di € 1.000.000, diviso per 3 (numero di asset), per finire con € 333.333 per ogni criptovaluta. Questo è stato fatto per evitare una situazione in cui non ci sarebbero più soldi per eseguire la strategia perché abbiamo già investito tutto;

- Abbiamo ipotizzato zero commissioni;

- Per analizzare come si comportano i diversi modelli nelle diverse situazioni, sono stati testati in quattro diversi scenari:

- Buono: un bimestre in cui i prezzi salgono prevalentemente, dal 30/11/2020 al 31/01/2021; - Male: un bimestre in cui i prezzi scendono prevalentemente, dal 30/11/2021 al 31/01/2022; - Stazionario: un bimestre in cui i prezzi salgono e scendono, dal 31/05/2021 al 31/07/2021; - Generale: un anno in cui i prezzi salgono e scendono, simile a quello stazionario ma più ampio (e quindi più rappresentativo della realtà), dal 30/10/2020 al 30/10/2021. I risultati ottenuti in questo scenario non sono confrontabili con gli altri a causa dei diversi timeframe, tuttavia ho deciso di mostrarli gli stessi per mostrare il comportamento della strategia nel lungo periodo.


Sono stati ottenuti i seguenti risultati:



I risultati ottenuti mostrano che i risultati sono tutti più o meno in linea, ma per semplicità le commissioni non sono state incluse nella simulazione, la strategia buy and hold non è molto informativa in quanto sostanzialmente segue semplicemente il mercato senza poter realizzare un profitto o ridurre le perdite durante i periodi difficili e il nostro modello sembra essere il più avverso al rischio, poiché durante i periodi buoni ottiene un profitto inferiore, ma durante i periodi difficili è anche in grado di contenere le perdite. Inoltre, è l'unico modello in grado di realizzare un profitto nello scenario stazionario! Come ho accennato, per semplicità le commissioni non sono coinvolte nella simulazione, ma in realtà esistono e sono dell'ordine dello 0,5% per operazione. Normalmente sarebbe un importo insignificante, ma se osserviamo il grafico a sinistra possiamo notare l'alto numero di operazioni eseguite quando si utilizza la strategia di crossover della media mobile rispetto alle altre, il che significa che le commissioni potrebbero erodere il profitto o peggiorare ulteriormente le perdite in modo significativo. Sulla destra, invece, una rappresentazione visiva dei rendimenti raggiunti da ciascuna strategia in ogni scenario.


Quando si lavora con l'AI, sono coinvolti un numero infinito di parametri e la modifica di uno di essi potrebbe comportare risultati completamente diversi. Questa è un'arma a doppio taglio perché se da un lato mostra l'eccessiva variabilità di questi modelli, dall'altro potrebbe esserci un'alta probabilità che se continuassimo a provare e a modificare i parametri, ad un certo punto potrebbe venir fuori un setup in grado di superare tutti gli altri modelli e agenti. Detto questo, oltre alla messa a punto dei parametri, di seguito alcuni dei miglioramenti più significativi che possono aiutare a migliorare il modello:


- Costruire un modello di apprendimento automatico che prevede il prezzo di un asset per il passaggio temporale successivo e quindi aggiungere tale previsione allo stato, in modo che l'agente possa tenerne conto quando agisce;

- Sostituisci i prezzi con i rendimenti, poiché questi sono generalmente stazionari e le reti neurali funzionano meglio con questo tipo di dati in alcune situazioni;

- Integrazione di una soluzione di elaborazione del linguaggio naturale che analizzi il sentiment su un determinato asset eseguendo una cosiddetta sentiment analysis sui social network (Twitter è il più utilizzato per questo tipo di attività). Quindi, aggiungere il risultato di questa analisi (generalmente un numero compreso tra 0 e 1) nello stato in modo che l'agente possa anche tenere conto di come si sentono gli investitori riguardo all'investimento in un determinato asset in un momento specifico. Tuttavia, questo potrebbe porre alcuni problemi, come la difficoltà di raccogliere dati (tweet in questo caso) di 3 anni prima per il training del modello.

30 visualizzazioni0 commenti
bottom of page