top of page
Nicola Matarese

Machine Learning nel Trading usando NEURAL NETWORK-PROPHET

"Produrre previsioni di alta qualità non è un problema facile né per le macchine né per la maggior parte degli analisti. Abbiamo osservato due temi principali nella pratica della creazione di una varietà di previsioni aziendali: Le tecniche di previsione completamente automatiche possono essere fragili e sono spesso troppo inflessibili per incorporare ipotesi o euristiche utili. Gli analisti che possono produrre previsioni di alta qualità sono abbastanza rari perché la previsione è un'abilità specializzata nella scienza dei dati che richiede una notevole esperienza. "

Dal sito web di Facebook Prophet. In questo progetto utilizzeremo l’algoritmo Neural Prophet per la previsione del cross EUR/CHF. Per la trattazione dell’argomento si farà uso del software di programmazione Python in ambiente Jupiter Notebook.


Machine Learning nel Trading usando NEURAL NETWORK-PROPHET
Machine Learning nel Trading usando NEURAL NETWORK-PROPHET

Un mondo di profeti

Quando nel mio primo articolo Introduzione al Machine Leanring per il Trading, inizio di questa avventura divulgativa, abbiamo voluto introdurre i concetti di previsione abbiamo fatto riferimento, con approccio provocatorio, a coloro che soprattutto nel passato pretendevano di prevedere il future basandosi su presunte doti magiche, segno di benevolenza divina, che gli permetteva di affermarsi nelle società del tempo incutendo rispetto e timore. Con il tempo e con il progresso scientifico si è dimostrato che tali poteri paranormali previsionali erano fallimentari per almeno due motivi.


Uno, erano statisticamente non affidabili, razionalmente non giustificabili e pertanto instabili, due, allorquando validi, erano dimostrati tali da una predisposizione mentale che rendeva quelle previsioni vere o verosimili. Fare previsioni significa considerare tutte le caratteristiche (nello spazio e nel tempo) di un fenomeno passato, assegnare ad ognuna di esse un peso di influenza, combinarle tra loro e contestualizzarle ed adattarle in una nuova circostanza.

Posso prevedere con certezza pressochè assoluta che domani avremo un alba e un tramonto, abbastanza accurata se la giornata sarà piovosa, nuvolosa o soleggiata, un po’ meno se devo prevedere dove trovare parcheggio in centro città (tanto piu’ se non conosco la zona). Le previsione é imprescindibile dall’esperienza passata, ma la stessa non ne è garanzia di accuratezza. Come nei teoremi matematici potremmo dire che, a meno di essere sicuro di aver considerato tutte (ma proprio tutte) le variabili, l’esperienza passata è condizione necessaria ma non sufficiente per la bontà della previsione.

Questo é vero a tutti i livelli, dai nostri comportamenti di fronte a determinate situazioni di cui abbiamo esperienza, alle strategie geopolitiche che prendono spunto dalla storiografia, dalle analisi e previsioni di vendita di un attività commerciale, al classico esempio noto a tutti gli studiosi di machine learning sulla potenziale solvibilità di un cliente bancario. Quando parliamo di previsioni di prezzo e andamento di un prodotto finanziario tentiamo di dare una interpretazione di come quel fenomeno, già prodotto risultante di previsoni fatte nel passato (il mercato), possa evolversi sulla base di pattern storici. Un problema fondamentale é quello di determinare quale é il migliore intervallo temporale tra il presente e il passato per elaborare la previsione, e fino a quando.


Se per esempio il trader graficista vuole una previsione giornaliera, deve considerare l’andamento dell’ultimo mese, dell’ultima settimana o dell’ultimo anno?


Machine Learning nel Trading usando NEURAL NETWORK-PROPHET
Machine Learning nel Trading usando NEURAL NETWORK-PROPHET

FACEBOOK PROPHET

Facebook ha sviluppato il software previsionale Prophet disponibile per applicazioni sia in Python che in R. Fornisce parametri intuitivi che sono facili da modulare per cui anche chi non ha una profonda esperienza nei modelli di previsione in serie temporali può usarlo per generare previsioni significative per una vasta varietà di problemi.

Un modello di regressione su modelli che presentano carattere stagionale particolarmente robusto in caso di dati mancanti, spostamenti di tendenza, e nella gestione degli outlier. Prophet utilizza un modello di serie temporale scomponibile in tre elementi principali del modello:

tendenza, stagionalità e interruzioni, combinati nella seguente equazione:


