如何将代码从PandasRollingOLS更改为RollingOLS?

2024-05-28 23:45:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力读完这本书

在这行代码中,它似乎使用了不推荐使用的PandasRollingOLS版本- from statsmodels.regression.rolling import PandasRollingOLS

稍后在这里引用- T = 24 betas = (factor_data .groupby(level='ticker', group_keys=False) .apply(lambda x: RollingOLS(window=min(T, x.shape[0]-1), y=x.return_1m, x=x.drop('return_1m', axis=1)).beta))

我希望有人能告诉我如何将这行代码转换为可使用的代码- statsmodels.regression.rolling.RollingOLS


Tags: 代码fromimport版本datareturnlevelgroupby
1条回答
网友
1楼 · 发布于 2024-05-28 23:45:08

不需要太多的更改。您可以使用它代替原始笔记本中的相应单元格:

from statsmodels.api import add_constant
from statsmodels.regression.rolling import RollingOLS

T = 24
# Variables excluding "const"
keep=["Mkt-RF","SMB","HML","RMW","CMA"]

betas = (add_constant(factor_data)  # Add the constant
         .groupby(level='ticker', group_keys=False)
         .apply(lambda x: RollingOLS(window=min(T, x.shape[0]-1), endog=x.return_1m, exog=x.drop('return_1m', axis=1)).fit().params[keep]))

这些变化:

  1. 导入RollingOLSadd_constant
  2. 获取要保留的beta列表。我们不想要由add_constant添加的const
  3. 仅使用RollingOLS调用同一组。将y重命名为endog,将x重命名为exog
  4. 您需要在RollingOLS上显式调用fit()
  5. 使用params访问系数,并使用keep保留相关系数

相关问题 更多 >

    热门问题