Trading finanziario con l’intelligenza artificiale

L’ambizione di molti trader è quella di creare un sistema automatico o quasi automatico, in grado di generare enormi profitti sui mercati finanziari, ma sarà veramente così facile? Sarà sufficiente affidarsi solo alle macchine e ai loro algoritmi? In questo articolo esploreremo come l’Intelligenza Artificiale sta cambiando il mondo del trading e come si stanno cercando di superare le sfide che si presentano.
Le opportunità offerte dall’AI ai trader
La capacità dell’AI di analizzare grandi quantità di dati le permette di identificare tendenze e modelli nel mercato, aiutando gli investitori a prendere decisioni informate sulle strategie di trading.
Gli algoritmi di machine learning possono essere impiegati per prevedere il comportamento futuro del mercato, aiutando gli investitori a prendere decisioni in tempo reale.
Sistemi di AI servono anche per monitorare continuamente il portafoglio di un investitore e suggerire modifiche per ridurre il rischio di perdite.
Sono molti gli algoritmi che gestiscono già in modo automatico le operazioni di trading, sulla base delle regole predefinite, senza la necessità di intervento umano. Per esempio, MetaTrader è una piattaforma di trading online utilizzata da milioni di trader in tutto il mondo. Ciò che rende MetaTrader unica è la sua capacità di consentire ai trader di programmare i propri algoritmi e di utilizzarli per effettuare scambi automatici attraverso gli Expert Advisor. MetaTrader utilizza il linguaggio di programmazione MQL4 e MQL5, che offre agli utenti la flessibilità di creare script personalizzati, indicatori tecnici e addirittura robot di trading completamente automatizzati. Grazie a questo, i trader hanno la possibilità di automatizzare le loro strategie di trading e di gestire le loro posizioni 24 ore su 24, 7 giorni su 7, indipendentemente dal fuso orario.
L’AI può essere addestrata anche per analizzare i dati dei social media e delle notizie per valutare il sentiment del mercato.
Entriamo nel vivo di questo argomento cercando di capire meglio come funzionano gli algoritmi dell’AI prendendo come esempio le operazioni di trading finanziario.
In particolare… dati storici e correlazioni
Nell’analisi dei dati storici, l’AI utilizza tecniche di machine learning per individuare pattern e tendenze nei dati. In particolare, l’AI può utilizzare algoritmi di regressione, clustering e classificazione per identificare relazioni tra variabili e prevedere i valori futuri.
Ad esempio, nel trading, l’AI può utilizzare algoritmi di regressione per individuare relazioni tra il prezzo di un titolo e le variabili correlate, come il volume di scambio, il prezzo di chiusura, il prezzo di apertura, ecc. In questo modo, l’AI può individuare pattern di prezzo e prevedere l’andamento futuro del titolo.
Inoltre, possono essere impiegati anche algoritmi di clustering per raggruppare i dati in gruppi omogenei in base a determinate caratteristiche, come il volume di scambio o il prezzo di chiusura. Questo aiuta gli investitori a identificare i titoli che hanno comportamenti simili e ad adottare strategie di trading più mirate.
Gli algoritmi di classificazione servono a classificare i dati in base a determinate categorie, come “trend positivo” o “trend negativo”. Questo aiuta gli investitori a individuare le opportunità di trading e ad agire di conseguenza.
Gli algoritmi di regressione
Gli algoritmi di regressione sono uno dei principali strumenti utilizzati nell’analisi dei dati e nel machine learning per individuare le relazioni tra variabili e prevedere i valori futuri. In particolare, gli algoritmi di regressione si occupano di modellare la relazione tra una variabile dipendente e una o più variabili indipendenti.
Ci sono diversi tipi di algoritmi di regressione, ma il più comune è la regressione lineare. In questo tipo di regressione, l’algoritmo cerca di modellare la relazione tra la variabile dipendente e una o più variabili indipendenti attraverso una funzione lineare. Ad esempio, se si vuole prevedere il prezzo di un titolo in base alla variazione del prezzo di un’altra azione, l’algoritmo di regressione lineare cercherà di trovare una relazione lineare tra le due variabili.

