Di tutto un pò sul mondo della tecnologia e non solo!

Bot Crypto con Reinforcement Learning – Aggiornamento 7 Aprile 2026

Premessa

Da oggi in poi, nel sito di Megalinux sarà presente la sezione “Diario di un Bot Crypto” in cui saranno pubblicati gli articoli relativi allo sviluppo di un bot finanziario basato su un modello di apprendimento per rinforzo o di reinforcement learning. Prima di applicare tale modello bisogna simulare il problema e l’ambiente dell’agente con dei dati reali. In questo caso, ho preso come riferimento un asset ben specifico e i dati di un mercato reale, ossia la coppia ETHBTC presente nell’exchange Binance.

L’algoritmo di reinforcement learing è ancora in una fase iniziale in cui vengono eseguite frequenti modifiche al codice, definiti i premi e le penalità. Lo scopo di questa serie di articoli è prettamente divulgativo e non pretende di rappresentare lo stato dell’arte dello sviluppo di un bot di questo tipo. Infine, aggiungo, come questi articoli siano in parte generati dalla risposta di un prompt AI e poi modificati successivamente. Ciò mi permette di concentrarmi meglio sull’obiettivo e sul contenuto dell’articolo.

Tengo a precisare che ogni articolo pubblicato riguarda l’analisi delle ultime cinque sessioni di apprendimento basato su un modello di reinforcement learning e in particolare la versione Rainbow DQN durante le quali il codice cambia continuamente i parametri del modello che costituiscono l’input della rete neurale.

Le sezioni di ogni articolo saranno costituite da una panoramica del periodo di riferimento in cui è stato eseguita tale analisi sulle cinque sessioni, dai valori delle metriche chiave dell’apprendimento dell’algoritmo, da una breve sessione che spiega quali modifiche sono state apportate, da una parte importante sul comportamento dell’agente, da una sezione sui problemi, sulle sfide aperte e sui prossimi passi e infine dalla conclusione vera e propria. Ma andiamo con ordine e iniziamo con l’articolo vero e proprio.

Panoramica del Periodo

Nel periodo analizzato, che va dal 3 aprile al 7 aprile 2026, il sistema di trading basato su Rainbow DQN ha completato 5 sessioni di training per un totale di 88 episodi. Si tratta di un volume di addestramento ancora limitato rispetto all’obiettivo di 6000 episodi per sessione che sono stati previsti, a indicare che il processo di training è nelle sue fasi iniziali e che molto lavoro rimane davanti.

Il quadro generale mostra un agente ancora in piena fase esplorativa: l’epsilon (il parametro che governa quanto l’agente sceglie azioni casuali rispetto a quelle apprese) parte da circa 0.99 e scende progressivamente fino a valori intorno a 0.21-0.31 nelle sessioni più lunghe. Questo significa che l’agente sta gradualmente spostando il proprio comportamento dall’esplorazione casuale verso decisioni più guidate dalla rete neurale, ma è ancora lontano dal regime di sfruttamento stabile.

Dal punto di vista operativo, la maggior parte delle sessioni non ha prodotto trade reali misurabili nelle statistiche finali di sessione — con la sola eccezione della Sessione 5, che ha rappresentato un run brevissimo di circa 2 minuti con un singolo episodio. Il training vero e proprio si sta svolgendo a livello di episodi interni, dove emergono segnali contrastanti sull’andamento dell’apprendimento.

Metriche Chiave

Per quanto concerne le metriche chiave ho scelto i seguenti valori di cui ho spiegato di seguito di cosa trattano. Iniziamo, con il termine Sessione per poi termine con il termine Epsilon Finale.

Sessione

La sessione rappresenta l’identificativo del ciclo di addestramento. Ogni sessione corrisponde a un’esecuzione autonoma del modello, durante la quale l’agente apprende dai dati disponibili. Questo parametro consente di distinguere tra diversi esperimenti, confrontare configurazioni differenti e tracciare nel tempo i risultati ottenuti. In contesti strutturati, la sessione può essere associata a una data, a un identificativo univoco o a una specifica configurazione del modello.

