In questo articolo introduciamo le tecniche di analisi dei dati finanziari con Pandas di Python. Solitamente l’analisi finanziaria inizia ponendosi delle domande. In altre parole l’analisi deve essere focalizzata su un preciso obiettivo. L’analisi dei dati finanziari è solo uno strumento, piuttosto che un obiettivo.
Analisi dei dati finanziari
Quindi, per cominciare, proviamo a dare una risposta alle seguenti semplici domande relative ad alcuni titoli azionari:
- Qual è stata la variazione del prezzo nel tempo, insieme al volume scambiato per uno specifico titolo?
- Qual è stato il rendimento medio giornaliero del titolo?
- Qual è la correlazione tra questo titolo e gli altri titoli in esame?
Per effettuare questa analisi usiamo un modulo di python chiamato Pandas. Pandas è un modulo Python assolutamente fantastico; così potente e facile da usare. Il nome deriva dal termine “Panel Data”, un termine econometrico per gli insiemi di dati strutturati multidimensionali.
Pandas si basa su un oggetto chiamato “DataFrame”, che in teoria è simile a una tabella di dati presente in Excel. Credo che l’ampio uso di Excel nel mondo finanziario è quello che ha motivato Wes McKinney (il creatore di Pandas) a sviluppare la prima versione di Pandas.
La prima cosa che dobbiamo fare è installare il modulo pandas (se non lo avete già), insieme ad alcuni altri pacchetti.
Se hai già installato Python, insieme a “pip”, è sufficiente accedere alla riga di comando e digitare:
Possiamo installare con “pip” anche i moduli matplotlib, numpy, seaborn e yfinance (che potrebbero essere già preinstallati con la tua distribuzione python).
Nota: per maggiori dettagli è possibile leggere l’articollo relativo all’installazione di un ambiente di sviluppo per il trading algoritmico con Ubuntu/Linux e Python.
Le funzionalità di Pandas
Dopo avere installato Pandas e gli altri moduli, iniziamo importando questi moduli:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
import yfinance as yf
L’istruzione sns.set_style('whitegrid')
è usata solamente per impostare una specifica trama del grafico, fornita dalla libreria Seaborn. Spero che renderà i nostri grafici un po’ più eleganti. Con import yfinance as yf
importiamo una libreria che permette di scaricare i dati direttamente da Yahoo Finance. Non possiamo chiedere di meglio.
Scegliamo quindi alcuni titoli da analizzare. Se vogliamo considerare il settore tecnologico possiamo ad esempio scegliere Apple, Google, Microsoft e Amazon. Possiamo scaricare da Yahoo i dati di ciascuno di questi titoli in un DataFrame come segue:
start_date = '2010-01-01'
end_date = '2020-01-01'
AAPL = yf.download('AAPL', start_date, end_date)
GOOG = yf.download('GOOG', start_date, end_date)
MSFT = yf.download('MSFT', start_date, end_date)
AMZN = yf.download('AMZN', start_date, end_date)
.head()
integrata in Pandas (che stampa i primi 5 elementi del DataFrame) otteniamo quanto segue:
print(AAPL.head())
plot
integrato tramite la seguente istruzione:
AAPL['Adj Close'].plot()
Che produce il seguente grafico:
Possiamo anche visualizzare il grafico del volume scambiato usando il seguente comando:
AAPL['Volume'].plot()
pct_change()
e la funzione mean()
:
AAPL['Daily Return'] = AAPL['Adj Close'].pct_change()
AAPL_mean = AAPL['Daily Return'].mean()
0.001087024140393126
tech_list = ['AAPL', 'MSFT', 'GOOG', 'AMZN']
closing_df = yf.download(tech_list, start_date, end_date)['Adj Close']
pct_change()
e memorizziamo il risultato in un nuovo DataFrame chiamato rets
, come segue:
rets = closing_df.pct_change()
jointplot
di Seaborn per ottenere una rappresentazione visiva della correlazione tra due titoli, insieme al valore “pearson r”, ad esempio utilizzando Google e Microsoft otteniamo quanto segue:
sns.jointplot(x='GOOG', y='MSFT', data=rets, kind='scatter')
Spero che questa brave introduzione sia stata utile per mostrare le potenzialità di Pandas (insieme a numpy, matplotlib e seaborn) che è una delle librerie fondamentali nell’analisi dei dati finanziari.
Codice completo
In questo articolo abbiamo introdotto analisi dei dati finanziari con Pandas di Python. Per il codice completo riportato in questo articolo, si può consultare il seguente repository di github:
https://github.com/datatrading-info/AnalisiDatiFinanziari