2012-12-21 90 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))'。 –