Ciao a tutti e benvenuti in questa guida dove vi mostro come ottenere dati su azioni finanziarie come: Prezzo di una azione (apertura e chiusura) usando la libreria Python Pandas e una API chiamata Alpha Vantage.
Alpha Vantage offre API gratuite in formato JSON e CSV per dati storici e azionari in tempo reale, forex, criptovaluta e oltre 50 indicatori tecnici. Ma la miglior cosa è che possiamo usare semplicemente pandas-datareader per ottenere questi dati e possiamo farlo in modo completamente Gratuito. L'unica cosa che dobbiamo fare è ottenere una API key per usare la AV API. Questo processo è molto semplice e richiede circa 30 secondi.
Per ora la registrazione per la API richiede solamente la vostra e-mail e non vi è bisogno di email di conferma.
Vediamo come ottenere una chiave API con Alpha Vantage.
Come ottenere chiave API Alpha Vantage
Come primo passo navighiamo al sito di Alpha Vantage per ottenere una API key.
Potete fare richiesta usando questo link: https://www.alphavantage.co/support/
Quando aprite questa pagina web, vedrete una form come quella mostrata in basso:
Completate la form, inserendo la vostra professione, e-mail e azienda per cui lavorate. Una volta completata la form basta semplicemente cliccare su "GET FREE API KEY" per ottenere la vostra key.
Una volta ottenuta la API key, possiamo procedere al prossimo passo: Il codice Python.
Come ottenere prezzo di uno stock con Python
Prima di tutto un disclaimer. Questo metodo gratuito funziona, ma ovviamente essendo gratuito ha i suoi limiti. Prima di tuto non è possibile ottenere risultati in tempo reale. Questo è dato la fatto che la API di Alpha Vantage non ha questo end point. Per una lista completa dei vari data reader disponibili con pandas-datareader potete vedere qui: https://pandas-datareader.readthedocs.io/en/latest/readers/index.html
Un'altro limite della Alpha Vantage API è dato dal fatto che non vi sono presenti azioni italiane. La API fornisce informazioni solamente relative ad azioni Americane e qualche azione del Regno Unito.
Come ottenere prezzo di una azione in un intervallo di date
Detto questo vediamo come ottenere il prezzo di una azione. prendiamo come esempio lo stock Apple:
import os
from datetime import date
from datetime import timedelta
import pandas_datareader.data as web
azione="AAPL"
n_giorni = 2
inizio = date.today()-timedelta(days=n_giorni)
fine = date.today()
df = web.DataReader(azione, "av-daily",start=inizio, end=fine, api_key="LA_TUA_API_KEY")
print(df)
Il codice Python mostrato in alto funziona nel seguente modo: Prima di tutto importiamo le varie librerie che ci occorrono per eseguire il pull dei dati (in particolare pandas-datareader) Poi andiamo a creare due variabili: Una per la data iniziale dell'intervallo ed una per la data finale. Poi usando il metodo DataReader andiamo a passare il nome della azione, il nome dell'end-point della API (in questo caso av-daily), e la nostra API key ottenuta nel passo precedente. Se eseguiamo questo codice, vedremo in output un DataFrame pandas contenente per ogni giorno dell'intervallo il prezzo di apertura e chiusura insieme al prezzo massimo e minimo della giornata.
Come ottenere prezzo minuto per minuto di una azione con Python
Esistono vari end point all'interno della API di Alpha Vantage. In basso viene mostrata una lista:av-intraday | Intraday Time Series (Minuto per minuto) |
av-daily | Daily Time Series (Giorno per giorno) |
av-daily-adjusted | Daily Time Series (Adjusted) |
av-weekly | Weekly Time Series (Settimanale) |
av-weekly-adjusted | Weekly Time Series (Adjusted) |
av-monthly | Monthly Time Series (Mensile) |
av-monthly-adjusted | Monthly Time Series (Adjusted) |
av-forex-daily | Daily Time Series |
import os
from datetime import date
from datetime import timedelta
import pandas_datareader.data as web
azione="AAPL"
n_giorni = 1
inizio = date.today()-timedelta(days=n_giorni)
fine = date.today()
df = web.DataReader(azione, "av-intraday",start=inizio, end=fine, api_key="LA_TUA_API_KEY")
print(df)
Come potete vedere dal codice in alto abbiamo semplicemente sostituito l'end point av-daily con av-intraday. Per ulteriori informazioni su come usare la API di Alpha Vantage con pandas-datareader potete consultare la documentazione.
Ci siamo abbiamo visto come ottenere il prezzo di una azione usando codice Python!