感谢大牛分享!认真学习了代码。发现有两个地方可能有问题:
1. 代码 def get_index_return(univ_dict,index,count=250)中计算index收益只算到了前250d,在多因子模型(一)因子生成中都是前500d。
2. all_Group_Return_calculator子程序中代码all_Group_Ret_df[date_list[0]:].shift(1).fillna(0) 中shifit(1)后对应的就不在是未来的收益,而是当日的收益了。
all_return_df在因子生成中多因子模型(一)因子生成,已经shfit(-1),获得的是未来一个交易日的收益。
cumret=(all_return_df.loc[start:end,group_stock]+1).cumprod().mean(axis=1) 是获取的未来一日的净值,
all_Group_Ret_df.loc[start:end,i]=cumret.shift(1).fillna(1).pct_change().shift(-1) 获取的是未来一日的百分比
代码all_Group_Ret_df[date_list[0]:].shift(1).fillna(0) 中shifit(1)后对应的就不在是未来的收益,而是当日的收益了。
Group_Return_calculator(factor,univ_dict,return_df,GroupNum=10)子程序中也有同样问题。
@颖da 还请指正!
2018-09-18