考虑一下我们每天都有股票价格的时间序列(假设是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。你对这些东西有什么暗示吗?
答案 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