y(t)= g(t) + s(t) + h(t) + εt

  1. g(t): curva di crescita lineare o logistica per modellare i cambiamenti non periodici nelle serie temporali

  2. s(t): cambiamenti periodici (es. stagionalità settimanale/annuale)

  3. h(t): effetti delle interruzioni (per esempio week end e vacanze)

  4. εt: il termine di errore tiene conto di qualsiasi cambiamento insolito non contemplato dal modello.

Usando il tempo come regressore, Prophet inquadra il problema della previsione come un esercizio di adattamento della curva piuttosto che guardare esplicitamente la dipendenza basata sul tempo di ogni osservazione all'interno di una serie temporale. Prophet e la sua evoluzione Neural Prophet vengono considerati come il ponte di collegamento tra le pure tecniche di analisi delle serie temporali e il deep learning (Figura 1)


Rappresentazione dell’ecosistema delle tecniche previsionali
Rappresentazione dell’ecosistema delle tecniche previsionali

NEURAL PROPHET su EUR/CHF

Seguendo il solito principio di costruzione di un codice di machine learning​ ( se ti interessa ne ho parlato dettagliatamente in un articolo ), partiamo con l’importazione delle librerie di gestione tabelle e grafica :

digita i seguenti comandi sul terminale per scaricare le librerie necessarie

Se hai python < 3

pip install yfinance 
pip install neuralprophet

Se hai python >= 3

pip3 install yfinance 
pip3 install neuralprophet

Se stai usando google Colab

!pip install yfinance 
!pip install neuralprophet

Ora crea un nuovo file e iniziamo a scrivere codice.

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

STEP 1 – IMPORTAZIONE E LETTURA DATI

Procediamo con l’impostazione delle funzioni che ci permettono di leggere I valori del cross Euro – Franco Svizzero con ticker EURCHF=X che vogliamo analizzare :


from datetime import datetime 
 
start = datetime (2015,3,8) 
end= datetime (2022,3,8) 
data = yf.download(tickers = EURCHF, start=start, end=end)   

Che da l’output Figura 2

mostra il data set temporale nell'intervallo di tempo selezionato dei valori del Ticker  EURCHF
Mostra il data set temporale nell'intervallo di tempo selezionato dei valori del Ticker EURCHF

STEP 2 – ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI

In questa fase trasformiamo I dati in maniera tale che gli stessi possano essere gestiti dall’algoritmo neuralprophet che utilizzeremo.

closecolumn=data.iloc[:,3] 
closecolumn

L’ultima riga di codice ci darà la possibilità di visualizzare la nuova struttura dati (Figura 3)

mostra i valori di chiusura giornaliera, che sarà oggetto di elaborazione
mostra i valori di chiusura giornaliera, che sarà oggetto di elaborazione

e il suo andamento grafico con le funzioni di plotting (Figura 4)

ottenuta dalla funzione di plotting del codice python rappresenta il grafico del Close  Price EURCHF
Ottenuta dalla funzione di plotting del codice python rappresenta il grafico del Close Price EURCHF

Per utilizzare NeuralProphet dobbiamo operare una ulteriore trasformazione del nostro dataframe eseguendo le seguenti linee di codice :

neuralproheptdataset = closecolumn.reset_index() 
dataprophet = neuralprophetdataset.rename(columns = {“Date”:”ds”, “Close”:”y”}) 
dataprophet 

Che restituisce l’output (F5)

 dataset trasformato per l'elaborazione con Neural Prophet
Dataset trasformato per l'elaborazione con Neural Prophet

STEP 3 – DEFINIZIONE DEL MODELLO

Importiamo la libreria che ci permetterà di implementare neuralprophet ed eseguire le operazioni per esso necessarie con le seguenti istruzioni

from neuralprophet import NeuralProphet 

STEP 4 – ADDESTRAMENTO DEL MODELLO

Con NeuralProphet l’addestramento del modello viene compiuto con le semplici line di codice che seguono dove indichiamo I nostri parametri (tra gli altri notiamo il periodo in cui vogliamo la previsione con n_forecast = periodo previsionale di 30 giorni),


m = NeuralProphet( 

    n_forecasts=30, 

    n_lags=60, 

    n_changepoints=50, 

    yearly_seasonality=True, 
    
    weekly_seasonality=False, 

    daily_seasonality=False, 

    batch_size=64, 

    epochs=100, 

    learning_rate=1.0, 

) 

STEP 5 – VALUTAZIONE AFFIDABILITA’ DEL MODELLO

Come sempre dobbiamo valutare la bontà del nostro modello e capire quando dopo diverse iterazioni di addestramento i valori convergono e diventano stabili per iterazioni successive

