Например, предположим, что данные начинаются с января 1999 г., а затем для выполнения первой регрессии в 36-месячном окне с января 1999 г. по декабрь 2001 г. требуется, чтобы выходные данные приходили только в том случае, если доступны данные как минимум за 24 месяца. В противном случае эту акцию следует пропустить для данной конкретной регрессии. Следующая скользящая регрессия начнется с февраля 1999 г. и закончится в январе 2002 г. (с учетом минимального количества наблюдений) и так далее до марта 2020 г. Поскольку это ежемесячная скользящая регрессия, результаты регрессии будут сообщаться ежемесячно, начиная с декабря. С 2001 по март 2020 года. Требуемое уравнение регрессии, которое необходимо запустить:
E (ri) = α + β1 (rmt) + β2 (rmt-1) + ut
E (ri) = ожидаемая избыточная доходность по ценным бумагам α = точка пересечения, β1 = коэффициент избыточной рыночной доходности, β2 = коэффициент отложенной избыточной рыночной доходности, rm t = избыточная доходность на рынках в момент времени t, rm t-1 = избыточная доходность на рынке в момент времени t-1, ut = срок ошибки
Приведенный ниже код был запущен, но он не учитывает посещение нескольких акций и не проверяет условие
Использование этого в R studio
library(ggplot2)
library(tseries)
spy <- get.hist.quote(instrument="SPY", start="2003-01-01",
end=Sys.Date(), quote="AdjClose",
provider="yahoo", origin="1970-01-01",
compression="d", retclass="zoo")
ief <- get.hist.quote(instrument="IEF", start="2003-01-01",
end=Sys.Date(), quote="AdjClose",
provider="yahoo", origin="1970-01-01",
compression="d", retclass="zoo")
z <- merge.zoo(spy,ief)
rollingbeta <- rollapply(z.logrtn,
width=262,
FUN = function(Z)
{
t = lm(formula=SPY~IEF, data = as.data.frame(Z), na.rm=T);
return(t$coef)
},
by.column=FALSE, align="right")