Modulo 02 / 06
Dati di Mercato
Il carburante di ogni strategia algoritmica sono i dati. Impareremo a scaricare, pulire, arricchire e visualizzare serie storiche di prezzi con yfinance e pandas.
yfinance — scaricare dati storici
yfinance è la libreria Python più usata per scaricare dati finanziari da Yahoo Finance gratuitamente. Supporta azioni, ETF, indici, forex, crypto e futures.
Struttura del DataFrame restituito
yfinance restituisce un oggetto pandas.DataFrame con l'indice di tipo DatetimeIndex. Ecco le colonne principali:
| Colonna | Tipo | Descrizione |
|---|---|---|
| Open | float64 | Prezzo di apertura (aggiustato) |
| High | float64 | Massimo intraday |
| Low | float64 | Minimo intraday |
| Close | float64 | Prezzo di chiusura (aggiustato) |
| Volume | int64 | Numero di azioni scambiate |
| Dividends | float64 | Dividendi distribuiti (se presenti) |
| Stock Splits | float64 | Rapporto di split (es. 4 per split 4:1) |
Pulizia e validazione dei dati
I dati finanziari reali contengono spesso valori mancanti, outlier e discontinuità. Prima di qualsiasi analisi, è necessaria una fase di pulizia sistematica.
Più ticker contemporaneamente
Per analisi di portafoglio o confronti settoriali è necessario gestire dati di più strumenti insieme. yfinance supporta download multipli e pandas offre strutture MultiIndex per gestirli.
Rendimenti e statistiche descrittive
La trasformazione più importante in finance quantitativo è il passaggio dai prezzi ai rendimenti. I prezzi non sono stazionari (cambiano nel tempo), mentre i rendimenti percentuali hanno proprietà statistiche molto più stabili e confrontabili.
r_log = ln(P_t / P_{t-1})
Visualizzazione con matplotlib e plotly
La visualizzazione è fondamentale per capire i dati prima di costruire qualsiasi strategia. matplotlib è ottimo per grafici statici da inserire in report; plotly produce grafici interattivi ideali per l'esplorazione.
Usa plotly durante l'esplorazione interattiva e matplotlib quando vuoi esportare grafici statici in PNG/PDF per report. Per notebook Jupyter, plotly si integra perfettamente con fig.show().
Scarica 2 anni di dati giornalieri per i 5 maggiori titoli del settore tecnologico (AAPL, MSFT, GOOGL, META, NVDA) e costruisci un report che includa:
- Tabella con rendimento, volatilità annualizzata e Sharpe ratio per ciascun titolo
- Grafico a linee normalizzato a base 100 per confrontare le performance
- Matrice di correlazione tra i rendimenti giornalieri (usa
df.corr()) - VaR al 95% e 99% per ciascun titolo