【邢不行|量化小讲堂系列12-Python量化入门】法码三因子选股模型,有多少人可以跑赢

引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。

【历史文章汇总】请点击此处

【必读文章】EOS期现套利,一周时间,15%无风险收益

                     10年400倍策略分享(附视频逐行代码讲解)

个人微信:xbx9585,有问题欢迎交流。

 


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

 —策略介绍—

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

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


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

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

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

思考题:

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


对本文研究有自己的想法的朋友,欢迎在评论区留言。关于文中的代码、数据,以及下期《量化小讲堂》想了解的内容,也可以加我个人微信xbx9585交流。

如果你想入门量化,但是始终找不到方向,可以加入我的知识星球。我会在里面解答你的问题,分享我的感悟,不论是投资、技术,还是职业选择、思维方式。 

                                                                         -- 学习和成长从来都不是一个人的事 --

 

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值