本文试图构建一个通用的因子选股回测模型,来验证因子的有效性。

什么是有效因子

在构建因子选股回测模型之前,我们总结了一个有效因子的三个重要特征,它们是:

超额收益:一个有效因子,应当能筛选出好的股票组合,创造出跑赢大盘的超额收益。

持续性:一个有效因子,应当是在一个较长的时间段内持续有效,而不是仅仅在一个季度、一个年份有效。

稳定性:一个有效因子,不仅是对一个市场有效,而是在所有市场都有效,能够跨市场通用的因子才是好因子。

针对以上三个特征,我们将回测周期设定在从2012-01-01至2019-01-31的时间段内,选取沪深300和中小板指代表两种不同风格的市场,通过因子选股的回测收益,来验证因子的有效性。

回测对象

1.股票池:通过聚宽数据出品的本地量化数据接口JQData,我们找到了获取任意指数成分股的方法:详见get_index_stocks()函数,在传入000300.XSHG和399005.XSHE两个指数代码后,我们获取了每一个交易日沪深300和中小板指数的股票池。

2.因子:紧接着,我们使用get_factor_values方法从聚宽因子库的数百个因子中选取了两个较常用的因子:operating_profit_ttm营业利润TTM(过去12个月营业利润之和)以及net_profit_growth_rate净利润增长率((今年净利润(TTM)/去年净利润(TTM))-1)。

因子分层回测模型

为了验证每一个因子的有效性,我们构建了一个通用的因子选股回测模型,整体思路如下:

①每个交易日取出股票池中股票的因子值,按从小到大进行排序,将排序后的股票池等分成N个股票组合。(本文采用5等分股票池)

②等额买入每个等份的股票组合,月底重复①②两步并重新调仓,最后计算平均收益。(本文默认按月调仓)

③在总的时间区间上,每个调仓周期结束后进行一个复利的计算,最后将每组股票的累计收益绘制出来进行对比。

模型构建完毕后,我们传入回测区间和股票池,通过各个股票组合之间的收益对比以及和沪深300基准收益进行对比,我们能够清楚的找到能够带来超额收益Alpha的有效因子。

- 01.按营业利润TTM在沪深300股票池下的投资结果 -

按照模型思路,我们对沪深300股票池中的300只股票按照营业利润TTM因子值由小到大排序,再将其按顺序分成5等份,买入持有,月末调仓,每个等份分别回测出2012-01-01至2019-01-31按月调仓的累计收益,并绘制成图。

可以看到,第0组~第4组之间总体分层较为明显,说明营业利润TTM在沪深300股票池中的表现是非常优秀的。它能够将沪深300中好的股票和差的股票在长达7年多的回测区间中大体区分开来。

进一步的,沪深300中营业利润最高的组合在2012-01-01~2019-01-31的时间段内,收益高达【88.74%】,而同期沪深300的收益仅有【36.49%】,说明营业利润TTM因子的选股能力很强。

- 02.按营业利润TTM在中小板指股票池下的投资结果 -

沪深300总体都是白马蓝筹股,那么营业利润是否有不错的稳定性呢?它在其他风格中的市场中表现如何呢?以下是营业利润TTM在中小板指股票池中的表现:

可以看到,它的表现并不是那么乐观,五组分层结果也不是那么明显。说明营业利润TTM因子更加适用于白马蓝筹,而在小市值股票中的表现却很一般。

观察具体收益值,预期表现应该最好的第4组甚至只优于第0组的表现,同时和基准收益【12.59%】也没能很好地区分开来。

- 03.按净利润增长率在沪深300股票池下的投资结果 -

同样的思路,我们按照净利润增长率因子值由小到大将沪深300股票池中的300只股票排序,再将其按顺序分成5等份,月末调仓,每个等份分别回测出2012-01-01~2019-01-31的按月调仓后的累计收益,并绘制成图。

由图中可以看出,净利润增长率在沪深300股票池中的大体表现差强人意,分层表现不算特别明显。

再看具体收益,只有第3组跑赢了基准,但没有大幅跑赢,而本应收益最高的第4组却跑输了基准,说明净利润增长率并不适用于沪深300这种基本面较好的股票池。那么,在我们的印象中,净利润增长率这种一直表现较好的因子它的发挥之处在哪呢?请看下面的测试部分。

- 04.按净利润增长率在中小板指股票池下的投资结果 -

由下面的分层回测图可以看出,用净利润增长率对中小板指进行筛选,表现非常亮眼。分层结果也相对清晰。

可以看出,在2015年牛市期间,这种高成长的小市值股票更是带来了巨大的超额收益Alpha。

从收益来看,净利润增长率将中小板股票池划分的较为明确,区分度也很高。尤其2015年的牛市期间,高成长的小市值股票明显带来了相当可观的收益。


小结

1.印象中好的因子,实际测试却未必有效,通过因子选股回测模型,我们能更加科学地验证因子的有效性。

2.需要注意的是,同样一个因子,在不同时间段、不同股票池却有着截然不同的表现。因子的有效性,是否存在这种天然的局限性,值得我们进一步深思。

感谢本文作者:CP;感谢夏鲁迅提出的宝贵建议。

- 福利时间 -