Il processo di regressione lineare prevede generalmente tre fasi:
1 Raccolta dei dati: l’algoritmo di regressione richiede un set di dati di training, che includono la variabile dipendente e una o più variabili indipendenti. Questi dati vengono utilizzati per allenare il modello.
2 Stima del modello: l’algoritmo cerca di stimare la relazione tra la variabile dipendente e le variabili indipendenti utilizzando i dati di training. In particolare, l’algoritmo cerca di minimizzare l’errore tra i valori stimati e i valori reali.
3 Valutazione del modello: una volta che il modello è stato stimato, viene testato sui dati di test per verificare la sua accuratezza e la sua capacità di generalizzare su nuovi dati.
Un esempio troppo semplice ma chiarificatore : prezzo e volumi di scambio
Supponiamo di avere un dataset che contiene il prezzo di un titolo e il volume di scambio per un certo periodo di tempo. In questo caso, la variabile dipendente sarebbe il prezzo del titolo, mentre la variabile indipendente sarebbe il volume di scambio.
Per applicare l’algoritmo di regressione lineare, dobbiamo dividere il dataset in due parti: una parte per il training e una parte per il testing. Ad esempio, potremmo utilizzare il 70% dei dati per il training e il restante 30% per il testing.
Durante la fase di training, l’algoritmo di regressione lineare cercherà di stimare la relazione tra il prezzo del titolo e il volume di scambio. In particolare, l’algoritmo cercherà di trovare una funzione lineare che descriva la relazione tra le due variabili, in modo da minimizzare l’errore tra i valori stimati e i valori reali.
Una volta che il modello è stato stimato, lo possiamo utilizzare per fare previsioni su nuovi dati. Ad esempio, se vogliamo prevedere il prezzo di un titolo in base al volume di scambio, possiamo utilizzare il modello per stimare il prezzo del titolo in base al volume di scambio corrente.
Realisticamente ci sono più variabili in gioco
Se ci sono più variabili indipendenti in gioco, allora la regressione lineare diventa una regressione multipla. In questo caso, l’algoritmo di regressione cercherà di stimare la relazione tra la variabile dipendente e due o più variabili indipendenti.
Ad esempio, supponiamo di avere un dataset che contiene il prezzo di un titolo, il volume di scambio, la capitalizzazione di mercato e il rapporto prezzo/utili per azione (P/E ratio). In questo caso, avremmo tre variabili indipendenti e una variabile dipendente (il prezzo del titolo).
Durante la fase di training, l’algoritmo di regressione multipla cercherà di stimare la relazione tra il prezzo del titolo e le tre variabili indipendenti. In particolare, l’algoritmo cercherà di trovare una funzione lineare che descriva la relazione tra le variabili, in modo da minimizzare l’errore tra i valori stimati e i valori reali.
Una volta che il modello è stato stimato, lo possiamo utilizzare per fare previsioni su nuovi dati. Ad esempio, se vogliamo prevedere il prezzo di un titolo in base al volume di scambio, alla capitalizzazione di mercato e al P/E ratio, possiamo utilizzare il modello per stimare il prezzo del titolo in base ai valori correnti di queste variabili.
L’accuratezza del modello dipenderà dalla qualità dei dati di training e dal tipo di relazione tra le variabili. In generale, la regressione multipla è molto utilizzata nel trading e nella finanza per prevedere il prezzo di un titolo in base a diverse variabili di mercato.
La regressione multipla in termini matematici
In una regressione lineare multipla, l’obiettivo è stimare una funzione lineare che descriva la relazione tra una variabile dipendente (y) e due o più variabili indipendenti (x1, x2, …, xn). In generale, la funzione lineare ha la seguente forma:
y = b0 + b1x1 + b2x2 + … + bnxn + ε
dove b0, b1, b2, …, bn sono i coefficienti del modello e rappresentano l’intercetta e le pendenze delle variabili indipendenti, rispettivamente. ε rappresenta il termine di errore e tiene conto della varianza residua non spiegata dalle variabili indipendenti.
Per stimare i coefficienti del modello, l’algoritmo di regressione lineare multipla utilizza il metodo dei minimi quadrati. In pratica, questo significa che l’algoritmo cerca di minimizzare la somma dei quadrati degli errori (SSE), ovvero la somma delle differenze tra i valori stimati dal modello e i valori reali. Formalmente, l’equazione che rappresenta la somma dei quadrati degli errori è:
SSE = ∑(yi – ŷi)²
dove yi rappresenta il valore reale della variabile dipendente e ŷi rappresenta il valore stimato dal modello. L’obiettivo dell’algoritmo di regressione lineare multipla è trovare i valori dei coefficienti (b0, b1, b2, …, bn) che minimizzano la somma dei quadrati degli errori.
In pratica, l’algoritmo di regressione lineare multipla utilizza un approccio iterativo per stimare i coefficienti del modello. In ogni iterazione, l’algoritmo cerca di migliorare la stima dei coefficienti, utilizzando i dati di training a disposizione.
Una volta che i coefficienti del modello sono stati stimati, possiamo utilizzare il modello per fare previsioni su nuovi dati. Ad esempio, se vogliamo prevedere il valore della variabile dipendente (y) in base ai valori delle variabili indipendenti (x1, x2, …, xn), possiamo utilizzare la funzione lineare stimata dal modello.
Facciamolo fare all’algoritmo
Il seguente è un codice Python che utilizza la libreria scikit-learn per eseguire una regressione lineare multipla:
from sklearn.linear_model import LinearRegression
import numpy as np
# definiamo i dati di training
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
y = np.array([6, 15, 24, 33])
# creiamo un'istanza del modello di regressione lineare multipla
model = LinearRegression()
# addestriamo il modello sui dati di training
model.fit(X, y)
# stampiamo i coefficienti del modello
print(model.intercept_)
print(model.coef_)
In questo esempio, abbiamo definito una matrice X di dimensioni 4×3, dove ogni riga rappresenta un’osservazione con tre variabili indipendenti (x1, x2, x3). Abbiamo inoltre definito un array y che contiene i valori della variabile dipendente.
Abbiamo quindi creato un’istanza del modello di regressione lineare multipla utilizzando la classe LinearRegression di scikit-learn. Successivamente, abbiamo addestrato il modello sui dati di training utilizzando il metodo fit().
Infine, abbiamo stampato i coefficienti del modello utilizzando le proprietà intercept_ e coef_ dell’oggetto LinearRegression.
I coefficienti del modello sono composti da un intercetta e tre pendenze (in questo caso, una per ogni variabile indipendente). I coefficienti ci danno un’idea di come ogni variabile indipendente contribuisce alla stima del valore della variabile dipendente.
Facciamo il test del modello
Ecco un esempio di codice Python che utilizza il modello di regressione lineare multipla addestrato nell’esempio precedente per fare previsioni su un nuovo set di dati:
# definiamo un nuovo set di dati di test
X_test = np.array([[2, 4, 6], [3, 5, 7], [8, 9, 10]])
# facciamo previsioni utilizzando il modello addestrato
y_pred = model.predict(X_test)
# stampiamo le previsioni
print(y_pred)
In questo esempio, abbiamo definito un nuovo set di dati di test rappresentato dalla matrice X_test di dimensioni 3×3. Abbiamo poi utilizzato il metodo predict() dell’oggetto LinearRegression per fare previsioni sulla variabile dipendente y utilizzando le variabili indipendenti X_test.
Infine, abbiamo stampato le previsioni del modello utilizzando la funzione print(). Le previsioni sono rappresentate dall’array y_pred.
Addestriamo il modello
Esistono diverse tecniche per valutare l’accuratezza di un modello di regressione lineare multipla e migliorare i coefficienti. Una delle tecniche più comuni è la regressione lineare multipla con regolarizzazione, che include un termine di regolarizzazione nel modello per prevenire il sovradattamento.
Ecco un esempio di codice Python che utilizza la regressione lineare multipla con regolarizzazione per addestrare e testare un modello di regressione lineare multipla:
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
import numpy as np
# definiamo i dati di training e di test
X_train = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
y_train = np.array([6, 15, 24, 33])
X_test = np.array([[2, 4, 6], [3, 5, 7], [8, 9, 10]])
y_test = np.array([10, 14, 25])
# creiamo un'istanza del modello di regressione lineare multipla con regolarizzazione
model = Ridge(alpha=0.5)
# addestriamo il modello sui dati di training
model.fit(X_train, y_train)
# facciamo previsioni utilizzando il modello addestrato
y_pred = model.predict(X_test)
# valutiamo l'accuratezza del modello utilizzando il mean squared error
mse = mean_squared_error(y_test, y_pred)
print("Mean squared error:", mse)
# stampiamo i coefficienti del modello
print("Intercept:", model.intercept_)
print("Coefficients:", model.coef_)
# definiamo i dati di training e di test
X_train = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
y_train = np.array([6, 15, 24, 33])
X_test = np.array([[2, 4, 6], [3, 5, 7], [8, 9, 10]])
y_test = np.array([10, 14, 25])
# creiamo un'istanza del modello di regressione lineare multipla con regolarizzazione
model = Ridge(alpha=0.5)
# addestriamo il modello sui dati di training
model.fit(X_train, y_train)
# facciamo previsioni utilizzando il modello addestrato
y_pred = model.predict(X_test)
# valutiamo l'accuratezza del modello utilizzando il mean squared error
mse = mean_squared_error(y_test, y_pred)
print("Mean squared error:", mse)
# stampiamo i coefficienti del modello
print("Intercept:", model.intercept_)
print("Coefficients:", model.coef_)
In questo esempio, abbiamo utilizzato la classe Ridge di scikit-learn per creare un’istanza del modello di regressione lineare multipla con regolarizzazione. Abbiamo quindi addestrato il modello sui dati di training utilizzando il metodo fit().
Successivamente, abbiamo utilizzato il metodo predict() dell’oggetto Ridge per fare previsioni sulla variabile dipendente y utilizzando le variabili indipendenti X_test. Abbiamo valutato l’accuratezza del modello utilizzando la funzione mean_squared_error() di scikit-learn.
Infine, abbiamo stampato i coefficienti del modello utilizzando le proprietà intercept_ e coef_ dell’oggetto Ridge.
e se la correlazione non é lineare?
Se la relazione tra le variabili dipendenti e indipendenti non è lineare, la regressione lineare multipla potrebbe non essere in grado di fornire previsioni accurate. Ciò potrebbe verificarsi quando la relazione tra le variabili è curvilinea o quando le variabili sono altamente correlate tra loro.
In questi casi, è possibile utilizzare modelli di regressione non lineari, come la regressione polinomiale o la regressione logistica. Tuttavia, questi modelli richiedono solitamente un maggior numero di dati e un maggior grado di complessità per calcolare i coefficienti e fare previsioni accurate.
Nell’ambito del trading quali potrebbero essere le variabili correlate?
Oltre al prezzo e ai volumi di scambio esistono vari indicatori e oscillatori utili che mostrano delle correlazioni.
Gli indicatori di analisi tecnica che possono essere utilizzati insieme per addestrare un algoritmo di regressione multipla dipendono dallo specifico caso di studio e dallo strumento finanziario che si sta analizzando. In generale, gli indicatori che possono essere utilizzati per addestrare un algoritmo di regressione multipla includono il Moving Average, il MACD, l’RSI e le Bollinger Bands.
Ad esempio, si potrebbe utilizzare una combinazione di Moving Average e MACD per identificare i possibili trend di mercato,

