前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单因子测试框架

单因子测试框架

作者头像
企鹅号小编
发布2018-01-10 16:24:04
2.4K0
发布2018-01-10 16:24:04
举报
文章被收录于专栏:大数据

SignalFactorAnalyse单因子测试框架哪些因子可以为组合提供超额收益?这是构建多因子模型的第一步,也是最关键一步。

特征选择非常关键,只有把握关键特征才能对数据达到重要性认识,选择好的因子,才能获取超额收益率。

对于传统交易经验、金融理论、微观市场、机器学习、深度学习等不断挖掘出来的巨量待验因子,一个快速且有效的因子测试框架,将是Multi-factor策略系统中最为关键的一环。

因子模型测试思路

因子有效性的判断与筛选:

备选因子确定: 数学意义、经济意义、统计意义

预处理: 数据空缺与错误、剔除异常值、ZScore等

非参数分析: 分组回测

参数分析: 信息系数IC分析、回归分析

测试背景:

1.一个有效的因子在逻辑上与收益率一定是有着经济意义上的联系,这也是检验因子有直接最初始的手段。本框架在此基础上对因子进行实证分析,目的是筛选掉与收益率相关性不高的因子,从而得到真正有效的因子池。

2.因子有效性、因子衰减周期、因子轮动。因子模型本质上是通过因子来解释股票收益率,衡量因子有效性的指标是信息比。因子衰减周期,一些研究报告也做了诸如此类的研究,提出了因子的半衰期。半衰期是指因子IC_IR下降到一半的时间。因子轮动,有效性高的因子种类可能会发生改变,需根据最新有效因子进行资产重新配置,将会提高资产组合的换手率造成大量的交易成本,因此还需要对因子组合换手率进行分析,在交易成本与因子收益上进行权衡。

3.回归分析:用于检验因子有效性,将T期因子暴露与T+1(也可按周5、月20)股票收益率的回归系数即为T期因子收益率。本框架回归模型中包含行业哑变量,能够排除行业差异影响,此外,回归采用加权最小二乘回归(WLS),权重为个股流通市值的平方根,排除小盘股的影响以及回归的异方差性。通过分析序列t值,能够判断出对应回归系数的显著性。

3.IC分析:本框架在因子收益的分析上,主要使用IC分析及其衍生的指标对因子的有效性进行多维评估。IC(信息系数)可以定义为每个时间截点上因子在各个股票的暴露度和股票下期收益的 pearson 或 spearman 相关系数,本框架对IC数值、IC方向、IC检测P值等进行了多角度的分析。

4.分组回测:分组回测将使我们更容易的理解因子模型的作用方式。方法是按照因子大小对股票排序,将股票池均分为N个组合,或者对每个行业内进行均分。个股权重一般选择等权,本框架使用流通市值加权方式。通过分组累计收益图来判断因子是否和收益率有着单调递增或递减的关系。同时回测结果的多种评价标准,例如年化收益率、夏普比率、信息比率、最大回撤等也能帮助我们判断此因子策略能否在真实市场环境中发挥作用。

部署环境说明

工具语言:python2.7,JupyterNote

数据来源:通联数据

依赖包:数据处理(pandas、numpy)、数学工具(scipy、自带包statsmodels)、绘图包(matplotlib、seaborn)

数据预处理与中性化处理

因子历史数据的质量可能存在很多问题,为了避免数据质量对后续分析的影响,必须进行一系列的数据处理过程。

极值处理

本文采用Boxplot方法处理极端值,即将分布处于所有数据(±2.5%)两端的极端数据拉回边界的分位值,避免极端值对因子分析带来的影响。

标准化

采用(因子值-因子平均值)/因子标准差,将所有因子归一到统一的中心值和标准差分布,使其具有等权可加性。

因子中性化

因子中性化是为了避免因子与某些行业和风格过度耦合所带来的偏差。本文中对因子进行了行业和市值的中性化,主要做法是:对每期的因子值对行业哑变量和流动市值做线性回归,取得回归的残差作为对原始因子值的替代。

标准化与去极值还有很多计算方式可参考,本文从简。

回归分析

行业哑变量处理:

forward_returns是经过数据整合后的超大参数矩阵(处理模块请见文尾)

每个数值化的行业分类都是0−1哑变量,比如股票600301属于行业12,暴露度为1,股票对应的其他行业为0。在本测试中,不会对公司所属行业进行比例拆分,即股票只能属于一个特定的行业,在本行业上的暴露度为1,在其他所有行业的暴露度为0。

评价方法:

1.t值绝对值均值:判断显著性

2.因子收益率大于0的占比:判断该因子对股票收益率的正向影响是否明显

3.t值绝对值中大于2的占比:判断显著性是否稳定

4.因子收益率零假设的t值:判断该因子的收益率序列是否显著不为零。

IC分析模块

此IC模块主要基于以下两种IC指标,

Pearson相关系数(IC):因子值与股票收益之间的线性相关性。

Spearman相关系数(RankIC):因子与股票收益之间的序数相关性。

在利用IC值评价因子有效性时,需先进行因子中性化处理(与回归分析法一致)。具体来说,就是在因子标准化处理之后,在每个截面期上用其做因变量对市值因子及行业因子等做线性回归,取残差作为因子值的一个替代,这种做法可以消除因子在行业、板块、市值等方面的偏离。

指标评价:

1.IC 值序列的均值及绝对值均值: 判断因子有效性;

2.IC 值序列的标准差: 判断因子稳定性;

3.IC 值序列大于零(或小于零)的占比: 判断因子效果的一致性。

分组回测分析

依照因子值对股票进行打分,构建投资组合回测,是最直观的衡量指标优劣的手段。具体来说,在某个截面期上,可以根据一个或几个因子值对个股进行打分,将所有个股依照分数进行排序,然后分为N个投资组合,进行回测。

分组法下因子有效性的评估指标:

- 策略胜率:多空组合收益大于零的比例。

- 策略月均收益:多空组合的月收益率均值。

- 策略月标准差:多空组合的月收益率标准差。

- 策略信息比率:月收益率/月标准差

- 其他:组合夏普比率、累计年化收益率等

本分组模块参考Alphalens的思路,引用了turnover模块等函数,详情请查阅Alphalens相关资料。

参数矩阵统一

数据数据规范化模块是将输入的股票价格矩阵(DataFrame)、行业字典(dict)、股票因子与流通市值矩阵(DataFrame)进行整合,方便后续函数的参数引用。

数据规范化模块主要分为三部分: industrytype部分、前瞻收益计算部分、分组函数部分。industrytype部分即将行业字典({'000503.XSHE': 16,'000630.XSHE': 4,```})转换为行业哑变量矩阵。

consistencypriceand_sector为辅助函数,意图将输入多三个参数块进行横向对齐,剔除不含于三者交集中的股票。

END

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档