2012-12-21 51 views
5

考虑我们每日的股票价格时间序列(比如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季报数据汇总到一年的数据。你有关于这些东西的暗示吗?

回答

4

"yearmon""yearqtr"类表示日期为今年+分数这么季节性:

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

还应注意这个结构:diff(x, arithmetic = FALSE) - 1

0

查看时间系列软件包here并查找文档中某处的“季节性”选项。我猜季度数据你都看在时间序列的4季节性,如果你在月度数据看 - 你正在寻找的时间序列与12

0

你可能想看看在quantmod包allReturns功能。

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

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

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

函数periodReturn需要“国家价格对象或OHLC类型对象”,如何将动物园对象转换为所需的对象类? –

+0

@LorenzoRigamonti:你可以使用'allReturns(as.xts(zoo_object))'。 –