Бета (рыночная модель регрессии) оценивает компанию с помощью движущегося окна - PullRequest
0 голосов
/ 07 мая 2019

У меня есть датафрейм, который выглядит примерно так:

company_name  co_stkdate  dailyreturns  marketreturn
A             01-01-2000  5.67          4.54
A             02-01-2000  3.43          1.23
A             03-01-2000 -1.01         -0.53
.
.
.
A             30-12-2018  5.65          3.45
A             31-12-2018  2.32          1.32
B             01-01-2000 -2.34         -1.12
B             02-01-2000  1.32          0.34
.
.
.

Есть сотни таких компаний. Я хочу провести регрессию OLS в компании с переходным окном в 1 год.

модель регрессии

dailyreturn = альфа + бета * marketreturn

После выполнения регрессии. Я хочу получить бета-значение для каждого года.

Вывод должен выглядеть примерно так.

company_name   year  beta
 A             2000  0.87
 A             2001  0.99
 A             2002  0.76
 A             2003  0.65
.
.
.

это то, что я сделал до сих пор.

betas <- dbdf %>% group_by(co_code,company_name) %>% do(model=lm(formula=dailylogrtn~niftyreturns,data=.))

Это помогло мне получить одну бета-версию для компании на 2000-2018 годы. Я не уверен, как выполнить регрессионный анализ с движущимися окнами от 1 года. Регрессионный анализ должен быть с 01-01-2000 по 31-12-2000, затем новое окно с 01-01-2001 по 31-12-2001, затем с 01-01-2002 по 31-12-2002 и т. Д.

1 Ответ

0 голосов
/ 07 мая 2019

Я решил это самостоятельно. Сначала вам нужно преобразовать дату в год. Вам просто нужно заменить некоторые термины в group_by ().

betas <- dbdf %>% group_by(company_name,year) %>% do(model=lm(formula=dailylogrtn~niftyreturns,data=.))

модель может быть преобразована в фрейм данных с помощью функции tiny () в библиотеке (метла)

...