Prezzi azionari ad alta frequenza
I dati azionari ad alta frequenza sono ben modellati da un processo MA(1), quindi sono un’ottima applicazione dei modelli di questo capitolo.
Il DataFrame intraday contiene i prezzi di un giorno (1 settembre 2017) per il titolo Sprint (ticker "S") campionati con frequenza di un minuto. Il mercato azionario è aperto per 6,5 ore (390 minuti), dalle 9:30 alle 16:00.
Prima di poter analizzare la serie temporale, dovrai fare un po’ di pulizia, cosa che farai in questo e nei due esercizi successivi. Guardando le prime righe, noterai diverse cose. Anzitutto, non ci sono intestazioni di colonna. I dati non sono marcati nel tempo dalle 9:30 alle 16:00, ma vanno da 0 a 390. Noterai anche che la prima data ha l’aspetto insolito "a1504272600". Il numero dopo la "a" è l’Unix time, cioè il numero di secondi dal 1° gennaio 1970. È così che questo insieme di dati separa ciascun giorno di dati intraday.
Se osservi i tipi di dato, noterai che la colonna DATE è un oggetto, che qui significa una stringa. Dovrai convertirla in numerico prima di poter ripulire alcuni dati mancanti.
La fonte dei dati al minuto è Google Finance (vedi qui per come sono stati scaricati i dati).
Il modulo datetime è già stato importato per te.
Questo esercizio fa parte del corso
Analisi delle serie temporali in Python
Istruzioni dell'esercizio
- Modifica manualmente la prima data a zero usando
.iloc[0,0]. - Cambia le due intestazioni di colonna in
'DATE'e'CLOSE'impostandointraday.columnsuguale a una lista con queste due stringhe. - Usa l’attributo di pandas
.dtypes(senza parentesi) per vedere che tipo di dati ci sono in ciascuna colonna. - Converte la colonna
'DATE'in numerico usando la funzione di pandasto_numeric(). - Imposta la colonna
'DATE'come nuovo indice diintradayusando il metodo di pandas.set_index(), che prenderà come argomento la stringa'DATE'(non l’intera colonna, solo il nome della colonna).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# import datetime module
import datetime
# Change the first date to zero
intraday.___ = 0
# Change the column headers to 'DATE' and 'CLOSE'
intraday.columns = ___
# Examine the data types for each column
print(intraday.dtypes)
# Convert DATE column to numeric
intraday['DATE'] = pd.to_numeric(____)
# Make the `DATE` column the new index
intraday = ____