盼望着,盼望着,牛市来了,为了满足大家的因子选股需求,JQData现推出聚宽因子库免费试用和优惠活动,详情咨询JQData管理员,微信号:JQData01

- 关于JQData -

JQData本地量化数据接口由聚宽数据出品,提供一站式超好用本地量化金融数据。适用于从事量化投资的金融机构,学术团体和量化研究者,助您轻松完成本地化的量化研究与投资决策。点击 我也要用 立刻申请JQData一年使用权限。


- 延伸阅读 -

A股行业投资指南——好的投资,首先要选好行业

A股投资指南——基于估值波动周期的择时策略

JQData | 教程集合帖 - 由小伙伴们贡献,不断更新

【转载】JQData | A股投资指南-单因子选股的有效性验证相关推荐

  1. JQData | A股投资指南-单因子选股的有效性验证

    转自:https://www.joinquant.com/view/community/detail/7ebe3adf478ce360f6e96dd09d240bc4?type=1 JQData | ...

  2. 数据分析--单因子选股策略、多因子选股策略(选股)

    数据分析--单因子选股策略.多因子选股策略(选股) 一.单因子选股策略--小市值策略 二.多因子选股策略--市值+ROE(净资产收益率)选股策略 一.单因子选股策略--小市值策略 因子选股策略 因子: ...

  3. 多因子策略_单因子选股轮动测试

    多因子策略 因子 因子就是在选择一只股票时,能够帮助你做出决定的一个因素 类型 规模因子 1. 总市值 2. 流通市值 3. 自由流通市值 4. 小市值因子(市值越小,其操纵涨跌所需要的资金越少,股票 ...

  4. 绘制levy曲线python_量化小白暑期研究笔记(5)——因子选股-高质量动量策略

    一.动量策略的一点历史 1.1 三大互补选股维度 1.Momentum:当价格沿着过去的轨迹继续运动时,我们能够获得收益: 2.Value:当价格恢复到之前的某种均衡状态时,我们能够获得收益: 3.C ...

  5. python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...

    来源:雪球App,作者: 爱喝豆汁的投资者,(https://xueqiu.com/2680567071/130470562) 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码, ...

  6. 量化投资之多因子选股(一):数据准备与单因子检验

    文章目录 前言 系列文章 矢量化选股回测概述 要点1:数据格式 要点2:股票池 要点3:剔除ST股.停盘股.涨跌停 要点4: 仓位构建 要点5:回测 数据准备 单因子检测 样例 前言 本菜狗现在是哈工 ...

  7. python数据分析及可视化(十七)聚宽(双均线分析、因子选股策略、多因子选股策略、均值回归理论、布林带策略、PEG策略、权重收益策略)

    聚宽 聚宽是一个做金融量化的网站,https://www.joinquant.com,登录注册,如果你写的文章.策略被别人采纳,增加积分,积分用于免费的回测时长.在我的策略,进入策略列表,里面有做好的 ...

  8. 多因子选股模型python_A题通过机器学习优化股票多因子模型

    第七届"泰迪杯"数据挖掘挑战赛-- A 题:通过机器学习优化股票多因子模型 Fama 通过分析美国市场几十年的数据发现,美国股市绝大部分可以被市值.估值以及 市场收益 3 个因子解 ...

  9. 量化交易之单因子策略

    量化交易之单因子策略 单因子策略 小市值选股策略 移动平均线:如何躲过股灾和大跌 『布带林线:衡量市场的波动性/趋势』 单因子策略 你知道剩男剩女是如何剩下的吗? 许多年后,他们都一样,都会发现自己其 ...

最新文章

  1. Rust 每天一库系列 Ftp 库
  2. Xcache3.2.0不支持php7.0.11
  3. Java中String类的方法及说明
  4. (37)0环与3环通信常规方式,PspTerminateProcess 关闭进程工具
  5. Penang Industrial Zone
  6. Dart语言精简入门介绍
  7. 尚学堂轻松愉快LINUX视频教程
  8. Maxon Motor参数查询方法
  9. leapftp怎么下载文件,用leapftp怎么下载文件
  10. zznuoj 2122
  11. <choose>标签的使用
  12. 玩转oj之1003题(地球人口承载力估计)
  13. 安装部署Ceph Calamari
  14. 【NOIP2015提高组】信息传递
  15. java面试自我介绍百度云,java面试自我介绍
  16. MongoDB——实战演练
  17. Vue + Element UI+Scss + Vuex一键换肤 , 一键换字体大小 ,动态替换全局主题颜色
  18. 计算机房电磁辐射防护,计算机机房电磁波的防护要求
  19. 什么是iu组装服务器,华硕迷你IU机架服务器RS100-E4/PI2全新上市
  20. java就业率高吗_java好就业吗

热门文章

  1. 邮件客户端软件常见故障
  2. Mac版MindNode获得了新的大纲功能,简单易用
  3. SDN控制器——POX基本使用
  4. 基于智能手机的光谱仪设计
  5. VSCode 快捷键部分
  6. Chemkin模拟煤粉氨气混合燃料燃烧特性
  7. Slicer学习笔记(十六)图像配准
  8. 科技英语翻译计算机化考试,科技英语的翻译技巧
  9. Source Insight 将UTF-8格式的JAVA文件转换为GB2312格式的JAVA文件
  10. 算法导论-求x的n次方