在熊猫数据框中按组滚动回归

时间:2019-06-05 08:46:20

标签: python pandas

我有一个pandas数据框,其中包含1963年至2012年(几乎6000万行)的各个公司的每日股票收益。我想估算CAPM Beta,因此我需要在过去250天中为每家公司运行滚动OLS回归,并将Beta值添加到现有数据框中。

我已经尝试将pyfinance软件包中的PandasRollingOLS函数与“ groupby”组合在一起,后者仅返回内存错误。 我也尝试编写两个for循环,第一个按公司分组('PERMNO'),第二个for循环进行滚动回归。但是,这也不起作用

我的数据框如下:

           PERMNO       RET       mkt       RF
date                                          
1986-01-08  10000 -0.024640 -0.020994  0.00025
1986-01-09  10000 -0.000250 -0.011469  0.00025
1986-01-10  10000 -0.000250 -0.000167  0.00025
1986-01-13  10000  0.049750  0.002499  0.00025
1986-01-14  10000  0.047369  0.000116  0.00025
1986-01-15  10000  0.045205  0.007956  0.00025
1986-01-16  10000  0.043228  0.004452  0.00025
1986-01-17  10000 -0.000250 -0.001991  0.00025
1986-01-20  10000 -0.000250 -0.003985  0.00025
1986-01-21  10000 -0.000250 -0.007242  0.00025

rolling = daily.groupby('PERMNO').apply(lambda x: ols.PandasRollingOLS(y=daily['RET'], x=daily['mkt'], window=250))
regression=np.zeros((len(daily.index),2))

for group_name, df_group in daily_grouped:
    for row in range(0,len(daily.index),1):
        y= daily.RET[row:row + 250]
        x= daily.mkt[row:row + 250]
        regression[row]=np.polyfit(x,y,1)

daily['beta']=regression[:,0]

我想知道如何从公司的滚动回归中获取beta值

0 个答案:

没有答案