├── README.md ├── figures ├── 2012-2013.png ├── 2016-2017.png ├── Screenshot from 2018-12-23 13-09-12.png ├── Screenshot from 2018-12-23 13-10-43.png ├── Screenshot from 2018-12-23 13-11-25.png ├── carhart4-2012-2013.png ├── carhart4-2016-2017.png ├── cumulative return.png ├── fama3-2012-2013.png ├── fama3-2016-2017.png ├── industry2017-09-18.png ├── industry2017-11-06.png ├── industry2017-12-18.png ├── industry2018-01-30.png ├── industry2018-03-20.png ├── industry2018-05-07.png ├── industry2018-06-19.png ├── industry2018-07-31.png ├── industry2018-09-11.png ├── industry2018-10-31.png ├── mv2017-09-18.png ├── mv2017-11-06.png ├── mv2017-12-18.png ├── mv2018-01-30.png ├── mv2018-03-20.png ├── mv2018-05-07.png ├── mv2018-06-19.png ├── mv2018-07-31.png ├── mv2018-09-11.png ├── mv2018-10-31.png ├── tec_2015-04-09_2016-05-16.png ├── tec_2016-06-29_2017-08-07.png ├── tec_2017-09-18_2018-10-31.png ├── 模型结构 .jpg └── 模型结构 3.jpg ├── quant_factors.md ├── 第一阶段任务总结及成果分析展示.md ├── 第一阶段实施方案.md ├── 第三阶段任务总结及成果分析展示.md └── 第二阶段任务总结及成果分析展示.md /README.md: -------------------------------------------------------------------------------- 1 | # deeplearning-for-quant 2 | 本项目是基于深度学习在多因子量化选股上的一种实践. 3 | * 第一阶段主要完成了传统多因子选股在中国A股市场上的回测.实现的模型为Fama三因子和carhart四因子,(Fama五因子当时由于数据缺失没来得及做) 4 | * 第二阶段整理影响股票超额收益率的因子(特征),完成了基于CNN的多因子量化选股模型(本阶段选用的因子仅为基于价格计算的因子) 5 | * 第三阶段改进上一阶段的模型结构,将财务因子数据与价格因子数据融合起来,一起对股票超额收益率进行预测. 6 | 7 | 先放一张模型结构图: 8 | 9 | ![](/figures/模型结构%203.jpg) 10 | 11 | ## 实践过程总结 12 | 13 | 整个项目基于的假设和套利定价理论基于的假设是一样,项目实施的理论依据也是套利定价理论. 14 | 15 | > 套利定价理论认为,套利行为是现代有效率市场(即市场均衡价格)形成的一个决定因素。如果市场未达到均衡状态的话,市场上就会存在无风险套利机会,并且用多个因素来解释风险资产收益,并根据无套利原则,得到风险资产均衡收益与多个因素之间存在(近似的)线性关系。 16 | 17 | 上述最关键的一句就是"风险资产均衡收益与多个因素之间存在(近似的)线性关系",可以想到如果我们想要获得风险资产的超额收益,就得知道影响风险资产超额收益的因素有哪些,这样就能通过最简单的ML模型Linear Regression实现对风险资产超额收益的预测.但是现实情况是我们无法知道影响风险资产超额收益的所有因素,这也是股票预测为什么不准的主要原因.虽然我们无法获得所有的影响因素,但是如果能充分挖掘已知因素的影响能力,在很大概率上还是能战胜市场的. 18 | 19 | 目前整个项目用到的影响股票超额收益率的数据仅有价格数据和财务数据,当然现在已知的还有上市公司公告,新闻,分析师建议预测等文本信息,由于能力有限当前阶段没有将文本数据融合进模型,但自己已经有了一点想法,后续会简单说一下. 20 | 21 | ### 传统多因子选股流程 22 | 23 | 传统多因子选股流程可以分为因子筛选,构建Alpha模型,构建风险模型,组合优化和业绩分析。 24 | 25 | 1. **因子筛选** 26 | 27 | 因子分类: 28 | 29 | 目前因子分为Beta,动量,规模,盈利性,波动性,成长性,价值,杠杆率,流动性这9大类,总计上百种不同的因子,这些因子都是与股票预期收益率具有一定相关程度的.当然这只是目前已知的,相信随着时间的推移还会有更多的因子被开发出来(目前能量化新闻等文本数据的因子还没有,能量化市场情绪的因子也没有) 30 | 31 | * 构建因子池 32 | 33 | 从上述因子中挑选一定数量的因子作为当前候选因子。 34 | 35 | * 标准化因子(计算因子暴露) 36 | 37 | 由于不同的因子度量不一样,各上市公司的市值也不同,所以需要对因子进行标准化 38 | 39 | $$(因子-因子市值加权平均)/因子标准差$$,当然这是最简单的方法.本项目中也会遇到因子标准化的问题,采用的方法是将因子暴露与上市公司对数市值和行业哑变量进行回归,去残差的方法,消除市值和行业对因子暴露的影响. 40 | 41 | * 单因子检验(筛选出与收益率具有强相关性的因子) 42 | 43 | 可以采用相关性分析,IC辅助法分析,回归分析等方法。 44 | 45 | * 因子合成 46 | 47 | 由于筛选出的因子有可能因子之间还存在相关性,所以还需要进一步因子和成。 48 | 49 | 可以采用相关系数,主成分分析等其他方法。 50 | 51 | * 合成因子检验 52 | 53 | 检验合成的因子的有效性。 54 | 55 | 2. **构建Alpha模型** 56 | 57 | 经过上述因子筛选已经得到了与股票收益率具有强相关性的因子,现在需要利用这些因子对股票的预期收益率进行评价。 58 | 59 | 评价方法有打分法和回归法 60 | 61 | 打分法: 62 | 63 | * 计算各个因子权重 64 | 65 | 可以采用最大化组合因子IR(信息率)的方法 66 | 67 | * 个股打分 68 | 69 | 对个股的因子暴露(即标准化后的因子)进行加权平均,对个股进行打分。 70 | 71 | * 组合初步筛选 72 | 73 | 对打分后的股票进行排序,选取一定量的股票构成初始组合。 74 | 75 | 回归法: 76 | 77 | ​ 对因子暴露(即标准化后的因子)和股票预期收益率在历史时间序列上进行回归,估计参数即因子收益率。利用估计的因子收益率和当前时期计算的因子暴露进行线性组合,对个股进行打分。组合筛选也是选取分数较高的前N个。 78 | 79 | 80 | 3. **构建风险模型** 81 | 82 | 目前了解的风险模型有协方差矩阵和结构化风险模型(和APT有点像,就是将风险分解)。 83 | 84 | 风险模型这块还没有深入了解。(有时候风险因素也会被考虑到alpha模型中) 85 | 86 | 4. **组合优化** 87 | 88 | 对上述通过因子选取的组合进行优化。 89 | 90 | 添加风险模型,交易成本模型等约束,求解筛选的股票的最优组合(即二次规划问题) 91 | 92 | 5. **业绩分析** 93 | 94 | 对获取的超额收益进行分析,分析这些收益的来源和选取的股票的特点。 95 | 96 | ### 实验过程 97 | 98 | 本项目实施的是选股模型,并没有考虑风险,组合优化等问题(从最简化开始) 99 | 100 | * 项目第一阶段验证了Fama三因子和Carhart四因子模型在中国A股市场上的表现,实验结果可以参照[第一阶段任务总结及成果分析展示](./第一阶段任务总结及成果分析展示.md),Fama三因子和Carhart四因子的计算过程可以参考[第一阶段实施方案](./第一阶段实施方案.md) 101 | 102 | 总的来说,表现随回测时间段波动较大,时好时坏.这一阶段用的数据主要是tushare上的数据,没有实现Fama五因子主要也是因为这个原因,因为Fama五因子要用到财务数据,而tushare的财务数据质量太差了,缺失有点多,用不来.后面的实验全是基于巨潮资讯的数据,毕竟还是收费的有质量保证.强烈推荐使用高质量数据,要不然都不知道是自己模型问题还是其他问题影响结果. 103 | 104 | * 项目第二阶段搜集整理了目前常见的因子,在机器学习中可以称其为特征,并对这些特征进行了编码,详见[quant_factors](./quant_factors.md),同时利用CNN对部分基于价格算出来的因子(特征)进行序列特征的提取,并利用提取的特征对股票进行了打分,具体实现细节可以参照[第二阶段任务总结及成果分析展示](./第二阶段任务总结及成果分析展示.md).这个模型比较简单,但是取得的效果还是不错的,甚至有的人可能觉得和Fully Connected的网络没什么区别,但是强调一点,CNN的卷积核是权值共享的,因为要提取不同的因子的序列特征,而这些因子的序列特征可能存在某些共性的特点,所以这里用了CNN没用Fully Connected. 105 | 106 | * 项目第三阶段处理了一批财务数据,并将这些财务因子和上述基于价格算出来的因子进行了整合,由于财务因子的粒度和上述因子的粒度还不一样,整合的过程中采用了一些技巧,主要就是通过position embedding和filter gate解决了粒度问题.具体的实现可以参照[第三阶段任务总结及成果分析展示](./第三阶段任务总结及成果分析展示).目前这个模型还在改进. 107 | 108 | ### 展望与愿景 109 | 110 | 1. 后续希望对财务数据进行分箱,做一波基于FM的特征交叉,再看一下效果,毕竟基本面还是能提供一些信息,要想办法把这些信息挖出来,哪怕很少呢. 111 | 2. 当然模型还希望能加入上市公司公告,财经新闻,分析师预测等文本信息,这部分已经有人做了可以参考[Deep Learning for Event-Driven Stock Prediction](https://www.ijcai.org/Proceedings/15/Papers/329.pdf) 112 | 113 | 最后希望就是能利用最先进的ML和DL技术挖掘尽可能多的跟股票超额收益率有关的数据,并利用这些数据指导投资决策,虽然可能存在风险,但是至少能提供一些参考. 114 | 115 | ### 困难与不易 116 | 117 | 最让人头疼的地方就是数据预处理这块,这块几乎花费了80%的时间. 118 | 119 | 1. 首先要把巨潮咨询的数据转成自己能用的格式 120 | 2. 需要处理数据缺失,识别停牌,复牌,新上市和退市的股票 121 | 3. 需要计算各种指标 122 | 4. 需要处理成神经网络的输入,使梯度能够回传,模型能够收敛 123 | 124 | 一个人干这事,确实太痛苦了!!!可能处理后的数据还有点瑕疵.希望对这方面感兴趣的人能够一起做一个开源的量化因子库,因为现在巨头的量化因子库太贵了!!!动辄几十上百万.如果有了质量比较好的量化因子库,我相信更多的ML&DL爱好者会投入到模型研究中,就像ImageNet推动图像发展那样!!! 125 | -------------------------------------------------------------------------------- /figures/2012-2013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/2012-2013.png -------------------------------------------------------------------------------- /figures/2016-2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/2016-2017.png -------------------------------------------------------------------------------- /figures/Screenshot from 2018-12-23 13-09-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/Screenshot from 2018-12-23 13-09-12.png -------------------------------------------------------------------------------- /figures/Screenshot from 2018-12-23 13-10-43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/Screenshot from 2018-12-23 13-10-43.png -------------------------------------------------------------------------------- /figures/Screenshot from 2018-12-23 13-11-25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/Screenshot from 2018-12-23 13-11-25.png -------------------------------------------------------------------------------- /figures/carhart4-2012-2013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/carhart4-2012-2013.png -------------------------------------------------------------------------------- /figures/carhart4-2016-2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/carhart4-2016-2017.png -------------------------------------------------------------------------------- /figures/cumulative return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/cumulative return.png -------------------------------------------------------------------------------- /figures/fama3-2012-2013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/fama3-2012-2013.png -------------------------------------------------------------------------------- /figures/fama3-2016-2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/fama3-2016-2017.png -------------------------------------------------------------------------------- /figures/industry2017-09-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2017-09-18.png -------------------------------------------------------------------------------- /figures/industry2017-11-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2017-11-06.png -------------------------------------------------------------------------------- /figures/industry2017-12-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2017-12-18.png -------------------------------------------------------------------------------- /figures/industry2018-01-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-01-30.png -------------------------------------------------------------------------------- /figures/industry2018-03-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-03-20.png -------------------------------------------------------------------------------- /figures/industry2018-05-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-05-07.png -------------------------------------------------------------------------------- /figures/industry2018-06-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-06-19.png -------------------------------------------------------------------------------- /figures/industry2018-07-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-07-31.png -------------------------------------------------------------------------------- /figures/industry2018-09-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-09-11.png -------------------------------------------------------------------------------- /figures/industry2018-10-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/industry2018-10-31.png -------------------------------------------------------------------------------- /figures/mv2017-09-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2017-09-18.png -------------------------------------------------------------------------------- /figures/mv2017-11-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2017-11-06.png -------------------------------------------------------------------------------- /figures/mv2017-12-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2017-12-18.png -------------------------------------------------------------------------------- /figures/mv2018-01-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-01-30.png -------------------------------------------------------------------------------- /figures/mv2018-03-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-03-20.png -------------------------------------------------------------------------------- /figures/mv2018-05-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-05-07.png -------------------------------------------------------------------------------- /figures/mv2018-06-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-06-19.png -------------------------------------------------------------------------------- /figures/mv2018-07-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-07-31.png -------------------------------------------------------------------------------- /figures/mv2018-09-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-09-11.png -------------------------------------------------------------------------------- /figures/mv2018-10-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/mv2018-10-31.png -------------------------------------------------------------------------------- /figures/tec_2015-04-09_2016-05-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/tec_2015-04-09_2016-05-16.png -------------------------------------------------------------------------------- /figures/tec_2016-06-29_2017-08-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/tec_2016-06-29_2017-08-07.png -------------------------------------------------------------------------------- /figures/tec_2017-09-18_2018-10-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/tec_2017-09-18_2018-10-31.png -------------------------------------------------------------------------------- /figures/模型结构 .jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/模型结构 .jpg -------------------------------------------------------------------------------- /figures/模型结构 3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcchao/deeplearning-for-quant/ea0c727fe7b642072aadd950ffc5492ce553c7ea/figures/模型结构 3.jpg -------------------------------------------------------------------------------- /quant_factors.md: -------------------------------------------------------------------------------- 1 | [TOC] 2 | 3 | 指标编码规则: 4 | 5 | AA001 AEA001 6 | 7 | 8 | 9 | 10 | 11 | ## 股票(总计345个)(A) 12 | 13 | ### 股东因子(8个)(AA) 14 | 15 | | 编号 | 因子(AA) | 因子代码 | 16 | | ---- | ------------------------------------ | -------- | 17 | | 1 | 前5大股东持股占总股本比例之和 | AA001 | 18 | | 2 | 前5大股东持股占流通股本比例之和 | AA002 | 19 | | 3 | 前10大股东持股占总股本比例之和 | AA003 | 20 | | 4 | 前10大股东持股占流通股本比例之和 | AA004 | 21 | | 5 | 前5大流通股东持股占总股本比例之和 | AA005 | 22 | | 6 | 前5大流通股东持股占流通股本比例之和 | AA006 | 23 | | 7 | 前10大流通股东持股占总股本比例之和 | AA007 | 24 | | 8 | 前10大流通股东持股占流通股本比例之和 | AA008 | 25 | 26 | 27 | 28 | ### 估值因子(24个)(AB) 29 | 30 | | 编号 | 因子(AB) | 因子代码 | 31 | | ---- | --------------------------------- | -------- | 32 | | 1 | 市盈率PE(TTM) | AB001 | 33 | | 2 | 市盈率PE(TTM,扣除非经常性损益) | AB002 | 34 | | 3 | 市净率PB(TTM) | AB002 | 35 | | 4 | 市净率PB(TTM,调整后净资产) | AB003 | 36 | | 5 | 市现率PCF(TTM,现金流量) | AB004 | 37 | | 6 | 市现率PCF(TTM,经营现金流量) | AB005 | 38 | 39 | 40 | 41 | 1. 市盈率PE/过去一个月PE的均值 42 | 2. 市盈率PE/过去三个月PE的均值 43 | 3. 市盈率PE/过去六个月PE的均值 44 | 4. 市盈率PE/过去一年PE的均值 45 | 5. 市盈率PE行业相对值 46 | 6. 市净率PB行业相对值 47 | 7. 市销率PS(TTM) 48 | 8. 市销率PS行业相对值 49 | 9. 市现率PCF行业相对值 50 | 10. 股息率(近12个月) 51 | 11. 总市值/EBITDA(TTM反推法) 52 | 12. 总市值/息税折旧及摊销前利润TTM行业相对值 53 | 13. 营业收入(TTM)/企业价值 54 | 14. 对数市值 55 | 15. 自由流通市值 56 | 16. 对数流通市值 57 | 17. 对数总资产 58 | 18. 市值/企业自由现金流 59 | 19. 营收市值比(TTM) 60 | 20. 账面市值比行业相对值 61 | 62 | ### 风险因子(27个)(AC) 63 | 64 | | 编号 | 因子(AC) | 因子代码 | 65 | | ---- | --------------------- | -------- | 66 | | 1 | 20日收益方差 | AC001 | 67 | | 2 | 60日收益方差 | AC002 | 68 | | 3 | 120日收益方差 | AC003 | 69 | | 4 | 个股收益的20日峰度 | AC004 | 70 | | 5 | 个股收益的60日峰度 | AC005 | 71 | | 6 | 个股收益的120日峰度 | AC006 | 72 | | 7 | 20日正收益方差 | AC007 | 73 | | 8 | 60日正收益方差 | AC008 | 74 | | 9 | 120日正收益方差 | AC009 | 75 | | 10 | 20日损失方差 | AC010 | 76 | | 11 | 60日损失方差 | AC011 | 77 | | 12 | 120日损失方差 | AC012 | 78 | | 13 | 20日收益损失方差比 | AC013 | 79 | | 14 | 60日收益损失方差比 | AC014 | 80 | | 15 | 120日收益损失方差比 | AC015 | 81 | | 16 | 30日120日回报方差比率 | AC016 | 82 | | 17 | 12月累计收益 | AC017 | 83 | | 18 | 个股20日的beta值 | AC018 | 84 | | 19 | 个股60日的beta值 | AC019 | 85 | | 20 | 个股120日的beta值 | AC020 | 86 | 87 | 1. 20日特雷诺比率 88 | 2. 60日特雷诺比率 89 | 3. 120日特雷诺比率 90 | 4. 个股与市场波动率比值 91 | 5. 个股与市场相关系数 92 | 6. 252日超额收益标准差 93 | 7. 252日残差收益波动率 94 | 95 | ### 盈利预测因子(47个)(AD) 96 | 97 | 1. 一致预测净利润(FY1)变化率_1M 98 | 2. 一致预测净利润(FY1)变化率_3M 99 | 3. 一致预测净利润(FY1)变化率_6M 100 | 4. 一致预测净利润(FY1)的变化_1M 101 | 5. 一致预测净利润(FY1)的变化_3M 102 | 6. 一致预测净利润(FY1)的变化_6M 103 | 7. 一致预测净利润(FY1)标准差 104 | 8. 一致预测净利润(FY1)最大与一致预测净利润(FY1)最小值的变化率 105 | 9. 一致预测净利润(未来12个月)的变化_1M 106 | 10. 一致预测净利润(未来12个月)的变化_3M 107 | 11. 一致预测净利润(未来12个月)的变化_6M 108 | 12. 一致预测净利润(未来12个月)的变化率_1M 109 | 13. 一致预测净利润(未来12个月)的变化率_3M 110 | 14. 一致预测净利润(未来12个月)的变化率_6M 111 | 15. 一致预测净利润(未来12个月)与归属于母公司净利润(TTM)的差 112 | 16. 一致预测净利润(未来12个月)/归属于母公司的股东权益 113 | 17. 一致预测每股收益(FY1)变化率_1M 114 | 18. 一致预测每股收益(FY1)变化率_3M 115 | 19. 一致预测每股收益(FY1)变化率_6M 116 | 20. 一致预测每股收益(FY1)的变化_1M 117 | 21. 一致预测每股收益(FY1)的变化_3M 118 | 22. 一致预测每股收益(FY1)的变化_6M 119 | 23. 一致预测每股收益(FY1)标准差 120 | 24. 一致预测每股收益(FY1)最大与一致预测每股收益(FY1)最小值的变化率 121 | 25. 一致预测每股收益(FY2)与一致预测每股收益(FY1)的变化率 122 | 26. 一致预测每股收益(未来12个月)的变化_1M 123 | 27. 一致预测每股收益(未来12个月)的变化_3M 124 | 28. 一致预测每股收益(未来12个月)的变化_6M 125 | 29. 一致预测每股收益(未来12个月)的变化率_1M 126 | 30. 一致预测每股收益(未来12个月)的变化率_3M 127 | 31. 一致预测每股收益(未来12个月)的变化率_6M 128 | 32. 一致预测每股收益(未来12个月)与EPS(TTM)的变化率 129 | 33. 一致预测营业收入(FY1)变化率_1M 130 | 34. 一致预测营业收入(FY1)变化率_3M 131 | 35. 一致预测营业收入(FY1)变化率_6M 132 | 36. 一致预测营业收入(FY1)的变化_1M 133 | 37. 一致预测营业收入(FY1)的变化_3M 134 | 38. 一致预测营业收入(FY1)的变化_6M 135 | 39. 一致预测营业收入(FY1)标准差 136 | 40. 一致预测营业收入(FY1)最大与一致预测营业收入(FY1)最小值的变化率 137 | 41. 一致预测营业收入(未来12个月)的变化_1M 138 | 42. 一致预测营业收入(未来12个月)的变化_3M 139 | 43. 一致预测营业收入(未来12个月)的变化_6M 140 | 44. 一致预测营业收入(未来12个月)的变化率_1M 141 | 45. 一致预测营业收入(未来12个月)的变化率_3M 142 | 46. 一致预测营业收入(未来12个月)的变化率_6M 143 | 47. 一致预测目标价上升空间 144 | 145 | ### 财务分析因子(总计164个)(AE) 146 | 147 | #### 每股因子(18个)(AEA) 148 | 149 | | 编号 | 因子(AEA) | 字段 | 计算方法 | 因子代码 | 150 | | ---- | ------------------------------------- | ----- | ------------------- | -------- | 151 | | 1 | 每股收益 | F003N | | AEA001 | 152 | | 2 | 基本每股收益 | F004N | | AEA002 | 153 | | 3 | 稀释每股收益 | F005N | | AEA003 | 154 | | 4 | 扣除非经常性损益每股收益 | F006N | | AEA004 | 155 | | 5 | 每股未分配利润 | F007N | | AEA005 | 156 | | 6 | 每股净资产 | F008N | 净资产/股本 | AEA006 | 157 | | 7 | 调整后每股净资产 | F009N | | AEA007 | 158 | | 8 | 每股资本公积金 | F010N | 资本公积/股本 | AEA008 | 159 | | 9 | 每股现金流量净额(TTM) | F059N | 现金流量净额/股本 | AEA009 | 160 | | 10 | 每股经营活动产生的现金流量净额(TTM) | F060N | 经营现金净流量/股本 | AEA010 | 161 | 162 | 1. 每股营业总收入 163 | 2. 每股营业收入 164 | 3. 每股营业利润 165 | 4. 每股盈余公积 166 | 5. 每股留存收益 167 | 6. 每股企业自由现金流量 168 | 7. 每股股东自由现金流量 169 | 8. 每股现金及现金等价物余额 170 | 9. 留存盈余比例(TTM) 171 | 10. 每股营业利润(TTM) 172 | 11. 股利保证倍数(TTM) 173 | 174 | #### 盈利能力因子(32个)(AEB) 175 | 176 | | 编号 | 因子(AEB) | 字段 | 计算方法 | 因子代码 | 177 | | ---- | ----------------------------------- | --------------------- | ------------------------------------------------------------ | -------- | 178 | | 1 | 营业利润/营业收入(TTM) | F011N 营业利润率 | 营业利润/营业收入*100 | AEB001 | 179 | | 2 | 销售税金率(TTM) | F012N 营业税金率 | 营业税金/营业收入*100 | AEB002 | 180 | | 3 | 营业总成本/营业总收入(TTM) | F013N 营业成本率 | 营业成本/营业收入*100 | AEB003 | 181 | | 4 | 净资产收益率(TTM) | F014N 净资产收益率 | 净利润/股东权益*100 | AEB004 | 182 | | 5 | 净资产收益率(扣除非经常性损益) | F066N | | AEB005 | 183 | | 6 | 净资产收益率-加权 | F067N | | AEB006 | 184 | | 7 | 净资产收益率-加权(扣除非经常性损益) | F068N | | AEB007 | 185 | | 8 | 净资产收益率-平均 | F081N | 净资产收益率=年末净利润/年平均净资产 | AEB008 | 186 | | 9 | 投资收益率 | F015N | 投资收益/(交易性金融资产+可供出售金融资产+持有至到期投资+长期股权投资)*100 | AEB009 | 187 | | 10 | 总资产报酬率(TTM) | F016N 总资产报酬率 | 净利润/(期末资产总额+期初资产总额)/2*100 | AEB010 | 188 | | 11 | 净利润/营业总收入(TTM) | F017N 净利润率 | 净利润/营业收入*100 | AEB011 | 189 | | 12 | 管理费用/营业总收入(TTM) | F018N 管理费用率 | 管理费用/营业收入*100 | AEB012 | 190 | | 13 | 财务费用/营业总收入(TTM) | F019N 财务费用率 | 财务费用/营业收入*100 | AEB013 | 191 | | 14 | 成本费用利润率(TTM) | F020N 成本费用利润率 | 利润总额/成本费用总额×100 | AEB014 | 192 | | 15 | 三费比重 | F021N | (财务费用+管理费用+营业费用)/营业收入*100 | AEB015 | 193 | | 16 | 扣除非经常性损益后的净利润 | F076N | | AEB016 | 194 | | 17 | 销售毛利率(TTM) | F078N 毛利率 | 毛利率=(年末总营业务收入-年末总营业务成本)/年末总营业务收入*100% | AEB017 | 195 | | 18 | 销售期间费用率(TTM) | F079N 期间费用率 | 期间费用率=(年末期间费用/年末营业收入)*100% | AEB018 | 196 | | 19 | 基本获利能力 | F085N | 基本获利能力=年化总资产息税前经常性收益率(EBIT) EBIT=净利润+所得税+利息 | AEB019 | 197 | 198 | 1. 净资产收益率(摊薄) 199 | 2. 净资产收益率(扣除/摊薄) 200 | 3. 销售净利率(TTM) 201 | 4. 销售成本率(TTM) 202 | 5. 总资产净利润-不含少数股东损益(TTM) 203 | 6. 投入资本回报率(TTM) 204 | 7. 投入资本回报率ROIC(TTM) 205 | 8. 资本报酬率(TTM) 206 | 9. 资产回报率(TTM) 207 | 10. 5年平均权益回报率 208 | 11. 营业利润/营业总收入(TTM) 209 | 12. 息税前利润/营业总收入(TTM) 210 | 13. 销售费用/营业总收入(TTM) 211 | 14. 资产减值损失/营业总收入(TTM) 212 | 15. 归属母公司股东的净利润/营业总收入(TTM) 213 | 16. 税项/利润总额(TTM) 214 | 17. 现金流资产比-资产回报率(TTM) 215 | 18. 贝里比率(TTM) 216 | 217 | #### 收益质量因子(8个)(AEC) 218 | 219 | | 编号 | 因子(AEC) | 字段 | 计算方法 | 因子代码 | 220 | | ---- | ------------------ | ----- | ------------------------------------------------------------ | -------- | 221 | | 1 | 非经常性损益合计 | F077N | | AEC001 | 222 | | 2 | 净利含金量 | F082N | 净利含金量=经营现金净流量/净利润 | AEC002 | 223 | | 3 | 非经常性损益占比 | F083N | 非经常性损益占比 =非经常性损益/净利润=(资产减值损失+公允价值变动净收益+投资收益+汇兑收益+补贴收入+营业外收入+营业外支出)/净收益 | AEC003 | 224 | | 4 | 年化期间费用毛利比 | F088N | 年化期间费用毛利比=期间费用/毛利 | AEC004 | 225 | 226 | 1. 经营活动净收益/利润总额 227 | 2. 经营活动净收益/利润总额(TTM) 228 | 3. 价值变动净收益/利润总额(TTM) 229 | 4. 营业外收支净额/利润总额(TTM) 230 | 5. 营业利润/利润总额(TTM) 231 | 6. 利润总额/营业收入(TTM) 232 | 7. 收益市值比(TTM) 233 | 8. 5年平均收益市值比(TTM) 234 | 235 | #### 现金流量因子(7个)(AED) 236 | 237 | | 编号 | 因子(AED) | 字段 | 计算方法 | 因子代码 | 238 | | ---- | ------------------------------ | ----- | ------------------------------------------ | -------- | 239 | | 1 | 经营活动现金净流量与净利润比率 | F063N | 经营活动现金净流量*100/净利润 | AED001 | 240 | | 2 | 营业收入现金含量 | F064N | 经营活动现金流入量*100/营业收入 | AED002 | 241 | | 3 | 全部资产现金回收率 | F065N | 经营活动现金流量净额*100 /资产总额 | AED003 | 242 | | 4 | 现金转换周期 | F080N | 现金转换周期=存货转换期间+应收账款转换期间 | AED004 | 243 | 244 | 1. 销售商品提供劳务收到的现金/营业收入 245 | 2. 销售商品提供劳务收到的现金/营业收入(TTM) 246 | 3. 经营活动产生的现金流量净额/营业收入 247 | 4. 经营活动产生的现金流量净额/营业收入(TTM) 248 | 5. 经营活动产生的现金流量净额/经营活动净收益(TTM) 249 | 6. 经营活动产生的现金流量净额/营业利润(TTM) 250 | 7. 现金股利保证倍数(TTM) 251 | 252 | #### 资本结构因子(4个)(AEE) 253 | 254 | | 编号 | 因子(AEE) | 字段 | 计算方法 | 因子代码 | 255 | | ---- | --------------------- | ----- | ---------------------------------- | -------- | 256 | | 1 | 流动资产比率 | F033N | 流动资产/总资产*100 | AEE001 | 257 | | 2 | 货币资金比率 | F034N | 货币资金/流动资产*100 | AEE002 | 258 | | 3 | 交易性金融资产比率 | F035N | 短期投资/流动资产*100 | AEE003 | 259 | | 4 | 存货比率 | F036N | 存货/流动资产*100 | AEE004 | 260 | | 5 | 固定资产比率 | F037N | 固定资产/总资产*100 | AEE005 | 261 | | 6 | 负债结构比 | F038N | 流动负债/非流动负债*100 | AEE006 | 262 | | 7 | 净资产比率 | F040N | 100-资产负债率;净资产/总资产*100 | AEE007 | 263 | | 8 | 资产负债比率 | F041N | 负债总额/资产总额*100 | AEF008 | 264 | | 9 | 非流动负债比率 | F047N | (非流动负债/负债合计)*100 | AEE009 | 265 | | 10 | 流动负债比率 | F048N | 流动负债/总负债*100 | AEE010 | 266 | | 11 | 有形资产净值债务率 | F051N | 流动负债/(股东权益-无形资产) | AEE011 | 267 | | 12 | 资产现金回收率(TTM) | F065N | 经营活动现金流量净额*100 /资产总额 | AEE012 | 268 | | 13 | 应收账款占比 | F086N | 应收账款占比=应收账款/总资产 | AEE013 | 269 | 270 | 1. 非流动资产比率 271 | 272 | #### 偿债能力因子(18个)(AEF) 273 | 274 | | 编号 | 因子(AEF) | 字段 | 计算方法 | 因子代码 | 275 | | ---- | ----------------------------------- | ----- | ------------------------------------------------------------ | -------- | 276 | | 1 | 产权比率 | F039N | 负债总额/股东权益*100 | AEF001 | 277 | | 2 | 流动比率 | F042N | 流动资产/流动负债 | AEF002 | 278 | | 3 | 速动比率 | F043N | (流动资产-存货)/流动负债 | AEF003 | 279 | | 4 | 现金比率 | F044N | 货币资金/流动负债*100 | AEF004 | 280 | | 5 | 利息保障倍数 | F045N | 息税前利润/利息费用=(利润总额+财务费用)/财务费用 | AEF005 | 281 | | 6 | 营运资金 | F046N | 流动资产-流动负债 | AEF006 | 282 | | 7 | 保守速动比率 | F049N | 货币资金+交易性金融资产+应收票据+应收帐款+其他应收款)/流动负债,酸性比率 | AEF007 | 283 | | 8 | 现金到期债务比率 | F050N | 经营活动现金净流量\*100/本期到期的债务=经营活动现金净流量*100/(一年内到期的非流动负债+应付票据) | AEF008 | 284 | | 9 | 经营净现金比率(短期债务) | F061N | 经营现金净流量*100/流动负债 | AEF009 | 285 | | 10 | 经营净现金比率(全部债务) | F062N | 经营现金净流量*100/负债总额 | AEF010 | 286 | 287 | 1. 归属母公司股东权益/带息债务 288 | 2. 归属母公司所有者权益合计/全部投入资本 289 | 3. 超速动比率 290 | 4. 有形净值/带息债务 291 | 5. 有形净值/净债务 292 | 6. 有形净值债务率 293 | 7. 经营活动产生的现金流量净额/带息债务(TTM) 294 | 8. 经营活动产生的现金流量净额/净债务(TTM) 295 | 9. 带息债务/全部投入资本 296 | 10. 长期负债/营运资金 297 | 11. 账面杠杆 298 | 12. 现金流动负债比(TTM) 299 | 13. 现金流动负债比率 300 | 301 | #### 营运能力因子(12个)(AEG) 302 | 303 | | 编号 | 因子(AEH) | 字段 | 计算方法 | 因子代码 | 304 | | ---- | ----------------------- | ----- | ------------------------------------------------------------ | -------- | 305 | | 1 | 应收账款周转率(TTM) | F022N | 营业收入/(期初应收帐款+期末应收帐款)/2 | AEG001 | 306 | | 2 | 存货周转率(TTM) | F023N | 营业成本/(期初存货+期末存货)/2 | AEG002 | 307 | | 3 | 运营资金周转率 | F024N | 营业收入/(期初流动资产-期初流动负债)+(期末流动资产+期末流动负债)/2 | AEG003 | 308 | | 4 | 总资产周转率(TTM) | F025N | 营业收入/((期初资产总计+期末资产总计)/2) | AEG004 | 309 | | 5 | 固定资产周转率(TTM) | F026N | 营业收入/((期初固定资产+期末固定资产)/2) | AEG005 | 310 | | 6 | 应收账款周转天数(TTM) | F027N | 360/应收账款周转率 或(期初应收账款+期末应收账款)/2] / 营业收入 | AEG006 | 311 | | 7 | 存货周转天数(TTM) | F028N | 360/存货周转率;存货周转率=[360*(期初存货+期末存货)/2]/ 营业成本 | AEG007 | 312 | | 8 | 流动资产周转率(TTM) | F029N | 营业收入/[(期初流动资产+期末流动资产)/2] | AEG008 | 313 | | 9 | 流动资产周转天数 | F030N | 360/流动资产周转率 | AEG009 | 314 | | 10 | 总资产周转天数 | F031N | 360/总资产周转率 | AEG010 | 315 | | 11 | 股东权益周转率 | F032N | 营业收入*2/(期初股东权益+期末股东权益) | AEG011 | 316 | 317 | 318 | 319 | 1. 应付账款周转率(TTM) 320 | 2. 营业周期(TTM) 321 | 3. 应付账款周转天数(TTM) 322 | 4. 现金转换周期(TTM) 323 | 5. 净资产周转率(TTM) 324 | 325 | #### 成长类因子(13个)(AEH) 326 | 327 | | 编号 | 因子(AEH) | 字段 | 计算方法 | 因子代码 | 328 | | ---- | -------------- | ----- | --------------------------------------------------- | -------- | 329 | | 1 | 营业收入增长率 | F052N | (本期营业收入/上期营业收入-1)*100 | AEH001 | 330 | | 2 | 净利润增长率 | F053N | (本期净利润/上期净利润-1)*100 | AEH002 | 331 | | 3 | 净资产增长率 | F054N | (期末股东权益/期初股东权益-1)*100 | AEH003 | 332 | | 4 | 固定资产增长率 | F055N | (期末固定资产/期初固定资产-1)*100 | AEH004 | 333 | | 5 | 总资产增长率 | F056N | (期末资产总额/期初资产总额-1)*100 | AEH005 | 334 | | 6 | 投资收益增长率 | F057N | (本期投资收益/上期投资收益-1)*100 | AEH006 | 335 | | 7 | 营业利润增长率 | F058N | (本期营业利润/上年同期营业利润-1)*100 | AEH007 | 336 | | 8 | 期间费用增长率 | F084N | ((年末期间费用-上年末期间费用)/上年末期间费用)*100% | AEH008 | 337 | 338 | 1. 增长率-净现金流量(TTM) 339 | 2. 增长率-利润总额(TTM) 340 | 3. 增长率-归属母公司股东的净利润(TTM) 341 | 4. 增长率-经营活动产生的现金流量净额(TTM) 342 | 5. 增长率-筹资活动产生的现金流量净额(TTM) 343 | 6. 增长率-投资活动产生的现金流量净额(TTM) 344 | 7. 增长率-毛利率(TTM) 345 | 8. 八季度净利润变化趋势 346 | 347 | #### 财报衍生因子(MRQ)(20个)(AEI) 348 | 349 | 1. 企业自由现金流量 350 | 2. 股权自由现金流量 351 | 3. 非经常性损益 352 | 4. 经营活动净收益 353 | 5. 运营资本 354 | 6. 有形资产 355 | 7. 留存收益 356 | 8. 带息债务 357 | 9. 净债务 358 | 10. 无息流动负债 359 | 11. 无息非流动负债 360 | 12. 息前税后利润 361 | 13. 折旧和摊销 362 | 14. 归属于母公司的股东权益 363 | 15. 全部投入资本 364 | 16. 资产总计 365 | 17. 固定资产合计 366 | 18. 负债合计 367 | 19. 股东权益 368 | 20. 期末现金及现金等价物 369 | 370 | #### 财报衍生因子(TTM)(32个)(AEJ) 371 | 372 | | 编号 | 因子(AEJ) | 字段 | 因子代码 | 373 | | ---- | --------------------------------- | ----- | -------- | 374 | | 1 | 营业总收入(TTM) | F035N | AEI001 | 375 | | 2 | 营业收入(TTM) | F006N | AEI002 | 376 | | 3 | 营业总成本(TTM) | F036N | AEI003 | 377 | | 4 | 营业税金及附加(TTM) | F008N | AEI004 | 378 | | 5 | 销售费用(TTM) | F009N | AEI005 | 379 | | 6 | 管理费用(TTM) | F010N | AEI006 | 380 | | 7 | 财务费用(TTM) | F012N | AEI007 | 381 | | 8 | 资产减值损失(TTM) | F013N | AEI008 | 382 | | 9 | 营业利润(TTM) | F018N | AEI009 | 383 | | 10 | 利润总额(TTM) | F024N | AEI010 | 384 | | 11 | 所得税(TTM) | F025N | AEI011 | 385 | | 12 | 净利润(TTM) | F027N | AEI012 | 386 | | 13 | 归属母公司股东的净利润(TTM) | F028N | AEI013 | 387 | | 14 | 少数股东损益(TTM) | F029N | AEI014 | 388 | | 15 | 销售商品提供劳务收到的现金(TTM) | F006N | AEI015 | 389 | | 16 | 经营活动现金净流量(TTM) | F015N | AEI016 | 390 | | 17 | 投资活动现金净流量(TTM) | F027N | AEI017 | 391 | | 18 | 筹资活动现金净流量(TTM) | F036N | AEI018 | 392 | | 19 | 现金及现金等价物净增加额(TTM) | F039N | AEI019 | 393 | 394 | 1. 营业成本-非金融类(TTM) 395 | 2. 营业支出-金融类(TTM) 396 | 3. 营业外收支净额(TTM) 397 | 4. 毛利(TTM) 398 | 5. 期间费用(TTM) 399 | 6. 利息支出(TTM) 400 | 7. 经营活动净收益(TTM) 401 | 8. 价值变动净收益(TTM) 402 | 9. 息税前利润(TTM反推法) 403 | 10. 扣除非经常性损益后的净利润(TTM) 404 | 11. EBIT(TTM) 405 | 12. EBITDA(TTM反推法) 406 | 13. EBITDA(TTM) 407 | 408 | ### 技术指标因子(总计75个)(AF) 409 | 410 | #### 超卖超卖类因子(22个)(AFA) 411 | 412 | 1. 过去5日的价格动量 413 | 2. 过去10日的价格动量 414 | 3. 过去3个月的价格动量 415 | 4. 过去6个月的价格动量 416 | 5. 过去1年的价格动量 417 | 6. 过去3年的价格动量 418 | 7. 过去5日的价格动量-过去1个月的价格动量 419 | 8. 过去5日的价格动量-过去3个月的价格动量 420 | 9. 过去6个月的动量-过去1个月的动量 421 | 10. 过去12个月的动量-过去1个月的动量 422 | 11. 过去5日收益率/行业均值 423 | 12. 过去1个月的日收益率的最大值 424 | 13. 当前股价/过去1个月股价均值-1 425 | 14. 当前股价/过去3个月股价均值-1 426 | 15. 当前股价/过去1年的股价均值-1 427 | 16. 12M收益率的120D变化率 428 | 17. 1-过去一个月收益率排名/股票总数的比值 429 | 18. LN(最近一个月最高价/最近一个月最低价) 430 | 19. 当前交易量/过去1个月日均交易量*过去1个月的收益率 431 | 20. 股价偏度 432 | 21. 换手率相对波动率 433 | 22. 相对离散指数 434 | 435 | #### 成交量因子(25个)(AFB) 436 | 437 | | 编号 | 因子(AFB) | 因子代码 | 438 | | ---- | ------------------------------ | -------- | 439 | | 1 | 5日平均换手率 | AFB001 | 440 | | 2 | 10日平均换手率 | AFB002 | 441 | | 3 | 20日平均换手率 | AFB003 | 442 | | 4 | 60日平均换手率 | AFB004 | 443 | | 5 | 120日平均换手率 | AFB005 | 444 | | 6 | 240日平均换手率 | AFB006 | 445 | | 7 | 3个月换手率对数平均 | AFB007 | 446 | | 8 | 12个月换手率对数平均 | AFB008 | 447 | | 9 | 5日平均换手率/120日平均换手率 | AFB009 | 448 | | 10 | 10日平均换手率/120日平均换手率 | AFB010 | 449 | | 11 | 20日平均换手率/120日平均换手率 | AFB011 | 450 | | 12 | 6日成交金额的移动平均值 | AFB012 | 451 | | 13 | 20日成交金额的移动平均值 | AFB013 | 452 | | 14 | 6日成交金额的标准差 | AFB014 | 453 | | 15 | 20日成交金额的标准差 | AFB015 | 454 | 455 | 1. 成交量的5日指数移动平均 456 | 2. 成交量的10日指数移动平均 457 | 3. 成交量的12日指数移动平均 458 | 4. 成交量的26日指数移动平均 459 | 5. 6日量变动速率指标 460 | 6. 12日量变动速率指标 461 | 7. 过去1个月交易量/过去3个月的平均交易量 462 | 8. 成交额惯性 463 | 9. 成交量比率 464 | 10. 交易量波动率 465 | 466 | #### 量价因子(4个)(AFC) 467 | 468 | 1. 20日资金流量 469 | 2. 资金流量指标 470 | 3. 威廉变异离散量(WVAD)6日均值 471 | 4. 市场促进指数指标 472 | 473 | #### 能量型因子(11个)(AFD) 474 | 475 | | 编号 | 因子(AFD) | 因子代码 | 476 | | ---- | ---------- | -------- | 477 | | 1 | AR人气指标 | AFD001 | 478 | | 2 | BR意愿指标 | AFD002 | 479 | | 3 | CR能量指标 | AFD003 | 480 | 481 | 1. 12月相对强势 482 | 2. 24月相对强势 483 | 3. 多头力道 484 | 4. 空头力道 485 | 5. 市场能量指标 486 | 6. 市场强弱指标 487 | 7. 心理线指标 488 | 489 | #### 趋势型因子(13个)(AFE) 490 | 491 | | 编号 | 因子(AFE) | 因子代码 | 492 | | ---- | ---------- | -------- | 493 | | 1 | Arron-Up | AFE001 | 494 | | 2 | Arron-Down | AFE002 | 495 | | 3 | Arron-Osc | AFE003 | 496 | 497 | 1. 6日收集派发指标 498 | 2. 20日收集派发指标 499 | 3. 6日简易波动指标 500 | 4. 14日简易波动指标 501 | 5. 波幅中位数 502 | 6. 估波指标 503 | 7. 累计振动升降指标 504 | 8. 与过去1个月,3个月,6个月,12个月股价平均涨幅 505 | 9. 与过去52周股价最高点差距 506 | 10. 终极指标 507 | 508 | ## 指数与行业(总计18个)(B) 509 | 510 | ### 估值因子(14个)(BA) 511 | 512 | 1. 所属申万一级行业的PE均值 513 | 2. 所属申万一级行业的PB均值 514 | 3. 所属申万一级行业的PS均值 515 | 4. 所属申万一级行业的PCF均值 516 | 5. 所属申万一级行业的账面市值比行业均值 517 | 6. 所属申万一级行业的总市值/息税折旧及摊销前利润TTM均值 518 | 7. 所属申万一级行业的PE标准差 519 | 8. 所属申万一级行业的PB标准差 520 | 9. 所属申万一级行业的PS标准差 521 | 10. 所属申万一级行业的PCF标准差 522 | 11. 所属申万一级行业的账面市值比行业标准差 523 | 12. 所属申万一级行业的总市值/息税折旧及摊销前利润TTM标准差 524 | 13. 算术平均滚动市盈率 525 | 14. 加权市净率 526 | 527 | ### 技术指标因子(4个)(BC) 528 | 529 | 1. 上涨的股票占指数成分股的比例 530 | 2. 下跌的股票占指数成分股的比例 531 | 3. 涨停的股票占指数成分股的比例 532 | 4. 跌停的股票占指数成分股的比例 533 | 534 | -------------------------------------------------------------------------------- /第一阶段任务总结及成果分析展示.md: -------------------------------------------------------------------------------- 1 | # 第一阶段任务总结及成果分析展示 2 | 3 | ### 完成的任务 4 | 5 | #### 数据准备 6 | 7 | 1. 2008-09-01到2018-09-01上市公司股票日线数据(共3555只) 8 | 2. 2008-09-01到2018-09-01上市公司部分因子数据(剩下的因子第二阶段再去计算) 9 | 3. 2008-09-01到2018-09-01上市公司停复盘数据 10 | 4. 2008-09-01到2018-09-01上市公司复权因子数据(用户复权日线数据) 11 | 5. 2008-09-01到2018-09-01上市公司财务报表数据(第二阶段待用) 12 | 6. 2008-09-01到2018-09-01各指数日线数据(包含沪深300) 13 | 14 | 所有数据存放在perconaDB中. 15 | 16 | #### 因子模型开发 17 | 18 | 该阶段主要完成了两个因子模型:Fama三因子和Carhart四因子. 19 | 20 | Fama五因子打算放到下阶段完成,Fama五因子的投资水平因子需要利用财务报表去计算. 21 | 22 | #### 回测流程开发 23 | 24 | 对开发的因子模型进行回测,基于的日线数据全是向后复权数据. 25 | 26 | 回测流程遇到的问题及解决方案: 27 | 28 | 1. 遇到股票停盘和复盘时,会出现投资组合中的某些股票当日收益率为Nan. 29 | 30 | 解决方案:计算当日投资组合收益率时,停盘的股票不进行计算,但是加权平均时需要算上停盘股票的配比权重. 31 | 32 | 2. 遇到新股上市时,回归的时候会出现训练数据不足的问题. 33 | 34 | 解决方案:当训练数据低于90条时不对该只股票进行回归打分 35 | 36 | 3. 遇到股票增发,配股,送股,拆股,转增资本时,股票价格会出现陡增或陡降. 37 | 38 | 解决方案:使用向后复权数据 39 | 40 | ### 成果展示 41 | 42 | #### 回测时间段2012-07-12到2013-07-13(回测时间一年) 43 | 44 | 累计收益率曲线: 45 | 46 | ![2012-2013因子模型回测累计收益率](./figures/2012-2013.png) 47 | 48 | 49 | 50 | 回测结果分析: 51 | 52 | | | carhart4 | fama3 | 沪深300 | 53 | | ----------------- | -------- | ------- | ------- | 54 | | cumulative return | 18.01% | 11.44% | -7.15% | 55 | | annual return | 18.84% | 11.96% | -7.48% | 56 | | alpha | 22.18% | 15.54% | 0.00% | 57 | | beta | 62.21% | 64.48% | 100.00% | 58 | | volatility | 486.57% | 485.85% | 506.95% | 59 | | sharp ratio | 3.87% | 2.46% | -1.48% | 60 | | information ratio | 10.19% | 8.00% | Nan | 61 | | max drawdown | 248.47% | 343.98% | 328.22% | 62 | 63 | 从上述分析结果可以看出carhart四因子模型和fama三因子模型的表现要优于沪深300,carhart四因子表现要优于fama三因子.(上述评价指标就不一一介绍了). 64 | 65 | 持仓分析: 66 | 67 | ![fama3持仓统计](./figures/fama3-2012-2013.png) 68 | 69 | fama三因子模型2012到2013一年间持有过的股票总共有471只,持有次数最多的前50只股票分布如上图. 70 | 71 | ![](./figures/carhart4-2012-2013.png) 72 | 73 | carhart四因子模型2012到2013一年间持有过的股票总共有492只,持有次数最多的前50只股票分布如上图. 74 | 75 | #### 回测时间段2016-07-12到2017-07-13(回测时间一年) 76 | 77 | ![2016-2017因子模型回测累计收益率](./figures/2016-2017.png) 78 | 79 | 回测结果分析: 80 | 81 | | | carhart4 | fama3 | 沪深300 | 82 | | ----------------- | -------- | ------- | ------- | 83 | | cumulative return | -18.28% | -13.04% | 15.10% | 84 | | annual return | -18.65% | -13.31% | 15.40% | 85 | | alpha | -29.61% | -25.03% | 0.00% | 86 | | beta | 62.66% | 69.05% | 100.00% | 87 | | volatility | 361.48% | 360.48% | 252.77% | 88 | | sharp ratio | -5.16% | -3.69% | 6.09% | 89 | | information ratio | -15.16% | -12.26% | Nan | 90 | | max drawdown | 399.82% | 460.20% | 283.41% | 91 | 92 | 不知道为什么,回测2016到2017时,因子模型的表现却不如沪深300. 93 | 94 | 持仓分析: 95 | 96 | ![](./figures/fama3-2016-2017.png) 97 | 98 | fama三因子模型2016到2017一年间持有过的股票总共有514只,持有次数最多的前50只股票分布如上图. 99 | 100 | ![](./figures/carhart4-2016-2017.png) 101 | 102 | carhart四因子模型2016到2017一年间持有过的股票总共有572只,持有次数最多的前50只股票分布如上图. 103 | 104 | ### 第二阶段任务 105 | 106 | #### 回测流程集群部署 107 | 108 | 现阶段回测采用的是单机多线程,一个模型回测A股一年,平均需要1.5小时. 109 | 110 | 由于现在因子数量固定(三因子,四因子),股票打分模型采用的是线性回归,计算量相对比较少,后期加上因子筛选模型后估计计算量会更大. 111 | 112 | 为了缩短回测时间,将更过的精力放到模型研究上,打算第二阶段将现有回测流程部署到集群上. 113 | 114 | 涉及的工作: 115 | 116 | 1. 代码重构,逻辑思路基本不变,只是计算框架换用spark 117 | 2. 数据迁移,现有数据往集群上迁移 118 | 119 | 可能遇到的问题: 120 | 121 | 现在用到的numpy, pandas等python计算包,集群上没有. 122 | 123 | 解决方案: 124 | 125 | 1. 用spark的dataframe和MLlib代替 126 | 2. 继续沿用现在的代码,研究numpy, pandas等python包在集群中与spark整合 127 | 128 | #### 因子分类与计算 129 | 130 | 现有的因子只能支撑fama三因子和carhart四因子,第二阶段需要更多的因子数据. 131 | 132 | 具体工作如下: 133 | 134 | 1. 明确各个因子代表的含义,对各个因子进行分类(哪些是趋势型,哪些是价值型等) 135 | 136 | 如何更好的对因子分类还有待研究 137 | 138 | 2. 计算不同粒度的因子数据 139 | 140 | #### 基于机器学习的因子筛选模型的探索 141 | 142 | 研究基于boosting tree的机器学习算法在因子筛选上的应用(具体思路有待确定) 143 | 144 | -------------------------------------------------------------------------------- /第一阶段实施方案.md: -------------------------------------------------------------------------------- 1 | ### 数据准备 2 | #### 股票数据 3 | 股票OHLCV日线数据 4 | #### 因子数据 5 | 1. 调查9类因子各有哪些,熟悉各个因子的计算方法(可能跟季报年报有关的长期因子有直接数据,这些数据需要获取。短期因子可能需要计算。)可以参考[优矿给出的部分因子](https://uqer.io/data/search/MktStockFactorsOneDayGet) 6 | 2. 计算因子(或者编写因子计算接口) 7 | 8 | ### 一期开发流程 9 | **采用的选股方案如下:** 10 | 11 | 1. Famma-French三因子模型[^1] 12 | 13 | 14 | 2. Carhart四因子模型[^2] 15 | 3. Famma-French五因子模型[^3] 16 | 17 | **回测流程:** 18 | 19 | - 设定回测时间轴(交易日),调仓日期和用于计算因子值的历史数据范围 20 | - 计算股票i每日(这里可以选用每日或每月,具体可以根据因子的属性进行调整)因子和期望收益率($$X_t$$, $$y_t$$),回归得到因子系数 21 | - 计算交易日即调仓日股票i因子值,带入回归方程进行打分 22 | - 选取得分的top N只股票作为买入股票S 23 | - 调仓并计算阶段性收益 24 | - 在买入股票S集合中的继续持有或买入 25 | - 不在S集合中的股票卖出 26 | - 继续进行回测,直到回测日期结束 27 | 28 | > 注:计算采用的无风险收益率为一年期国债收益率,市场基准收益率为沪深300收益率 29 | > 30 | 31 | ### 附录 32 | 33 | **多因子选股方案介绍:** 34 | 35 | 1. Famma-French三因子模型[^1] 36 | 37 | Famma将股票按每年6月末的市值大小进行排序,按照50%分位值把股票分为S(small)和B(big)两组; 38 | 39 | 将股票按前一年末的账面市值比大小进行排序,分为L(low, 30%),M(medium, 40%),H(high, 30%)三组; 40 | 41 | 分别对S,B和L,M,H取交集,股票即被分为了SL,SM,SH,BL,BM,BH六组。 42 | 43 | 令SL(t),SM(t),SH(t),BL(t),BM(t),BH(t)为t时段的股票市值加权收益率。 44 | 45 | 市值因子:$E[SMB(t)]=\frac{1}{3}*(SL(t)+SM(t)+SH(t))-\frac{1}{3}*(BL(t)+BM(t)+BH(t))$ 46 | 47 | 账面市值比因子:$E[HML(t)]=\frac{1}{2}*(SH(t)+BH(t))-\frac{1}{2}*(SL(t)+BL(t))$ 48 | 49 | 股票i的超额收益率:$R_i(t)=\alpha_i+b_iR_M(t)+s_iE[SMB(t)]+h_iE[HML(t)]+\epsilon_{i}$ 50 | 51 | $R_M(t)$即市场超额收益率,$R_M(t)=E[r_M(t)-r_f(t)]$,$r_M(t)$市场基准收益率,$r_f(t)$无风险收益率 52 | 53 | 2. Carhart四因子模型[^2] 54 | 55 | Carhart在Famma三因子的基础上添加了一个动量因子。 56 | 57 | 股票i的超额收益率:$R_i(t)=\alpha_i+b_iR_M(t)+s_iE[SMB(t)]+h_iE[HML(t)]+m_iE[UMD(t)]+\epsilon_{i}$ 58 | 59 | Carhart将$t-11$到$t-1$共11个月的股票收益率进行排序,取前30%和后30%的股票分成两组,计算两组的收益率之差作为$UMD(t)$。Carhart计算两组收益率之差时使用的是等权加权,这里我们可以使用市值加权去计算两组之差。 60 | 61 | 3. Famma-French五因子模型[^3] 62 | 63 | Famma-French在三因子的基础上额外添加了盈利水平因子$RMW$(robust minus weak)和投资水平因子$CMA$(conservative minus aggressive)来解释超额收益率。 64 | 65 | 股票i的超额收益率:$R_i(t)=\alpha_i+b_iR_M(t)+s_iE[SMB(t)]+h_iE[HML(t)]+r_iE[RMW(t)]+c_iE[CMA(t)]+\epsilon_{i}$  66 | 67 | $$RMW$$和CMA的计算方法可以参考论文[^3] 68 | 69 | **计算方式1($$2*2*2$$)** 70 | 71 | ​ 将股票按上一年6月末的市值大小进行排序,按照50%的分位把股票分为S(small)、B(big)两组;将股票按前一年末的账面市值比大小进行排序,按照50%的分位把股票分为H(high)、L(low)两组;将股票按前一年末的收益风险大小进行排序,按照50%的分位把股票分为R(robust)、W(weak)两组;将股票按前一年末的投资风险大小进行排序,按照50%的分位把股票分为C(conservative)、A(aggresive)两组。 72 | 73 | ​ 分别对S、B和H、L和R、W和C、A取交集,得到SHRC 、 SHRA 、 SHWC 、 SHWA 、 SLRC 、 SLRA 、 SLWC 、 SLWA、BHRC 、 BHRA 、 BHWC 、 BHWA 、 BLRC 、 BLRA 、 BLWC 、 BLWA等16组股票组合。 74 | 75 | 计算股票市值加权收益率,因子计算方式如下: 76 | 77 | $$SMB = \frac{1}{8}(SHRC + SHRA + SHWC + SHWA + SLRC + SLRA + SLWC + SLWA)-$$ 78 | 79 | $$\frac{1}{8}(BHRC + BHRA + BHWC + BHWA + BLRC + BLRA + BLWC + BLWA)$$ 80 | 81 | $$HML =\frac{1}{8} (SHRC + SHRA + SHWC + SHWA + BHRC + BHRA + BHWC + BHWA)-$$ 82 | 83 | $$\frac{1}{8}(SLRC + SLRA + SLWC + SLWA + BLRC + BLRA + BLWC + BLWA)$$ 84 | 85 | $$RMW=\frac{1}{8}(SHRC + SHRA + SLRC + SLRA + BHRC + BHRA + BLRC + BLRA)-$$ 86 | 87 | $$\frac{1}{8}(SHWC + SHWA + SLWC + SLWA + BHWC + BHWA + BLWC + BLWA)$$ 88 | 89 | $$CMA=\frac{1}{8}(SHRC + SHWC + SLRC + SLWC + BHRC + BHWC + BLRC + BLWC)-$$ 90 | 91 | $$\frac{1}{8}(SHRA + SHWA + SLRA + SLWA + BHRA + BHWA + BLRA + BLWA)$$ 92 | 93 | **计算方式2($$2*3*3*3$$)** 94 | 95 | ​ 将股票按上一年6月末的市值大小进行排序,按照50%的分位把股票分为S(small)、B(big)两组;将股票按前一年末的账面市值比大小进行排序,按照30% 40% 30%的分位把股票分为H(high)、M(middle)、L(low)三组;将股票按前一年末的收益风险大小进行排序,按照30% 40% 30%的分位把股票分为R(robust)、N、W(weak)三组;将股票按前一年末的投资风险大小进行排序,按照30% 40% 30%的分位把股票分为C(conservative)、N、A(aggresive) 三组。 96 | 97 | ​ 其中,盈利水平风险用净资产收益率(净利润/净资产)ROE来衡量,投资水平风险用总资产年增长率来衡量。 98 | 99 | 将S、B分别和H、M、L和R、N、W和C、N、A取交集,得到SH、 SM、 SL、 BH、BM、BL ;SR、SN、SW、BR、BN、BW ;SC、SN、SA、BC、BN、BA等18组股票组合。 100 | 101 | 计算股票市值加权收益率,因子计算方式如下: 102 | 103 | $$SMB_{B/M}=\frac{1}{3}(SH+SN+SL)-\frac{1}{3}(BH+BN+BL)$$ 104 | 105 | $$SMB_{OP}=\frac{1}{3}(SR+SN+SW)-\frac{1}{3}(BR+BN+BW)$$ 106 | 107 | $$SMB_{Inv}=\frac{1}{3}(SC+SN+SA)-\frac{1}{3}(BC+BN+BA)$$ 108 | 109 | $$SMB=\frac{1}{3}(SMB_{B/m}+SMB_{OP}+SMB_{Inv})$$ 110 | 111 | $$HML=\frac{1}{2}(SH+BH)-\frac{1}{2}(SL+BL)$$ 112 | 113 | $$RMW=\frac{1}{2}(SR+BR)-\frac{1}{2}(SW+BW)$$ 114 | 115 | $$CMA=\frac{1}{2}(SC+BC)-\frac{1}{2}(SA+BA)$$ 116 | 117 | ### Reference 118 | 119 | [^1]: Common risk factors in the returns on stocks and bonds [Eugene F. Fama and Kenneth R. French. 1993] 120 | [^2]: On Persistence in Mutual Fund Performance [Mark M. Carhart. 1997] 121 | [^3]: A Five-Factor Asset Pricing Model [Eugene F. Famma and Kenneth R. French. 2015] 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /第三阶段任务总结及成果分析展示.md: -------------------------------------------------------------------------------- 1 | ## 第三阶段任务总结及成果分析展示 2 | 3 | ### 主要工作内容 4 | 5 | 分析财报数据,尝试将财报数据与技术类数据进行整合,目前还没有整合成功 6 | 7 | ### 实验 8 | 9 | 1. 原模型时序稳定性测试 10 | 11 | 2. 在原模型基础上加上单期财务报表,效果表现不好 12 | 13 | 3. 在原模型基础上加上四期财务报表,效果表现不好 14 | 15 | **然后发现了有关于财务数据的一些问题** 16 | 17 | 4. 单独对财务指标进行建模,发现每年的财务数据不是独立同分布 18 | 19 | 5. 阅读券商的基本面分析研报,发现他们的基本面选股方法都是基于数据分箱,于是进行了财务数据分箱的实验 20 | 21 | 6. 财务数据分箱后做特征交叉. 22 | 23 | ### 遇到的问题 24 | 25 | 1. 财务报表来源:定期报告,招募说明书,上市公告书,换股报告书 26 | 27 | 2. 财务报表合并类型:合并本期,合并上期 28 | 29 | 3. 财务报表公布日期: 30 | 年度报告由上市公司在每个会计年度结束之日起4个月内编制完成(即一至四月份) 31 | 32 | 中期报告由上市公司在半年度结束后两个月内完成(即七、八月份) 33 | 34 | 季报由上市公司在会计年度前三个月、九个月结束后的三十日内编制完成(即第一季报在四月份,第三季报在十月份) 35 | 36 | 由于财务报表发布时间的问题,所以可能会造成下面的情况: 37 | 38 | 3月份调仓拿不到上一年的财务报表 39 | 40 | 4月份调仓拿不到一季度的财务报表 41 | 42 | 8月份调仓拿不到二季度的财务报表 43 | 44 | 10月份调仓拿不到三季度的财务报表 45 | 46 | 所以对财务进行了单独的实验:设置调仓日期为5月1日,9月1日,11月1日,每次调仓选取上一季度财报和上一年季报. 47 | 48 | ### 实验详情 49 | 50 | 1. **原模型时序稳定性测试** 51 | 52 | **训练数据:**2005-01-04~2015-04-09 53 | 54 | **回测时间:**2015-04-09~2016-05-16 55 | 56 | ​ 2016-06-29~2017-08-07 57 | 58 | ​ 2017-09-18~2018-10-31 59 | 60 | **结论:**利用训练得到的模型在上述三个时间段内回测,回测结果均比沪深300要好,表明训练得到的模型具有时间稳定性. 61 | 62 | **回测结果如下:** 63 | 64 | | 回测时间 | accurancy | fcn累计收益率 | hs300累计收益率 | 65 | | --------------------- | --------- | ------------- | --------------- | 66 | | 2015-04-09~2016-05-16 | 0.5762 | 86.64% | -27.95% | 67 | | 2016-06-29~2017-08-07 | 0.5984 | 57.73% | 18.82% | 68 | | 2017-09-18~2018-10-31 | 0.5720 | 6.93% | -17.68% | 69 | 70 | 2015-04-09~2016-05-16回测效果图: 71 | 72 | ![](./figures/tec_2015-04-09_2016-05-16.png) 73 | 74 | 2016-06-29~2017-08-07回测效果图: 75 | 76 | ![](./figures/tec_2016-06-29_2017-08-07.png) 77 | 78 | 2017-09-18~2018-10-31回测效果图: 79 | 80 | ![](./figures/tec_2017-09-18_2018-10-31.png) 81 | 82 | 2. **在原模型基础上加上单期财务报表,效果表现不好** 83 | 84 | **加入单期财务报表的模型结构:** 85 | 86 | ![](./figures/模型结构 .jpg) 87 | 88 | 财务报表一年只发布四期,而我们是按月度进行调仓,为了将财务指标和技术类的相融合,引入了filter gate,filter gate是一个sigmoid函数,它的作用是随着最近一期财报发布时间的推移,逐渐降低财报对选股的影响. 89 | 90 | 比如调仓日是2015-04-15,最近一期财报是2015年第一季报,它的position id就是0. 91 | 92 | 比如调仓日是2015-05-15,最近一期财报还是2015年第一季报,它的position id就是1,因为中间相隔了一个月. 93 | 94 | 比如调仓日是2015-06-15,最近一期财报还是2015年第一季报,它的position id就是2,因为中间相隔了两个月. 95 | 96 | position embedding layer是position id的隐向量,长度和财务因子长度一样,经过filter gate后就会产生长度和财务因子一样的取值在0~1之间的filter 向量,这样就可以对财务因子对选股的影响进行过滤. 97 | 98 | **测试结果如下:** 99 | 100 | | 测试时间段 | fin_fcn accurancy | fcn accurancy | 101 | | --------------------- | ----------------- | ------------- | 102 | | 2016-06-29~2017-08-07 | 0.5979 | 0.5984 | 103 | | 2017-09-18~2018-10-31 | 0.5691 | 0.5720 | 104 | 105 | 3. **在原模型基础上加上四期财务报表,效果表现不好** 106 | 107 | 失败总结:可能单期的财务报表并没有可比性,所以对选股的影响并不明显.加入四期财务报表,提取四期财务因子的变化情况,最后在用filter gate进行过滤. 108 | 109 | 于是产生了如下模型结构: 110 | 111 | ![](./figures/模型结构 3.jpg) 112 | 113 | 利用类似与技术因子的卷积结构也提取四期财务因子的变化特征,对提取特征后的vector用filter gate进行过滤. 114 | 115 | 测试结果如下: 116 | 117 | | 测试时间段 | fin_fcn accurancy | fcn accurancy | 118 | | --------------------- | ----------------- | ------------- | 119 | | 2016-06-29~2017-08-07 | 0.5880 | 0.5984 | 120 | | 2017-09-18~2018-10-31 | 0.5647 | 0.5720 | 121 | 122 | 4. 单独对财务指标进行建模,发现每年的财务数据不是独立同分布 123 | 124 | 由于财务指标发布时间的原因,所以我们设定调仓日期为每年的5月1日,9月1日,11月1日,但是这种设置每次都会忽视上一年的年报,所以每次调仓时我们选取最近一季度财报和上一年年报作为X. 125 | 126 | 模型选用的是基于决策树的分类模型lightGBM. 127 | 128 | 实验结果如下: 129 | 130 | | 回测时间 | accurancy | 131 | | --------------------- | --------- | 132 | | 2015-04-09~2016-05-16 | 0.5833 | 133 | | 2016-06-29~2017-08-07 | 0.4954 | 134 | | 2017-09-18~2018-10-31 | 0.5259 | 135 | 136 | 5. 阅读券商的基本面分析研报,发现他们的基本面选股方法都是基于数据分箱,于是进行了财务数据分箱的实验 137 | 138 | 将所有财务指标行业市值中性化后,从小到大排序,总共分成4箱,0\~25%,25%\~50%,50%\~75%,75%~100%. 139 | 140 | 模型还是选用的基于决策树的分类模型lightGBM. 141 | 142 | 实验结果如下: 143 | 144 | | 回测时间 | accurancy | 145 | | --------------------- | --------- | 146 | | 2015-04-09~2016-05-16 | 0.5921 | 147 | | 2016-06-29~2017-08-07 | 0.5044 | 148 | | 2017-09-18~2018-10-31 | 0.5379 | 149 | 150 | 6. 财务数据分箱后做特征交叉. 151 | 152 | 后来又在分箱的基础上做了特征交叉,这样做的原理是基于这样的选股规则"EP在top25%同时净资产收益率在top25%,同时净现金流在top25%的股票比较好". 153 | 154 | 做了特征交叉后的试验后发现,准确率相比于单纯分箱还要低而且模型还是时间不稳定. 155 | 156 | 实验结果如下: 157 | 158 | | 回测时间 | accurancy | 159 | | --------------------- | --------- | 160 | | 2015-04-09~2016-05-16 | 0.5764 | 161 | | 2016-06-29~2017-08-07 | 0.5097 | 162 | | 2017-09-18~2018-10-31 | 0.5353 | 163 | 164 | 165 | 166 | ### 附录 167 | 168 | #### 财务因子 169 | 170 | | 因子类别 | 因子(AEA) | 因子代码 | 171 | | ----------------- | ------------------------------------- | -------- | 172 | | 每股因子 | 每股收益 | AEA001 | 173 | | | 基本每股收益 | AEA002 | 174 | | | 稀释每股收益 | AEA003 | 175 | | | 扣除非经常性损益每股收益 | AEA004 | 176 | | | 每股未分配利润 | AEA005 | 177 | | | 每股净资产 | AEA006 | 178 | | | 每股资本公积金 | AEA008 | 179 | | | 每股现金流量净额(TTM) | AEA009 | 180 | | | 每股经营活动产生的现金流量净额(TTM) | AEA010 | 181 | | 盈利能力因子 | 营业利润/营业收入(TTM) | AEB001 | 182 | | | 销售税金率(TTM) | AEB002 | 183 | | | 营业总成本/营业总收入(TTM) | AEB003 | 184 | | | 净资产收益率(TTM) | AEB004 | 185 | | | 净资产收益率(扣除非经常性损益) | AEB005 | 186 | | | 净资产收益率-加权 | AEB006 | 187 | | | 净资产收益率-加权(扣除非经常性损益) | AEB007 | 188 | | | 净资产收益率-平均 | AEB008 | 189 | | | 投资收益率 | AEB009 | 190 | | | 总资产报酬率(TTM) | AEB010 | 191 | | | 净利润/营业总收入(TTM) | AEB011 | 192 | | | 管理费用/营业总收入(TTM) | AEB012 | 193 | | | 财务费用/营业总收入(TTM) | AEB013 | 194 | | | 成本费用利润率(TTM) | AEB014 | 195 | | | 三费比重 | AEB015 | 196 | | | 扣除非经常性损益后的净利润 | AEB016 | 197 | | | 销售毛利率(TTM) | AEB017 | 198 | | | 销售期间费用率(TTM) | AEB018 | 199 | | | 基本获利能力 | AEB019 | 200 | | 收益质量因子 | 非经常性损益合计 | AEC001 | 201 | | | 净利含金量 | AEC002 | 202 | | | 非经常性损益占比 | AEC003 | 203 | | | 年化期间费用毛利比 | AEC004 | 204 | | 现金流量因子 | 经营活动现金净流量与净利润比率 | AED001 | 205 | | | 营业收入现金含量 | AED002 | 206 | | | 全部资产现金回收率 | AED003 | 207 | | | 现金转换周期 | AED004 | 208 | | 资本结构因子 | 流动资产比率 | AEE001 | 209 | | | 货币资金比率 | AEE002 | 210 | | | 存货比率 | AEE004 | 211 | | | 固定资产比率 | AEE005 | 212 | | | 负债结构比 | AEE006 | 213 | | | 净资产比率 | AEE007 | 214 | | | 资产负债比率 | AEE008 | 215 | | | 非流动负债比率 | AEE009 | 216 | | | 流动负债比率 | AEE010 | 217 | | | 有形资产净值债务率 | AEE011 | 218 | | | 资产现金回收率(TTM) | AEE012 | 219 | | | 应收账款占比 | AEE013 | 220 | | 偿债能力因子 | 产权比率 | AEF001 | 221 | | | 流动比率 | AEF002 | 222 | | | 速动比率 | AEF003 | 223 | | | 现金比率 | AEF004 | 224 | | | 营运资金 | AEF006 | 225 | | | 保守速动比率 | AEF007 | 226 | | | 经营净现金比率(短期债务) | AEF009 | 227 | | | 经营净现金比率(全部债务) | AEF010 | 228 | | 营运能力因子 | 应收账款周转率(TTM) | AEG001 | 229 | | | 存货周转率(TTM) | AEG002 | 230 | | | 运营资金周转率 | AEG003 | 231 | | | 总资产周转率(TTM) | AEG004 | 232 | | | 固定资产周转率(TTM) | AEG005 | 233 | | | 应收账款周转天数(TTM) | AEG006 | 234 | | | 存货周转天数(TTM) | AEG007 | 235 | | | 流动资产周转率(TTM) | AEG008 | 236 | | | 流动资产周转天数 | AEG009 | 237 | | | 总资产周转天数 | AEG010 | 238 | | | 股东权益周转率 | AEG011 | 239 | | 成长类因子 | 营业收入增长率 | AEH001 | 240 | | | 净利润增长率 | AEH002 | 241 | | | 净资产增长率 | AEH003 | 242 | | | 固定资产增长率 | AEH004 | 243 | | | 总资产增长率 | AEH005 | 244 | | | 投资收益增长率 | AEH006 | 245 | | | 营业利润增长率 | AEH007 | 246 | | | 期间费用增长率 | AEH008 | 247 | | 财报衍生因子(TTM) | 营业总收入(TTM) | AEI001 | 248 | | | 营业收入(TTM) | AEI002 | 249 | | | 营业总成本(TTM) | AEI003 | 250 | | | 营业税金及附加(TTM) | AEI004 | 251 | | | 销售费用(TTM) | AEI005 | 252 | | | 管理费用(TTM) | AEI006 | 253 | | | 财务费用(TTM) | AEI007 | 254 | | | 资产减值损失(TTM) | AEI008 | 255 | | | 营业利润(TTM) | AEI009 | 256 | | | 利润总额(TTM) | AEI010 | 257 | | | 所得税(TTM) | AEI011 | 258 | | | 净利润(TTM) | AEI012 | 259 | | | 归属母公司股东的净利润(TTM) | AEI013 | 260 | | | 少数股东损益(TTM) | AEI014 | 261 | | | 经营活动现金净流量(TTM) | AEI016 | 262 | | | 现金及现金等价物净增加额(TTM) | AEI019 | -------------------------------------------------------------------------------- /第二阶段任务总结及成果分析展示.md: -------------------------------------------------------------------------------- 1 | # 第二阶段任务总结及成果分析展示 2 | 3 | ### 这一阶段工作主要内容 4 | 5 | 1. 因子梳理,编码,计算 6 | 7 | ​ 本次梳理了6大类19小类,总计385个股票因子;2大类总计18个指数与行业因子,并对这些因子进行了编码,因子类别以A-Z编码,因子编号以3位0-9数字编码.完成计算的股票因子总计172个.具体详情参照附件[quant_factors.pdf][1] 8 | 9 | 2. 新模型设计 10 | 11 | ​ 本次采用的模型是自己设计的单因子卷积神经网络,具体模型原理和建模过程下面会详细说到. 12 | 13 | 3. 回测 14 | 15 | ​ 利用单因子卷积神经网络的预测结果进行回测,回测时间范围2017-09-18至2018-11-21,下面会详细说一下训练回测数据划分规则.本次参与训练的因子共有29个,并没有将所有的因子参与训练. 16 | 17 | 4. 第一阶段成果集群部署 18 | 19 | ​ 完成代码迁移,但是还没进行调优. 20 | 21 | ### 内容介绍 22 | 23 | #### 本次梳理的因子 24 | 25 | ![](/home/chaochao/Pictures/Screenshot from 2018-12-23 13-10-43.png) 26 | 27 | #### 模型介绍 28 | 29 | ##### 模型介绍 30 | 31 | ​ 模型的原理来源于日常选股判断,人们在决定下一期要买哪些股票时,一般都会回看一段时间的历史数据,这些历史数据包含价格数据,财务数据,技术指标数据等等,但是从这些历史时间序列数据中发现对未来股票涨跌有影响价值的特征并不是所有人都能挖掘出来的,本次的模型就是采用这个原理,利用卷积强大的特征提取能力对各种历史因子序列数据进行特征提取,以此来预估未来股票的涨跌情况. 32 | 33 | ​ 模型结构如下图所示: 34 | 35 | ![](./figures/Screenshot from 2018-12-23 13-09-12.png) 36 | 37 | ##### 建模流程 38 | 39 | 1. 数据获取 40 | 41 | * 股票池:全A股(理论上应该剔除ST股票,截面期下一交易日停牌的股票以及上市未满3个月的股票,但是没有相关数据) 42 | 43 | * 数据范围:2005-01-04至2018-11-21(沪深300从2005-01-04才开始有交易数据,所以数据只能从2005-01-04开始选取) 44 | 45 | * 因子数据:这次实验只用了29个因子,具体因子如下: 46 | 47 | | 因子类别 | 因子名称 | 因子编码 | 48 | | -------------- | --------------------------------------- | -------- | 49 | | 估值因子 | 市盈率PE(TTM) | AB001 | 50 | | | 市净率PB(TTM,调整后净资产) | AB003 | 51 | | | 市现率PCF(TTM,经营现金流量) | AB005 | 52 | | 风险因子 | 20日收益方差 | AC001 | 53 | | | 个股收益的20日峰度 | AC004 | 54 | | | 20日正收益方差 | AC007 | 55 | | | 20日损失方差 | AC010 | 56 | | | 20日收益损失方差比 | AC013 | 57 | | 超买超卖类因子 | 过去5日的价格动量 | AFA001 | 58 | | | 过去10日的价格动量 | AFA002 | 59 | | | 过去1个月的日收益率的最大值 | AFA007 | 60 | | | LN(最近一个月最高价/最近一个月最低价) | AFA008 | 61 | | | 当前股价/过去1个月股价均值-1 | AFA009 | 62 | | | 过去5日的价格动量-过去1个月的价格动量 | AFA012 | 63 | | | 过去20日股价偏度 | AFA016 | 64 | | 成交量因子 | 5日平均换手率 | AFB001 | 65 | | | 10日平均换手率 | AFB002 | 66 | | | 6日成交金额的移动平均值 | AFB012 | 67 | | | 20日成交金额的移动平均值 | AFB013 | 68 | | | 6日成交金额的标准差 | AFB014 | 69 | | | 20日成交金额的标准差 | AFB015 | 70 | | 量价因子 | 资金流量指标 | AFC001 | 71 | | | 威廉变异离散量(WVAD)6日均值 | AFC003 | 72 | | 能量型因子 | AR人气指标 | AFD001 | 73 | | | BR意愿指标 | AFD002 | 74 | | | CR能量指标 | AFD003 | 75 | | 趋势型因子 | Arron-Up | AFE001 | 76 | | | Arron-Down | AFE002 | 77 | | | Arron-Osc | AFE003 | 78 | 79 | ​ 这些因子都是随便选的,这些因子相对来说计算后的缺失值较少,之所以没有选用财务类指标,是因为财务类指标三个月才更新一次,当前模型不适用财务指标类因子,后期会更改模型结构,使其适用所有因子. 80 | 81 | 2. 数据预处理 82 | 83 | * 中位数去极值:设第 T 期某因子在所有个股上的暴露度序列为$$D_{i}$$ ,$$D_M$$为该序列中位数,$$D_{M1}$$ 为序列$$|D_i-D_M|$$的中位数,则将序列$$D_i$$中所有大于$$D_M+5D_{M1}$$的数重设为$$D_M+5D_{M1}$$ ,将序列$$D_i$$中所有小于$$D_M-5D_{M1}$$的数重设为$$D_M-5D_{M1}$$;(这里的T期在这次模型中就是某个交易日,因子暴露度就是因子值) 84 | * 缺失值处理:得到新的因子暴露度序列后,将因子暴露度缺失的地方设为申万一级行业相同个股的平均值。 85 | * 行业市值中性化:将填充缺失值后的因子暴露度对行业哑变量(0,1变量,即股票属于该行业为1,不属于为0)和取对数后的市值做线性回归,取残差作为新的因子暴露度。 86 | * 标准化:将中性化处理后的因子暴露度序列减去其现在的均值、除以其标准差,得到一个新的近似服从N(0,1)分布的序列。 87 | 88 | 3. 训练集测试集划分 89 | 90 | ​ 从2005-01-04至2018-11-21总计3375个交易日,按30个交易日进行划分,总计划分了113个交易月. 91 | 92 | * 模型输入数据制作 93 | 94 | ​ 模型输入总计29个因子,每个因子取3个交易月(即90个交易日)的因子数据作为模型输入,模型输入实际上就是一个29*90的矩阵.(这样选择的原理是通过观察90个交易日的数据,预测未来一个月的股票涨跌情况). 95 | 96 | * 标签(模型输出)制作 97 | 98 | ​ 模型输出总共两类,1代表正类,0代表负类.正类负类的划分规则如下: 99 | 100 | ​ 计算3个交易月后的1个交易月各个股票的累计收益率,减去沪深300这个月的累计收益率,按超额收益率从高到低进行排序,取前30%的股票作为正类,后30%的股票作为负类,其余的股票和这些股票的因子数据丢弃不使用. 101 | 102 | 数据制作好后,按一个交易月进行滚动,提取模型的$$X_{29*90}$$和Y,数据提取过程如下图所示: 103 | 104 | ![](./figures/Screenshot from 2018-12-23 13-11-25.png) 105 | 106 | 总计提取了110个example,0\~99作为Train,100~109用作Test(也即回测的区间). 107 | 108 | 4. 训练 109 | 110 | ​ 模型总共两层卷积,每个卷积后在跟一个正则化层,卷积层后跟两个全连接层,最后再接输出层.具体训练参数如下: 111 | 112 | * 输入:29*90的矩阵,代表29个因子90个交易日的数据. 113 | * 第一层卷积:64个卷积核,卷积核尺寸90*1,每次向下移动步长为1,即一个因子一个因子进行卷积提取特征,可以对29个因子提取64个feature map. 114 | * 第二层卷积:64个卷积核,卷积核尺寸64*1(因为上一层卷积输出是29\*64),每次向下移动步长为1,即对上层卷积输出的每个因子的64\*1特征进行卷积再次提取深层特征. 115 | * 第一层全连接:384个神经元 116 | * 第二层全连接:192个神经元 117 | * 输出:2个神经元 118 | 119 | #### 回测 120 | 121 | ​ 利用训练得到的模型对100\~109的example进行预测,对预测为正类的股票的概率值降序排序,取前30只股票构成下个交易月的资产组合,由于制作数据时是按月滚动,所以调仓间隔就是30个交易日. 122 | 123 | #### 回测结果 124 | 125 | ##### 累计收益率 126 | 127 | ![累计收益率](./figures/cumulative return.png) 128 | 129 | ##### 资产组合市值行业分布 130 | 131 | 1. 第一次调仓 132 | 133 | ![](./figures/fcn/mv2017-09-18.png) 134 | 135 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2017-09-18.png) 136 | 137 | 2. 第二次调仓 138 | 139 | ![](./figures/fcn/mv2017-11-06.png) 140 | 141 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2017-11-06.png) 142 | 143 | 3. 第三次调仓 144 | 145 | ![](./figures/fcn/mv2017-12-18.png) 146 | 147 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2017-12-18.png) 148 | 149 | 4. 第四次调仓 150 | 151 | ![](./figures/fcn/mv2018-01-30.png) 152 | 153 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2018-01-30.png) 154 | 155 | 5. 第五次调仓 156 | 157 | ![](./figures/mv2018-03-20.png) 158 | 159 | ![](./figures/industry2018-03-20.png) 160 | 161 | 6. 第六次调仓 162 | 163 | ![](./figures/fcn/mv2018-05-07.png) 164 | 165 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2018-05-07.png) 166 | 167 | 7. 第七次调仓 168 | 169 | ![](./figures/fcn/mv2018-06-19.png) 170 | 171 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2018-06-19.png) 172 | 173 | 8. 第八次调仓 174 | 175 | ![](./figures/fcn/mv2018-07-31.png) 176 | 177 | 9. ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2018-07-31.png) 178 | 179 | 10. 第九次调仓 180 | 181 | ![](./figures/mv2018-09-11.png) 182 | 183 | ![](./figures/industry2018-09-11.png) 184 | 185 | 11. 第十次调仓 186 | 187 | ![](./figures/fcn/mv2018-10-31.png) 188 | 189 | ![](/home/chaochao/Desktop/多因子量化选股/fcn/industry2018-10-31.png) 190 | 191 | ---- 192 | 193 | ### 附件 194 | 195 | [1]: boloomo_factors.pdf 196 | --------------------------------------------------------------------------------