引言:

本系列帖子“量化小讲堂”,通过实际案例教初学者使用python、pandas进行金融数据处理,希望能对大家有帮助。

【必读文章】:《10年400倍策略分享-附视频逐行讲解代码》

(http://bbs.pinggu.org/thread-5558776-1-1.html)

【所有系列文章汇总】:(http://bbs.pinggu.org/thread-3950124-1-1.html)

微信:coinquant,有问题欢迎交流。

文中用到的A股数据可在www.yucezhe.com下载,这里可以下载到所有股票、从上市日起的交易数据、财务数据、分钟数据、分笔数据、逐笔数据等。

法码三因子选股模型,有多少人可以跑赢

法码三因子模型,是金融领域的著名模型,它由诺贝尔经济学奖获得者尤金法玛开发。该模型主要通过总市值、市净率等指标,选出小盘价值股。因为他通过美国股市长时间的数据发现,市值越小、市净率越低的股票,往往会涨得更多。论文原文放在附件中,供免费下载。

本期文章尝使用python、pandas来实现法码三因子模型,并且使用中国市场的数据来验证其有效性。我们没有必要像法码的论文原文中做的那么严谨,所以对模型做出简化。

简化后具体的规则是:在每个月的最后一个交易日,计算出每个股票的总市值 * 市净率。在所有股票中选出该值最小的10只股票,并且计算这10只股票在下个月的平均涨幅,如此往复,得到每个月的收益,并计算总的选股收益,画出资金曲线。

由于法码三因子选股模型本质上是一个多因子选股模型,所以本期文章的代码已经构成了一个简单的多因子模型框架。大家可以在此框架下,开发出其它有效的选股因子。

本期文章中可以学到的pandas知识:

1.通过pandas导入导出文本数据。

2.groupby方法的熟练运用。

3.如何构建多因子选股模型框架。

对于初学者来说,本期文章的难度比较大。只有在融会贯通前几期内容的基础上,才能比较顺利的完成。

下面开始正文:

想要实现法码三因子选股模型,需要股票的每个月的市值以及市净率数据,从这里可以下载到所有股票的历史月线数据。有免费的2013年和2014年的数据,可以作为我们计算的原始数据。数据下载下来之后有一个文件,打开之后是下图这个样子:

打开网易新闻 查看精彩图片

每一行是记录每个股票在每个月末的数据。

数据中包含以下字段:

【股票代码】股票的代码,上证股票以sh开头,深证股票以sz开头

【交易日期】【开盘价】【最高价】【最低价】【收盘价】

【涨跌幅】复权之后的真实涨跌幅,保证准确

【成交量】【成交额】【流通市值】【总市值】【换手率】【后复权价】

【交易天数】本月股票实际交易的天数

【是否交易】本月该股票最后一个交易日是否交易,1代表是,0代表否

【是否涨停】本月该股票最后一个交易日收盘是否涨停,1代表是,0代表否

【是否跌停】本月该股票最后一个交易日收盘是否跌停,1代表是,0代表否

【报告类型】最近一期财务报告的类型,3-31对应一季报,6-30对应半年报,9-30对应三季报,12-31对应年报

【报告日期】最近一期财务报告实际发布的日期

【市盈率TTM】最近12个月市盈率,股价 / 最近12个月归属母公司的每股收益TTM

【市销率TTM】最近12个月市销率, 股价 / 最近12个月每股营业收入

【市现率TTM】最近12个月市现率, 股价 / 最近12个月每股经营现金流

【市净率】市净率,股价 / 最近期财报每股净资产

有了原始数据之后就是代码,下面是代码的截图,里面有详细的注释,需要源代码可以留言私信。

打开网易新闻 查看精彩图片

把数据下载下来,放到和代码同一个文件夹下,直接运行代码,结果会输出到output.csv。输出结果如下图:

打开网易新闻 查看精彩图片

从图中可以看到,从2000年起,按照法码三因子模型选股,每个月交易一次,不算手续费的话,资产可以翻一百多倍噢。

思考题

若不希望每个月选股一次,想要比如每周选股一次。那么上面所说的这个月线数据就不行了。可以下载日线数据,然后将日线数据转换为周线或者其他周期的数据,然后再构建模型。数据周期的转换方法可以看之前的文章《极简方法将日线数据转为周线、月线或其他周期》。

也可以试试看不是选10只股票,而是选5只,或者3只,看看效果怎么样。

对于文章的内容有疑问、或者《量化小讲堂》相关的问题,欢迎大家留言、私信与我进行沟通。