有没有类似于quantmod中的“ periodReturn”函数来计算纯差?

时间:2019-06-06 14:52:02

标签: r tidyverse quantmod tidyquant

我需要计算各种周期性(每天/每周/每月)的时间序列(例如价格)的差异。在quantmod(例如tidyquant中的tq_transmute包装器)中,我可以对算术和对数返回执行类似的操作(使用函数“ periodReturn”)。这样做的好处是,我可以自动获取每日/每月/每周的行。 是否存在针对纯差异执行类似操作的功能?

我试图搜索文档,但找不到合适的功能。

1 个答案:

答案 0 :(得分:0)

可以使用endpoints库中的xts函数来获得差异。假设您使用getSymbols函数创建了AAPL对象:

getSymbols('AAPL',from='2019-01-01', to = '2019-05-31’)

每月差异:

monthlyDif <- AAPL$AAPL.Adjusted -  lag(AAPL[endpoints(AAPL, on = 'months'),"AAPL.Adjusted"])

monthlyDif
           AAPL.Adjusted
2019-01-31            NA
2019-02-28      7.392303
2019-03-29     16.735565
2019-04-30     10.678879
2019-05-30    -21.600189

请注意,通过结合使用on参数和k参数,您还可以获得毫秒到几年的差异,或者是2周差异的倍数。

即得到2周的差异:

    twoWeeksDif <- AAPL$AAPL.Adjusted -  lag(AAPL[endpoints(AAPL, on = 'weeks',k = 2),"AAPL.Adjusted"])

twoWeeksDif
           AAPL.Adjusted
2019-01-04            NA
2019-01-18      8.490769
2019-02-01      9.621521
2019-02-15      4.593429
2019-03-01      4.532547
2019-03-15     11.107224
2019-03-29      3.815307
2019-04-12      8.885773
2019-04-26      5.409180
2019-05-10     -6.336273
2019-05-24    -18.209992
2019-05-30     -0.669998