【问题标题】:Calendar Year Return Calculation历年回报计算
【发布时间】:2013-02-26 18:04:56
【问题描述】:

我正在尝试计算来自 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 和相关软件包中的任何功能都无法正常执行此操作。

【问题讨论】:

  • 你能举一个你试过的例子和你希望输出的例子吗?
  • 我确实通过更改“领先”条目来尝试使用来自 quant mod 的年度回报。但是,结果是错误的。
  • 怎么错了?您希望输出是什么?
  • 我确实通过更改“领先”条目来尝试使用来自 quant mod 的年度回报。然而,结果是错误的。在我的 R 会话中,我每年执行以下 library(quantmod) a=annualReturn(GDPC96,leading=FALSE) 结果如下(它总是从 10 月到 10 月计算,因为最后一个数据点是 2012 年 10 月)。返回 1947-10-01 NA 1948-10-01 0.041751844 ...
  • 您希望输出是什么?

标签: r time-series finance xts


【解决方案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

基于 cmets 的更新:

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))

【讨论】:

  • 不,我寻找一个日历年的变化,即 01-01-1948 的值除以 01-01-1947 的值等等(每个日历年只有一次变化) .就伪代码而言,这意味着:查找每年的最后一个值(或新一年的第一个值,取决于数据的存储方式)并将其除以前一年的相同值。没有每季度左右滚动。您建议的代码不会那样做。希望这能澄清问题
  • 谢谢。为了这。当我执行上述代码时,我仍然得到一些不同的东西: 2006-10-01 0.0235019504 2007-10-01 0.0218121684 2008-10-01 -0.0337643335 2009-10-01 -0.0008136949 2010-10-50101 0.01-16 0.0195210535 2012-10-01 0.0165570024,看来还是有问题。
  • 说“有问题”是完全没有用的。如果您希望人们帮助您解决问题,您需要更明确地说明您想要的结果(我已经问过您好几次了)。
  • 对不起,对不起。我再次检查了它,现在它可以工作了。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多