Episodi caricati

Gli episodi caricati indicano il numero di simulazioni utilizzate per l’analisi. In Reinforcement Learning, un episodio rappresenta un ciclo completo di interazione tra agente e ambiente, ad esempio una sequenza di operazioni di trading su un determinato intervallo temporale. Un numero elevato di episodi garantisce una maggiore robustezza statistica, permettendo di ridurre l’impatto di comportamenti casuali e di osservare trend più affidabili.

Reward inizio

La reward iniziale rappresenta il valore medio (o complessivo) della ricompensa ottenuta dall’agente nelle prime fasi del training. Questo indicatore riflette lo stato iniziale del modello, quando l’agente non ha ancora sviluppato una strategia efficace e agisce in modo prevalentemente casuale. In molti casi, la reward iniziale è bassa o negativa, evidenziando una fase di apprendimento ancora acerba.

Reward fine

La reward finale descrive il livello di performance raggiunto dall’agente negli ultimi episodi del training. Questo valore è fondamentale per comprendere se il modello ha effettivamente imparato a prendere decisioni vantaggiose. Un incremento significativo rispetto alla reward iniziale indica un miglioramento della strategia e una maggiore capacità di adattamento all’ambiente.

Trend Reward

Il trend della reward rappresenta l’andamento della performance nel tempo. Più che il valore assoluto, è importante osservare la direzione di questo indicatore. Un trend crescente suggerisce che l’agente sta apprendendo in modo efficace, mentre un andamento piatto può indicare una fase di stagnazione. Un trend decrescente, invece, può essere sintomo di problemi nel training, come overfitting o instabilità del modello.

Win Rate inizio

Il win rate iniziale indica la percentuale di operazioni vincenti nelle prime fasi del training. In questa fase, l’agente non dispone ancora di una strategia strutturata e il valore tende a riflettere un comportamento casuale. Questo indicatore fornisce quindi una base di riferimento per confrontare i miglioramenti successivi.

Win Rate fine

Il win rate finale rappresenta la percentuale di operazioni vincenti raggiunta al termine del training. Sebbene possa sembrare un indicatore intuitivo di successo, deve essere interpretato con cautela. Un alto win rate non garantisce necessariamente una strategia profittevole, soprattutto se le perdite sono più consistenti dei guadagni. Per questo motivo, è sempre opportuno analizzarlo insieme alla reward e al drawdown.

Loss finale

La loss finale misura l’errore del modello nel predire i valori associati alle azioni. Nei modelli basati su Deep Q-Learning, questo indicatore rappresenta la differenza tra i valori Q stimati e quelli target. Una riduzione della loss nel tempo indica che il modello sta convergendo verso una rappresentazione più accurata dell’ambiente. Tuttavia, valori eccessivamente bassi possono anche segnalare un rischio di overfitting, ovvero una scarsa capacità di generalizzazione.

Drawdown medio

Il drawdown medio rappresenta la perdita media rispetto ai picchi di valore del capitale nel corso delle simulazioni. Questo indicatore è particolarmente rilevante nel trading, poiché misura la stabilità della strategia. Un drawdown contenuto indica una gestione del rischio più efficace, mentre valori elevati evidenziano una maggiore esposizione a perdite significative. Spesso, una strategia equilibrata privilegia un drawdown ridotto anche a fronte di una reward leggermente inferiore.

Epsilon finale

L’epsilon finale è un parametro chiave nei modelli di tipo ε-greedy, utilizzati nei DQN per bilanciare esplorazione ed exploitazione. Esso rappresenta la probabilità che l’agente scelga un’azione casuale invece di seguire la strategia appresa. Durante il training, epsilon viene progressivamente ridotto: inizialmente l’agente esplora l’ambiente, mentre nelle fasi finali tende a sfruttare le conoscenze acquisite. Un valore troppo elevato alla fine del training indica che l’agente non ha ancora convergito, mentre un valore troppo basso potrebbe limitare la capacità di adattamento a nuove situazioni.

