楼主: 邢不行
24549 289

[源码分享] 【量化小讲堂 - Python、Pandas系列】法码三因子选股模型,有多少人可以跑赢   [推广有奖]

助理

学科带头人

52%

还不是VIP/贵宾

-

威望
1
论坛币
40507 个
学术水平
443 点
热心指数
458 点
信用等级
419 点
经验
38988 点
帖子
359
精华
25
在线时间
709 小时
注册时间
2010-4-30
最后登录
2017-8-23

邢不行 在职认证  发表于 2015-11-18 22:43:17 |显示全部楼层
本帖最后由 邢不行 于 2017-5-27 14:42 编辑

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

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

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

【python量化课程】想要快速、系统的学习量化知识,可以参与我与论坛合作开设的课程:
《python量化投资入门》,我会亲自授课,随问随答。参与课程还可以免费加入我的小密圈,我每天会在圈中分享量化的所见所思,圈子介绍点击此处

微信:xbx_laoshi,量化交流Q群(快满):438143420,有问题欢迎交流。

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




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

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

本期文章尝使用python、pandas来实现法码三因子模型,并且使用中国市场的数据来验证其有效性。我们没有必要像法码的论文原文中做的那么严谨,所以对模型做出简化。
简化后具体的规则是:在每个月的最后一个交易日,计算出每个股票的总市值 * 市净率。在所有股票中选出该值最小的10只股票,并且计算这10只股票在下个月的平均涨幅,如此往复,得到每个月的收益,并计算总的选股收益,画出资金曲线。

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

【python量化课程】想要快速、系统的学习量化知识,可以参与我与论坛合作开设的课程:《python量化投资入门》,我会亲自授课,随问随答。参与课程还可以免费加入我的小密圈,我每天会在圈中分享量化的所见所思,圈子介绍点击此处。)

本期文章中可以学到的pandas知识:
  • 通过pandas导入导出文本数据。
  • groupby方法的熟练运用。
  • 如何构建多因子选股模型框架。

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

下面开始正文:

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


每一行是记录每个股票在每个月末的数据。
数据中包含以下字段:
【股票代码】股票的代码,上证股票以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个月每股经营现金流
【市净率】市净率,股价 / 最近期财报每股净资产


有了原始数据之后就是代码,下面是代码的截图,里面有详细的注释,有问题可以留言,附件中有程序的源码,回复即可下载。
程序.png


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


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

思考题

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

【python量化课程】想要快速、系统的学习量化知识,可以参与我与论坛合作开设的课程:《python量化投资入门》,我会亲自授课,随问随答。参与课程还可以免费加入我的小密圈,我每天会在圈中分享量化的所见所思,圈子介绍点击此处。)



下一期量化小讲堂大约会在12月下旬发布,主题已经定了。关于《量化小讲堂》之后想看的内容,或者相关问题,可以加我微信xbx_laoshi、Q群(快满):438143420沟通。
附件中是Python程序文件以及法码三因子模型的原文,免费,回复可见,觉得文章内容有帮助的话,顶贴是最好的鼓励!

本帖隐藏的内容

法码三因子选股模型.zip (172.94 KB)




支持楼主:购买VIP购买贵宾 购买后,论坛将奖励 10 元论坛资金给楼主,以表示您对TA发好贴的支持
 
载入中......
数据截图.png

法码三因子选股模型.zip

3.44 MB

已有 7 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
zl89 + 80 精彩帖子
2010517155lpq + 50 + 1 + 1 + 1 精彩帖子
小酌沐清风 + 5 + 1 + 1 + 1 精彩帖子
wwqqer + 5 + 5 + 5 鼓励原创
客初 + 100 + 2 + 5 + 2 精彩帖子
xddlovejiao1314 + 100 + 3 + 3 + 3 精彩帖子
fantuanxiaot + 88 + 88 精彩帖子

总评分: 经验 + 418  论坛币 + 93  学术水平 + 12  热心指数 + 15  信用等级 + 12   查看全部评分

本帖被以下文库推荐

不管去哪里 只要在路上
stata SPSS
smartlife 发表于 2015-11-18 22:45:26 |显示全部楼层
谢谢楼主,很有用。
回复

使用道具 举报

wangrongp 发表于 2015-11-18 23:02:08 |显示全部楼层
多谢邢总分享~
拿回去学习了。
回复

使用道具 举报

Captain-CUI 学生认证  发表于 2015-11-18 23:09:18 |显示全部楼层
学习一下!
回复

使用道具 举报

akak1988 发表于 2015-11-18 23:13:54 |显示全部楼层
刚入门Python, 迫不及待的想试一下!
回复

使用道具 举报

tonyme2 发表于 2015-11-18 23:31:45 |显示全部楼层
support
回复

使用道具 举报

Crsky7 发表于 2015-11-19 00:29:52 |显示全部楼层
不知Matlab和Python处理这样的数据集哪个更方便
回复

使用道具 举报

amdyxsls 学生认证  发表于 2015-11-19 08:39:51 |显示全部楼层
学习一下,很感谢
回复

使用道具 举报

lgymz88 发表于 2015-11-19 09:07:36 |显示全部楼层
最近正好在做多因子,学习一下
回复

使用道具 举报

ydb8848 发表于 2015-11-19 09:19:31 |显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2017-8-24 07:25