Есть ли функция, похожая на "periodReturn" в Quantmod, которая вычисляет простые различия? - PullRequest
0 голосов
/ 06 июня 2019

Мне нужно рассчитать различия временного ряда (например, цены) для различных периодичностей (ежедневно / еженедельно / ежемесячно). В quantmod (и, например, обертке tq_transmute в tidyquant) я могу сделать что-то похожее для арифметических и логарифмических возвратов (используя функцию periodReturn). Приятным эффектом здесь является то, что я получаю ежедневные / ежемесячные / еженедельные строки автоматически. Есть ли функция, которая делает что-то подобное для чистых различий?

Я попытался найти документацию и не нашел подходящей функции.

1 Ответ

0 голосов
/ 09 июня 2019

Получение различий можно выполнить с помощью функции endpoints из библиотеки xts. Предполагая, что вы создали объект AAPL с помощью функции getSymbols:

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-недельные различия:

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