hxgre的知识库

因子分析

由hxgre创建,最终由hxgre 被浏览 254 用户

单因子分析是量化投资中重要的一步,是对因子进行有效性、单调性相关的检验。因子通过一系列检验后才有机会进入因子池并据此构建量化策略进行投资。单因子分析一般分三步:因子构建、因子处理、因子分析,本文将基于平台对上述步骤进行详细讲解。

1. 因子构建

投资者根据已有的经验来构建因子,比如传统的量价因子和财务因子。本文将构建一个动量因子进行分析,具体公式如下:

                        factor = ( close_0  / mean( close_0, 44 )) - 1

该因子的意思是比较过去44日的股价均值和当期的股价,如果该值越大,则说明当期股价高于过去一段时间的均值,处于向上趋势中。

为了构建该因子,我们首先需要从平台提取历史收盘价数据,并自定义模块计算因子值,具体步骤如下所示:

{w:100}{w:100}{w:100}{w:100}

其中,“m4 自定义Python模块 (v3)”用来计算因子值,代码如下:

# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
def bigquant_run(input_1, count, input_3):
    #读取输入数据
    df = input_1.read_df()
    
    #计算主函数
    new_df = pd.DataFrame()
    for k,v in df.groupby('instrument'):
        group = v.sort_values('date').reset_index(drop=True)      #读取每一只股票的区间行情数据
        close = group['close_0']        #提取历史收盘价
        group['factor'] = (close / close.rolling(count).mean()) - 1        #计算因子值
        new_df = pd.concat([new_df, group],ignore_index=True)
    new_df = new_df.loc[:,['date', 'instrument', 'factor']]
    
    #封装结果
    data_1 = DataSource.write_df(new_df)
    return Outputs(data_1=data_1, data_2=None, data_3=None)

2. 因子预处理

因子数据预处理包括:去极值、标准化、剔除ST、行业中性化、市值中性化等。平台在“数据处理”中提供了部分模块,而在“因子分析”中有相关的选项进行选择,如下所示:

数据预处理{w:100}{w:100}{w:100}

3. 因子检验分析

最后,我们对预处理后的因子进行因子检验,其他参数如下所示:

  1. 时间范围:2015-01-01至2021-12-31
  2. 股票范围:沪深300
  3. 分组数量:5组
  4. 中性化处理:否


接下来,我们对部分关键指标进行分析

  1. 因子表现概览:分组收益率并没有表现出较好的单调性,2分位组明显好于1分位组和5分位组,虽然
  2. 基本特征分析:预处理后的数据更接近正态分布。
  3. IC分析:IC值一般用来分析因子值和收益率的相关性,策略中的IC均值为-0.07,有一定的负相关性,但不强。

因子分析策略如下所示:

https://bigquant.com/experimentshare/e162689220a54cd0bc2377ebc28addf0

\

标签

因子分析量化投资量化策略
{link}