【量化小讲堂-Python&Pandas系列11】法码三因子选股模型,有多少人可以跑赢

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

【必读文章】:《10年400倍策略分享-附视频逐行讲解代码》
【所有系列文章汇总】:【量化小讲堂 – Python、Pandas系列】目录汇总


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

 —策略介绍—

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

本期文章尝使用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个月每股经营现金流
【市净率】市净率,股价 / 最近期财报每股净资产


有了原始数据之后就是代码,下面是代码的截图里面有详细的注释,有问题可以留言,附件中有程序的源码,需要代码可以加我微信coinquant索要。

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

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

思考题:

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

看我之前写的系列文章。

猜你喜欢

转载自blog.csdn.net/xingbuxing_py/article/details/78526138
今日推荐