历史文档

单因子分析

由clearyf创建,最终由clearyf 被浏览 574 用户

导语

了解了因子、标注和机器学习模型算法的基本知识后,面临的就是如何开发好的策略。寻找的因子是建立策略的基础,通过组合多个有效因子可以构建比较好的策略。本文主要介绍单因子分析模块的使用,通过该模块可以帮助大家检测评判单个因子的质量,为策略构建夯实基础。

因子、风险与阿尔法

因子的本质是一个信息流,也可以看做一个数学表达式,数据的变化反应并包含了投资信息,同时也代表了一个投资模式。

例如:收盘价close这个因子表达式,背后的假设就是股价越高未来收益越大,以此因子构建组合的权重比例其实就是定期轮仓购买高价股的投资模式/策略。

通常而言那些能够持续产生超额收益的因子或者投资模式是稀缺而少为人知的,这些因子又常被称为Alpha。例如市值因子、动量因子等都被学术界和投资界验证过是曾经有效的因子。

一个非常复杂的系统会表现出某种程度的可预测性。市场不断诞生有效的alpha(投资模式)并随着资金的介入而逐渐缩小,直到其逐渐失效。但这一过程将在市场上引入/创造其它的模式,从而诞生新的alpha。 良好的样本内性能无法保证良好的样本外性能。历史数据的校验越多,对alpha的信心越大,但基本市场结构的变化也会让alpha无法继续有效,就比如2017年的白马股行情其实就是小市值因子/投资模式的失效。因此,需要不断在对alpha的验证和使用之间权衡和尝试。

如何快速验证因子优劣?

通常可以使用信息比率(alpha的平均值/标准差)来粗略评估其预测能力。此外还可以考察:

  • 因子的表达式相对简单;
  • 具有良好的样本内和样本外的sharpe;
  • 对于数据和参数的微小变化不敏感,例如回测时间段等;
  • 适用于多个市场;
  • 适用于多个地区;
  • 最近的收益曲线创新高

判断因子是否失效?

既然有效的因子Alpha在市场中是不断的产生和消亡,如何判断一个因子是否失效了呢?

  • 回撤超过正常水平
  • 夏普比率下降

单因子开发、检验和改进

首先确定表达式

通常变量来自于:

  • 价格/成交量
  • 基本面
  • 宏观数据
  • 文本:如期刊、新闻、会议记录、社交媒体信息

检验因子

一个有效的因子选出的股票应该尽可能地分布在尽可能多的行业上,而不是过于集中。此外分层回测也是检验alpha的一个好方法,可以辅助我们查看alpha的头部或者尾部的预测能力。如果多空收益大部分来源于头部分组的盈利,那么如果头部分组收益下降就可能对此阿尔法的性能造成较大的影响。

敏感性测试和显着性测试是很重要的。 一个好的因子应该对噪声不敏感。测试稳健性的最常用技术包括对不同时间段、不同持续时间、随机数据子集、每个股票部门等的数据进行测试,我们对那些对这些输入变化不敏感的信号更有信心。

改进因子:

从因子数据处理角度可以如下改进:

  • 去除原始数据的异常值
  • 改变数据表达方式 例如: 将一个绝对数量含义的变量转化为当前值与其历史值的比值,用来表示该变量的变动
  • 数据的中性化处理 通常市场风险和行业风险是最大的风险,我们通过中性化保证每个行业内的alpha总和为0,同时保证全市场的所有股票alpha的总和为0,这样可以有效消除市场风险和行业风险从而降低最大回撤,提高信息比率。此外通过采用alpha值的rank可以进一步提高信息比率。如果换手率偏高,可以通过利用衰变(时间尺度上的长周期均匀化)在一个时间窗口内平均这个alpha。
  • 提高alpha的鲁棒性 排序:使用因子的排序将原始alpha转换到[0,1]区间 分位数:使用因子分位数 Fisher变换:将原始alpha转换为近似服从正态分布。 Z变换:将原始alpha转化为零均值和单位标准差的分布

此外可以通过非线性算法提升因子收益,例如利用因子数据训练一个AI算法模型,找到因子与收益之间的非线性关系。

本文着重介绍BigQuant平台在单因子分析方面的工具及使用。

单因子分析模块

该模块用于检验在月度数据尺度上,因子表达式与收益之间的线性关系

我们以市值因子为例,输入marker_cap_0因子表达式和回测起止时间,运行模块可得到分析结果。

策略案例

https://bigquant.com/experimentshare/f7440a0ab2e14b95be784a37cb0b61b8

结语: 本文以市值因子为例,展示了如何使用单因子分析模块进行月频尺度上因子的有效性评估。大家也可以使用StockRanker等模型放入单因子采用月度轮仓策略逻辑测试一下非线性模型训练的效果。

\

标签

机器学习模型风险
{link}