Dopo aver spiegato il significato delle metriche chiavi, di seguito trovate i valori delle cinque sessioni analizzate.

Tabella 1
(Metriche chiave)

I dati rivelano una situazione complessivamente difficile. I reward cumulativi rimangono fortemente negativi in tutte le sessioni, segnalando che l’agente non riesce ancora a generare valore netto nel periodo di un episodio. La loss di training è però in costante discesa (da valori intorno a 0.15 fino a 0.018-0.064), il che è un segnale positivo: la rete sta imparando qualcosa, anche se non si traduce ancora in performance operative. I drawdown medi abnormi (nell’ordine del 1500-4000%) riflettono l’instabilità comportamentale tipica delle fasi iniziali di esplorazione.

Modifiche Apportate

Confrontando i parametri delle sessioni analizzate, emerge una variazione nel batch size: le Sessioni 1 e 2 utilizzano batch=32, le Sessioni 3 e 4 passano a batch=64, mentre la Sessione 5 impiega batch=128. Tutti gli altri parametri principali (learning rate 0.0001, tau 0.005, replay frequency 4, lookback 50) rimangono costanti tra le sessioni 1-4, suggerendo che la variazione del batch size sia stata la principale leva di sperimentazione in questo periodo.

L’aumento del batch size da 32 a 64 e 128 ha come obiettivo ridurre la varianza degli aggiornamenti del gradiente: campioni più grandi producono stime più stabili del gradiente, il che può aiutare la convergenza in presenza di reward altamente rumorosi come quelli osservati. La Sessione 4, con batch=64, mostra la loss più bassa in assoluto (0.0182), suggerendo una migliore stabilizzazione del training. Tuttavia, con soli 112 episodi per sessione, è difficile trarre conclusioni definitive sull’efficacia di questa modifica.

Va notato onestamente che le variazioni osservate sono limitate e non hanno ancora prodotto un impatto misurabile sulle metriche di performance operative. Il lookback window è rimasto a 50 nelle sessioni 1-4, mentre la Sessione 5, con lookback=100, ha mostrato un comportamento molto diverso con trade effettivi prodotti, ma la durata brevissima (2 minuti, 1 episodio) rende il confronto non significativo.

Analisi del comportamento dell’Agente

Il dato più significativo e preoccupante del periodo è che le Sessioni 1-4 non hanno prodotto alcun trade registrato nelle statistiche finali di sessione (0 trade totali, distribuzione HOLD/BUY/SELL allo 0.0%), nonostante gli episodi interni mostrino attività. Questo indica che le sessioni si sono interrotte prima del completamento o che il meccanismo di aggregazione delle statistiche finali non cattura correttamente l’attività intra-episodio.

La sola eccezione è la Sessione 5, dove in un singolo episodio l’agente ha eseguito ben 184 trade con una distribuzione relativamente bilanciata: HOLD 37.5%, BUY 29.7%, SELL 32.8%. Questo è un segnale di overtrading evidente: 184 operazioni in un episodio di 900 step significano che l’agente cambia posizione con frequenza eccessiva, probabilmente non avendo ancora appreso quando conviene mantenere una posizione aperta. La configurazione prevede penalità per overtrading (overtrading_penalty_scale=0.003), ma queste non sembrano ancora sufficienti a scoraggiare questo comportamento nelle primissime fasi.

Il win rate nelle statistiche interne degli episodi oscilla tra il 39% e il 53%, con una tendenza generale alla diminuzione nelle sessioni dove il reward peggiora. Solo la Sessione 3 mostra un win rate leggermente crescente (da 51.99% a 53.01%) in concomitanza con un trend di reward negativo, suggerendo che il numero di trade vincenti non basta da solo a determinare la qualità del PnL complessivo.

Problemi aperti e sfide

1. Drawdown medio abnorme: I valori di drawdown medio nelle sessioni 1-4 sono nell’ordine del 1577% – 4030%, valori che non hanno senso in termini di trading realistico e indicano un problema sistemico nel calcolo del drawdown durante le fasi di esplorazione casuale oppure una gestione del rischio assente. Con un epsilon ancora elevato, l’agente compie azioni casuali che distruggono il capitale simulato ripetutamente prima di imparare politiche sensate.

