我是R的新手,并且很难使用periodReturn()来计算VOO的年度总回报,因为结果看起来与我期望的不同。
getSymbols("VOO", from = "2010-12-31")
returns <- periodReturn(VOO, period = 'yearly', type='arithmetic', leading = TRUE)
returns
yearly.returns
2010-12-31 0.002437750
2011-12-30 -0.002084402
2012-12-31 0.134725864
2013-12-31 1.594722945
2014-12-31 0.113804320
2015-12-31 -0.007802553
2016-01-12 -0.050714152
以2015年为例:
> VOO["2014-12-31"]
VOO.Open VOO.High VOO.Low VOO.Close VOO.Volume VOO.Adjusted
2014-12-31 190.75 190.91 188.38 188.4 1365800 184.4854
> VOO["2015-12-31"]
VOO.Open VOO.High VOO.Low VOO.Close VOO.Volume VOO.Adjusted
2015-12-31 188.12 188.76 186.93 186.93 2395200 186.93
这将导致2015年的正回报为0.013251018而上述为-0.007802553。
任何建议都将不胜感激。
答案 0 :(得分:1)
@Regressionman,我认为'伪造'原始数据是一个可怕的想法!您丢失了数据并破坏了OHLC结构。为什么不使用endpoints
? (它位于你的示例中使用的quantmod-package依赖的xts-package中)
> ROC(VOO$VOO.Adjusted[endpoints(VOO, on = 'years'),],type='discrete')
VOO.Adjusted
2010-12-31 NA
2011-12-30 0.01897461
2012-12-31 0.15992784
2013-12-31 0.32386492
2014-12-31 0.12927916
2015-12-31 0.01325102
2016-01-13 -0.07393138
有关部分年份的问题的更新:
要获得部分年份返回,其中第1次观察不是端点,请将第一个obs添加到端点,如下所示:
ROC(VOO$VOO.Adjusted[c(1,endpoints(VOO, on = 'years')),],type='discrete')
答案 1 :(得分:0)
periodReturn
仅适用于收盘价。
算法非常简单,看起来你已经为你的例子做了0.013251018。因此,您可以轻松编写一个函数来自己完成。
或假冒它:
> VOO$VOO.Close = VOO$VOO.Adjusted
> periodReturn(VOO, period = 'yearly', type='arithmetic', leading = TRUE)
yearly.returns
2010-12-31 0.81795783
2011-12-30 0.01897461
2012-12-31 0.15992784
2013-12-31 0.32386492
2014-12-31 0.12927916
2015-12-31 0.01325102
2016-01-12 -0.05071415