欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

华泰单因子测试之换手率类因子

程序员文章站 2022-07-13 15:14:52
...

一、因子选择

华泰单因子测试之换手率类因子

 华泰单因子测试之换手率类因子

华泰单因子测试之换手率类因子

华泰单因子测试之换手率类因子

二、 因子收益

1)绘制各分位数各周期的平均收益(收益数值不是重点,主要用于观察是否具有单调性)

#绘制各分位数各周期的平均收益(收益数值不是重点,主要用于观察是否具有单调性)
plot_quantile_returns_bar(by_group=False, demeaned=True, group_adjust=False)

华泰单因子测试之换手率类因子

 2)绘制各分位数的累计收益(收益数值不是重点,看层次是否分明)

#绘制各分位数的累计收益(收益数值不是重点,看层次是否分明)
wgt_return_factor.plot_cumulative_returns_by_quantile(period=5, demeaned=False, group_adjust=False)

华泰单因子测试之换手率类因子

3)分维度获得因子收益和标准差

 4)计算指定调仓周期的各分位数每日累积收益

5)指标计算

华泰单因子测试之换手率类因子

 

三、IC值

1)计算每日因子IC值

# 计算每日因子IC值
ic_date = wgt_return_factor.calc_factor_information_coefficient(group_adjust=1, by_group=0, method='rank')

2)打印信息比率(IC)相关表

'''
一般来说IC大于3%(因子反过来的时候就小于-3%),则认为因子比较有效。   
IC.Std  
IR=IC.Mean\IC.Std  
p-value   p值,判断IC的统计分布,一般要求小于5%或1%。在假设检验中,如果p>0.05,则接受原假设H0。如果p<0.05或p<0.01,则拒绝原假设H0,接受备择假设H1。  
IC Skew   偏度  
IC Kurtosis  峰度

'''
# 打印信息比率(IC)相关表
wgt_return_factor.plot_information_table(group_adjust=True, method='rank')
wgt_return_factor.plot_ic_hist(group_adjust=True, method='rank')


'''
IC Skew              period_1 > 0    正偏态
                     period_10<0     负偏态
                     period_20<0     负偏态
             
IC Kurtosis          period_1<3      廋尾
                     period_10<3     廋尾
                     period_20<3     廋尾
                     
p-value(IC)          <0.05            在显著性水平0.05下拒接原假设,即认为均值不为零 

华泰单因子测试之换手率类因子

华泰单因子测试之换手率类因子

 四、截面收益

def regression_test(clean_factor_data):
    '''
    用回归法进行截面 规律统计
    
    a: 回归系数
    b: 截距
    t: t检验统计量
    '''    
    
    factor = prepare.demean_forward_returns(clean_factor_data)
    
    cols = utils.get_forward_returns_columns(factor.columns)
    grouper = factor.index.get_level_values('date')
    
    def aa(df):
        s = pd.Series()
        for i in utils.get_forward_returns_columns(factor.columns):
            y = df[i]
            x = df['factor']
            x = sm.add_constant(x)
            wls_model = sm.WLS(y,x)          #暂且设置为等权重
            results = wls_model.fit()
            b,a =results.params
            t = results.tvalues[1]
            s = s.append(pd.Series([a,b,t],index=[i+'_a',i+'_b',i+'_t']))
        return s

    rt = factor.groupby(grouper)[cols.append(pd.Index(['factor']))].apply(aa)
    
    return rt

rt = regression_test(wgt_return_factor._clean_factor_data)

rt.to_csv(path+'\\regression_test.csv')

华泰单因子测试之换手率类因子

相关标签: 多因子系列