拜读过楼主很多帖子了 这里请教一个问题 在计算ir的时候我看代码里用的是ic绝对值 这里有什么特殊的考虑吗?谢谢
## step2: 计算IR权重
def IR_weight(factor: pd.DataFrame) -> pd.DataFrame:
data_ = factor.copy()
# 计算ic值,得到ic的
IC = calc_rank_IC(data_)
# 计算ic的绝对值
abs_IC = IC.abs()
# rolling为移动窗口函数,滚动12个月
rolling_ic = abs_IC.rolling(12, min_periods=1).mean()
# 当滚动计算标准差时,起始日期得到的是缺失值,所以算完权重后,起始日期的值任用原值IC代替
rolling_ic_std = abs_IC.rolling(12, min_periods=1).std()
IR = rolling_ic / rolling_ic_std # 计算IR值
IR.iloc[0,:] = rolling_ic.iloc[0,:]
weight = IR.div(IR.sum(axis=1), axis=0) # 计算IR权重,按行求和,按列相除
return weight
2020-11-30