将时间序列汇总到年度数据

时间:2012-12-21 14:04:35

标签: r time-series finance zoo

考虑一下我们每天都有股票价格的时间序列(假设是FTSE指数)。我们想要计算每日,每月和每年的回报。

为了计算月度和年度回报,我们必须将时间序列数据汇总为数月和数年。在“动物园”包中,我们有聚合函数,可以帮助我们将数据聚合到每月频率。在使用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

我没有找到与月份数据相同的类作为as.yearmon,或者没有找到用于聚合到年度数据的季度数据的as.yearqtr。你对这些东西有什么暗示吗?

3 个答案:

答案 0 :(得分:4)

"yearmon""yearqtr"类将日期表示为年份+分数:

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

另请注意此构造:diff(x, arithmetic = FALSE) - 1

答案 1 :(得分:0)

查看时间序列包here,并在文档中的某处查找“季节性”选项。我想如果您查看季度数为4的时间序列的季度数据,如果您查看月度数据 - 您正在查看季节性为12的时间序列。

答案 2 :(得分:0)

您可能希望查看quantmod包中的allReturns函数。

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

要使用aggregate.zoo计算年度回报,只需从索引中提取年份。

YearRet <- aggregate(FTSERet+1, as.integer(format(index(FTSERet),"%Y")), prod)-1