mentre l’RSI e le Bollinger Bands potrebbero essere utilizzati per identificare possibili zone di impercomprato e ipervenduto.

Per addestrare una rete neurale, invece, si possono utilizzare gli stessi indicatori di analisi tecnica, ma il processo di addestramento della rete neurale sarebbe più complesso e richiederebbe un maggior numero di dati storici di mercato. Inoltre, si potrebbero utilizzare altre variabili, come i dati macroeconomici, i dati delle transazioni degli investitori o le notizie di mercato, per migliorare la capacità predittiva della rete neurale.
Tuttavia, l’utilizzo di una combinazione di indicatori di analisi tecnica e altre variabili per addestrare un algoritmo di regressione multipla o una rete neurale richiede una corretta gestione del rischio e una conoscenza approfondita del mercato finanziario.
e i dati macroeconomici dove li mettiamo?
I dati macroeconomici, come i tassi d’interesse, le quotazioni del dollaro e gli utili aziendali, possono fornire importanti informazioni sull’economia e sui mercati finanziari. Questi dati possono essere utilizzati per addestrare una rete neurale al fine di migliorare la sua capacità predittiva.
Ad esempio, i tassi d’interesse della FED possono influire sulle valute, sui tassi di interesse dei prestiti e sulle azioni delle società finanziarie. Il valore del dollaro può influire sulle esportazioni delle aziende e sui tassi di cambio tra le valute. Gli utili aziendali possono essere utilizzati per valutare la salute finanziaria delle società quotate in borsa.
Per addestrare una rete neurale utilizzando i dati macroeconomici, è necessario acquisire e preparare i dati in modo che possano essere utilizzati dall’algoritmo di apprendimento automatico. In generale, i dati macroeconomici sono forniti in formato tabellare e possono essere utilizzati per creare insiemi di dati di addestramento, di convalida e di test. Una volta preparati i dati, possono essere utilizzati per addestrare una rete neurale utilizzando tecniche di apprendimento supervisionato, come la regressione.
L’obiettivo dell’utilizzo di dati macroeconomici nell’addestramento di una rete neurale è quello di fornire alla rete neurale un’ampia gamma di informazioni per poter fare previsioni più accurate sui movimenti del mercato finanziario. Tuttavia, è importante notare che l’utilizzo di dati macroeconomici può rendere più complessa la creazione del modello e richiedere una conoscenza approfondita del mercato finanziario.
La questione dell’efficienza del mercato
Un problema nell’utilizzo di dati macroeconomici nell’addestramento di una rete neurale può essere rappresentato dalla cosiddetta “efficienza del mercato“, ovvero il fatto che molte informazioni (compresi i dati macroeconomici) potrebbero già essere scontate nei prezzi attuali del mercato.
In altre parole, se i dati macroeconomici sono già conosciuti e scontati dai traders prima dell’annuncio ufficiale, allora l’impatto dell’annuncio stesso potrebbe essere ridotto o addirittura nullo. Questo potrebbe rendere difficile l’utilizzo di questi dati per fare previsioni sui movimenti del mercato finanziario.
È possibile addirittura che dati positivi del mercato possano avere un effetto negativo in un momento in cui ci si aspetta qualcosa di diverso. Per esempio, se ci si aspetta una discesa importante dei prezzi al consumo, un dato positivo sull’economia potrebbe indurre la FED ad un’incremento dei tassi d’interesse e questo influirebbe negativamente sulle aziende quotate.
Meglio limitarsi all’analisi tecnica?
Benché possa sembrare la scelta più semplice, va tenuto presente che i modelli generati dagli algoritmi che si basano solo sul prezzo e sugli indicatori sono troppo poveri d’informazione rispetto alle questioni psicologiche indotte non solo dal prezzo, ma anche dalla realtà macroeconomica tutta. Ci sono molte variabili che possono influenzare il mercato, come le decisioni politiche, i cambiamenti nei tassi di interesse, le fluttuazioni dei tassi di cambio e molti altri fattori.
Anche se i dati storici sui prezzi e gli indicatori sono importanti per identificare trend e modelli di prezzo, non forniscono una comprensione completa delle dinamiche di mercato. Per esempio, la reazione del mercato a un particolare evento o notizia dipenderà anche dalla percezione e dalle emozioni dei trader e degli investitori.
Costantemente Work in progress
Gli algoritmi dell’AI per il trading possono richiedere frequenti riparametrizzazioni per mantenere le loro prestazioni e adattarsi ai cambiamenti nel mercato. Questo perché i mercati finanziari sono dinamici e mutevoli e ciò che funziona oggi potrebbe non funzionare domani. I modelli di intelligenza artificiale devono essere costantemente monitorati e aggiornati in modo da garantire che continuino a fornire previsioni accurate e che siano in grado di adattarsi alle nuove condizioni di mercato. Gli algoritmi di trading richiedono una continua manutenzione e revisione per garantire che le loro prestazioni siano sempre al massimo livello e che le previsioni siano il più preciso possibile.