2. Reward cumulativo persistentemente negativo: Tutte le sessioni con dati interni dettagliati mostrano reward che peggiorano nel corso degli episodi (tranne la Sessione 2, dove il trend è +19.65). Le reward negativi di grande entità (fino a -78.84) suggeriscono che la funzione di reward, pur progettata con molteplici componenti (Sharpe, penalità overtrading, bonus HOLD), stia emettendo segnali difficili da ottimizzare per la rete nelle prime centinaia di episodi.

3. Volume di training insufficiente: Con 88 episodi totali su un target di 6000 per sessione, l’agente ha visto una frazione minima dei dati necessari. L’obiettivo di training è ambizioso e il ritmo attuale di avanzamento richiederà un numero molto maggiore di sessioni continuative per raggiungere una convergenza significativa.

Prossimi passi

Nel prossimo ciclo di sviluppo, le priorità concrete sono le seguenti:

  • Completare almeno una sessione di training fino a 500+ episodi senza interruzioni, per osservare il comportamento della loss e del reward una volta che l’epsilon scende stabilmente sotto 0.1 e l’agente opera in regime prevalentemente non esplorativo.
  • Investigare il calcolo del drawdown: valori medi superiori al 1000% sono anomali e richiedono un’analisi del codice di ambiente per verificare che il drawdown venga resettato correttamente a ogni episodio e che non accumuli errori numerici durante le fasi di esplorazione intensa.
  • Verificare la raccolta delle statistiche finali di sessione: le Sessioni 1-4 mostrano 0 trade totali nelle statistiche aggregate, il che contraddice la presenza di attività interna agli episodi. È necessario accertare se si tratti di un bug nel sistema di logging o di una caratteristica intenzionale del flusso di esecuzione.
  • Valutare un confronto sistematico batch=32 vs batch=64 su sessioni di pari durata, per isolare l’effetto di questa variabile sui valori di loss e reward a parità di altri parametri.

Conclusioni

Il sistema Rainbow DQN per il trading crypto è ancora nelle primissime fasi del suo percorso di apprendimento: 88 episodi su un obiettivo di migliaia, reward fortemente negativi, drawdown anomali e assenza di trade operativi nelle statistiche finali di quattro sessioni su cinque. L’unico segnale incoraggiante è la costante riduzione della loss di training, che conferma che la rete neurale sta aggiornando i suoi pesi in modo stabile. Sarebbe scorretto presentare questo come un progresso operativo: il modello sta faticando, e le sfide davanti volume di training, stabilità del reward, overtrading richiedono ancora settimane di lavoro prima che emergano comportamenti strategici significativi. La trasparenza su questi risultati è parte integrante di un processo di sviluppo serio.

Spero che l’articolo vi sia piaciuto, ma se qualcuno volesse esporre una qualche perplessità o domanda non esitate a “postare” dei commenti o ad inviarmi un e-mail a webmaster@megalinux.cloud.

Sostenete The Megalinux: In un mare di siti web sovraccarichi di pubblicità invadente, The Megalinux si distingue come l’unico rifugio libero da annunci. Abbiamo scelto di offrirvi un’esperienza di navigazione pulita e ininterrotta, ma per fare ciò, abbiamo bisogno del vostro supporto. Considerate l’idea di contribuire alla nostra missione inviando Bitcoin al nostro indirizzo. Anche una piccola donazione può fare la differenza e ci aiuterà a mantenere il sito libero da pubblicità.

È davvero difficile immaginare che esista qualcuno che, indipendentemente dalle donazioni ricevute (che non ci sono), continui a scrivere in totale libertà, tutto ciò o quasi che trova interessante?

3LpoukFpvDHTZPn5qGbLwUzve3rX9zsSq6

QR Code donazione Bitcoin

No votes yet.
Please wait...

Lascia un commento

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

4 × 1 =

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.