Я попытался найти существующий вопрос с ответом, но безуспешно.
В R, скажем, у меня есть эти данные set(abc)
:
Date Stock Index Stock_AR Index_AR
1 1999-01-04 23.5000 5189.68 NA NA
2 1999-01-05 23.7500 5239.99 1.063830e-02 9.694239e-03
3 1999-01-06 22.6250 5362.27 -4.736842e-02 2.333592e-02
4 1999-01-07 22.3000 5356.14 -1.436464e-02 -1.143173e-03
5 1999-01-08 22.8500 5401.23 2.466368e-02 8.418376e-03
6 1999-01-11 23.1250 5322.69 1.203501e-02 -1.454113e-02
7 1999-01-12 23.2750 5250.80 6.486486e-03 -1.350633e-02
8 1999-01-13 22.6250 5005.36 -2.792696e-02 -4.674335e-02
9 1999-01-14 22.5000 5018.86 -5.524862e-03 2.697109e-03
10 1999-01-15 21.0000 4885.62 -6.666667e-02 -2.654786e-02
Stock_AR и Index_AR - расчетные фактические дневные доходы. Дата форматируется как дата. Все остальные числовые.
Теперь я хотел бы рассчитать бета:
(covariance(Stock_AR & Index_AR) / variance (Index_AR))
Но я хотел бы делать это по мере поступления в течение ограниченного периода времени (например, всегда последние четыре дня, включая текущий день).
Я пытался:
lm(Stock_AR ~ Index_AR, data.frame(abc))
Но это дает мне бета-версию для полного набора данных (который в действительности имеет больше точек данных, чем всего за две недели).
Я использовал rollapply для других вычислений (например, сумма или среднее), но не смог применить их к этой проблеме. Даже после прочтения этого поста :
Любая помощь высоко ценится.