日历年回报计算

时间:2013-03-11 14:08:55

标签: r time-series finance xts

我正在尝试计算FRED GDPC96时间序列的日历年GDP增​​长率(即对于xts对象)。我正在寻找一个没有循环的简单函数来计算日历年增长,其中变量是数据对象(此处为GDPC96),频率(此处为季度)以及是否应显示弃用期间(如2013)或不

例如:

library(quantmod)
getSymbols("GDPC96",src="FRED")
a <- annualReturn(GDPC96,leading=FALSE)
tail(a)

我希望这样的变化是每个日历年,即它应该从01.01.1947到01.01.1948计算,依此类推。然后,对于2012年,数据仅在10月份可用,应该省略。

据我所知,PerformanceAnalytics和相关软件包中的所有功能都无法正常完成。

1 个答案:

答案 0 :(得分:1)

看起来你想要的是一年一次的回报计算。我不知道自动执行此操作的函数,但使用TTR包中的ROC函数很容易。

library(quantmod)
getSymbols("GDPC96",src="FRED")
ROC(GDPC96, 4)  # 4-period returns for quarterly data
getSymbols("SPY")
spy <- to.monthly(SPY)
ROC(spy, 12)  # 12-period returns for monthly data

根据评论更新:

first.obs.by.year <- lapply(split(GDPC96, "years"),first)
last.obs.by.year <- lapply(split(GDPC96, "years"),last)
ROC(do.call(rbind, first.obs.by.year))
ROC(do.call(rbind, last.obs.by.year))