Modulo 05 / 06
Machine Learning per il Trading
Utilizziamo scikit-learn per la classificazione direzionale e Keras per le reti Long Short-Term Memory (LSTM). Il Machine Learning non sostituisce la comprensione del mercato — la amplifica.
Questo modulo richiede conoscenza di pandas, numpy e dei concetti base di ML (train/test split, overfitting, cross-validation). Se non li hai, completa prima i moduli precedenti.
Feature Engineering
Il feature engineering è il processo di trasformare i dati grezzi di mercato (prezzi, volumi, ordini) in "features", le caratteristiche che catturano in modo efficace i pattern predittivi.
Il feature engineering è la fase più importante del Machine Learning applicato al trading. Nel trading algoritmico, l'80% del successo viene dal feature engineering, solo il 20% dalla scelta del modello. La qualità delle feature, che è dunque qualsiasi grandezza derivata che può aiutare il modello a prevedere movimenti futuri, determina quasi completamente la qualità del modello.
Un buon feature engineering:
- cattura la struttura temporale dei mercati,
- riduce la dimensionalità del problema,
- rende il problema più lineare per il modello,
- incorpora conoscenza di dominio fondamentale,
- previene l'overfitting, che si ha quando il miglioramento delle prestazioni del modello sui dati di allenamento non implica un miglioramento delle prestazioni sui dati nuovi, attraverso la creazione di features robuste.
La chiave è creare features che siano:
- predittive, correlate al target futuro;
- robuste, ovvero stabili nel tempo;
- interpretabili, cioè comprensibili per debugging;
- diversificate che catturano diversi aspetti del mercato.
Il tempo dedicato al feature engineering per trasformare i dati open-high-low-close-volume (OHLCV) grezzi in input significativi per un classificatore è l'investimento a più alto ritorno nello sviluppo di modelli di trading quantitativi.
Classificazione con scikit-learn
Usiamo un Random Forest, algoritmo di machine learning di uso comune che combina i risultati di più alberi decisionali per raggiungere un unico risultato, robusto, resistente all'overfitting, e fornisce l'importanza delle feature. La validazione usa TimeSeriesSplit per rispettare l'ordine temporale dei dati (mai usare K-Fold standard su serie temporali).
Non usare mai train_test_split(shuffle=True) su dati finanziari. Le serie temporali devono essere sempre divise in ordine cronologico. Il futuro non può influenzare il passato. Usa sempre TimeSeriesSplit per la cross-validation.
Reti LSTM con Keras
Le Long Short-Term Memory (LSTM) sono reti neurali ricorrenti (RNN) progettate per sequenze temporali. A differenza dei modelli classici, prendono in input una finestra di T timestep consecutivi, catturando dipendenze temporali a lungo termine.
Un'accuracy del 55% su un classificatore direzionale può essere sufficiente per una strategia profittevole — se le previsioni corrette coincidono con movimenti più grandi delle previsioni errate. L'accuracy da sola non misura il valore del modello.
Pipeline completa: da dati a segnali
Integriamo tutto in una pipeline che produce segnali operativi giornalieri da passare al backtest (modulo 4) o al live trading (modulo 6).
Testa e confronta tre classificatori (Random Forest, Gradient Boosting, SVM) su 3 diversi ticker (AAPL, SPY, BTC-USD) con TimeSeriesSplit a 5 fold. Per ciascun modello:
- Calcola accuracy, precision, recall e F1 out-of-sample
- Integra le previsioni nel backtesting vectorized del modulo 4
- Confronta le metriche di performance della strategia ML vs strategia EMA cross
- Visualizza la feature importance dei due modelli tree-based