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



我正在阅读这本书- https://github.com/stefan-jansen/machine-learning-for-trading/blob/c7e508dbe98e064887faeca65a45966e85af1c96/04_alpha_factor_research/01_feature_engineering.ipynb

在这行代码中看起来它使用了一个废弃版本的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

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

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. 获取要保留的测试版列表。我们不需要const它是由add_constant
  3. 添加的
  4. 只使用RollingOLS呼叫同一组。将y重命名为endog,将x重命名为exog
  5. 需要显式调用RollingOLS上的fit()
  6. 使用params获取系数,使用keep保留相关系数

相关内容

  • 没有找到相关文章

最新更新