【问题标题】:Aggregating time series to yearly data将时间序列聚合到年度数据
【发布时间】:2012-12-09 02:51:52
【问题描述】:

假设我们有股票价格的每日时间序列(比如说 FTSE 指数)。我们要计算每日、每月和每年的回报。

为了计算月度和年度回报率,我们必须将时间序列数据汇总为月和年。在“zoo”包中,我们有聚合函数,它可以帮助我们将数据聚合到每月的频率。在使用 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 用于季度数据的等效类,用于汇总到年份数据。你对那些东西有什么暗示吗?

【问题讨论】:

    标签: r time-series finance zoo


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 函数 periodReturn 需要“状态价格的对象,或者 OHLC 类型的对象”,如何将 zoo 对象转换为所需的对象类?
      • @LorenzoRigamonti:你可以使用allReturns(as.xts(zoo_object))
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-26
        • 2016-06-14
        • 2017-06-21
        • 1970-01-01
        • 2016-11-16
        • 1970-01-01
        • 2021-09-29
        相关资源
        最近更新 更多