2012-12-21 14 views
5

Consideriamo che abbiamo serie temporali giornaliere di quotazioni azionarie (diciamo l'indice FTSE). Vogliamo calcolare i rendimenti giornalieri, mensili e annuali.Serie temporali aggregate ai dati annuali

Per calcolare i rendimenti mensili e annuali dobbiamo aggregare i dati delle serie temporali in mesi e anni. Nel pacchetto "zoo" abbiamo la funzione aggregata che può aiutarci ad aggregare i dati ad una frequenza mensile. Di seguito le linee di codice utilizzando la classe as.yearmon:

# Computing simple returns 
FTSERet = diff(FTSE)/lag(FTSE,k=-1) 

# Monthly simple returns 
MonRet <- aggregate(FTSERet+1, as.yearmon, prod)-1 

# Quarterly simple returns 
QuartRet <- aggregate(FTSERet+1, as.yearqtr, prod)-1 

non ho trovato una classe equivalente as.yearmon per i dati mensili o as.yearqtr per dati trimestrali per l'aggregazione dei dati per anno. Hai qualche suggerimento su quella roba?

risposta

4

"yearmon" e "yearqtr" classi rappresentano date come anno + frazione quindi:

as.year <- function(x) as.integer(as.yearmon(x)) 

notare anche questo costrutto: diff(x, arithmetic = FALSE) - 1

0

Controlla il pacchetto delle serie temporali here e cerca le opzioni di "stagionalità" da qualche parte nella documentazione. Immagino per dati trimestrali che stai guardando in serie storiche con stagionalità di 4, se guardi in dati mensili - stai cercando in serie storiche con stagionalità di 12.

0

Si potrebbe desiderare di guardare la funzione allReturns nel pacchetto quantmod.

library(quantmod) 
getSymbols("^FTSE") 
allRet <- allReturns(FTSE) 

Per calcolare i rendimenti annuali utilizzando aggregate.zoo, basta estrarre l'anno dall'indice.

+0

La funzione periodReturn richiede "oggetto di prezzi di stato o un oggetto di tipo OHLC", come convertire un oggetto zoo nella classe dell'oggetto richiesta? –

+0

@LorenzoRigamonti: puoi usare 'allReturns (as.xts (zoo_object))'. –

Problemi correlati