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

一、因子选择

 

二、 因子收益

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')

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值