metrics = m.fit(dataprophet, freq="D")   
metrics 

In Figura 6 vediamo il riassunto delle metriche.

output del codice python con i parametric di affidabilità del modello
Output del codice python con i parametric di affidabilità del modello

Di cui possiamo vedere anche una rappresentazione grafica (F7)

ottenuta dalla funzione di plotting del codice python dei dati di affidabilità.
Ottenuta dalla funzione di plotting del codice python dei dati di affidabilità.

STEP 6 - PREVISIONE

Avendo costruito il modello ed avendo appurato la sua precisione, se accettabile, procediamo con la previsione futura, a 30 giorno dopo l’ultima data disponibile nel nostro dataset chiamato dataprophet e cioé 7 marzo 2022.

future = m.make_future_dataframe(dataprophet, periods=30, n_historic_predictions=len(roughdata))  

#noi dobbiamo specificare il numero di GIORNI da prevedere 

prediction = m.predict(future) 

in questo modo, operando alcune trasformazioni e lanciando la funzione di plotting abbiamo il grafico in F8.

ottenuta dalla funzione di plotting del codice python che rappresenta l'andamento dei  valori reali con quelli simulati fino a 30 giorni dopo.
Ottenuta dalla funzione di plotting che rappresenta l'andamento dei valori reali con quelli simulati

possiamo a questo punto azzardare anche una previsione a 100 giorni semplicemente cambiando il parametro n_forecast ottenenendo con la stessa serie di istruzioni per il plotting da Figura 9


Ottenuta dalla funzione di plotting che rappresenta l'andamento dei  valori reali con quelli simulati
Ottenuta dalla funzione di plotting che rappresenta l'andamento dei valori reali con quelli simulati

che zoommato da il grafico di Figura 10.

Ottenuta dalla funzione di plotting che rappresenta l'andamento dei  valori reali con quelli simulati
Ottenuta dalla funzione di plotting che rappresenta l'andamento dei valori reali con quelli simulati

Conclusioni

A proposito di futuro, si pensa che in 50 anni le capacità di calcolo delle macchine siano grado di emulare il ragionamento umano; é chiamata AGI, Artificial General Intelligence. C’é chi pensa ad essa come un opportunità, altri come una minaccia. La macchina dovrebbe in teoria sosituire l’uomo nelle cose “complesse” che la macchina riesce a fare bene e meglio (calcoli, gestione dei dati) ma quando lo sostituisce nelle attività comuni (la guida di un autoveicolo) o semplici (servire il caffè, fare il check in in hotel, passare l’aspirapolvere) entriamo in un discorso che affronta una tematica socio culturale simile a quella che ci viene raccontata dei tempi della rivoluzione industriale.


Come ricollocheremo gli addetti (presumiamo non altamente qualificati) che oggi sono impiegati in quei settori?

Per la risposta a questa domanda credo neanche la macchina piu’ avanzata possa aiutarci. Anzi quando entriamo nel campo della fantasia e creatività forse siamo ancora superiori e ancora per un po’ irraggiungibili. Come umani, siamo meno dipendenti da dati di input strutturati rispetto alla macchina perchè abbiamo immaginazione, abbiamo ispirazione, abbiamo sensazioni. Non confondiamo la capacità di progredire con la semplice capacità di fare previsione. Ricordiamo che alla base dell’intelligenza artificiale c’é l’idea di trovare dei pattern storici semplicemente sulla base di un enorme quantità di dati passati. In passato facevamo previsioni dopo aver compreso il fenomeno oggetto di studio ma le stesse non erano accurate quanto quelle che facciamo oggi con AI.


D’altra parte possiamo affermare che l’algoritmo pur analizzando bene i dati e le correlazioni, non comprende in maniera intelligente e consapevolmente quello che sta facendo. Un sistema a guida autonoma riesce a decidere razionalmente, sulla base della sua codifica se in una situazione di pericolo deve proteggere i suoi passeggeri, il bambino che attraversa la strada.


E se oltre al passeggero, il bambino ci fosse anche un ladro che scappa? Chi codifica il livello di priorità e in base a quale criterio?

C’é un grande dibattito sull’etica dei sistemi AI e sulla responsabilità dei vari attori, a partire dai softwaristi agli utilizzatori, fino a quella dello stesso sistema.

Per chi fosse interessato ad ottenere il codice completo e strutturato per un plug and play in

ambiente Jupiter Notebook, richiedetelo pure all’autore all’indirizzo email

nicola.matarese73@gmail.com. NON PERDERTI I PROSSIMI ARTICOLI



 

Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa.

E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale.



 

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page