手把手教你使用Python量化选股

引言

分析逻辑

选股涉及两个方面,一是公司分析,包括财务状况、发展潜力和成长性等,这方面是俗称的基本面分析,是股票投资者的基本素质要求;二是股票分析。 股票分析主要回答三个问题:

(1)如何判断一只股票有投资价值?

(2)如何从股票池中选出符合自己认为有价值的股票?

(3)选出合适的股票后如何构建投资组合并动态调整?

总体思维:多层次多角度分析

(1)多角度保证在市场大方向上看对的正确率尽可能增加,多层次可以和多角度相互验证,获取超额收益。

(2)通过自上而下(宏观-产业-公司)的分析框架确定投资方向,选择符合投资方向的最优标的。

Python操作思路:使用tushare包获取基本面和交易数据,使用Pandas和Matplotlib对数据特征进行描述性统计和可视化分析;根据股票财务和行情指标进行排序,通过设置参数和过滤值筛选股票。具体指标包括市盈率、市净率、流通股本、总市值、每股公积金、每股收益、收入同比、利润同比、毛利率、净利润率等。

前期准备

使用tushare开源包获取A股所有上市公司截至目前(2018年12月3日)的基本面数据和交易数据,对数据进行清洗和探索。

数据特征:

code,代码;name,名称;industry,细分行业;area,地区;pe,市盈率;outstanding,流通股本;totals,总股本(万);totalAssets,总资产(万);liquidAssets,流动资产;fixedAssets,固定资产;reserved,公积金;reservedPerShare,每股公积金;eps,每股收益;bvps,每股净资;pb,市净率;timeToMarket,上市日期;undp 未分配利润;perundp 每股未分配;rev 收入同比(%);profit 利润同比(%);gpr 毛利率(%);npr 净利润率(%);holders_num 股东人数;交易数据各变量含义:代码,名称,涨跌幅,现价,开盘价,最高价,最低价,昨日收盘价,成交量,换手率,成交额,市盈率,市净率,总市值,流通市值。

数据探索与分析

大盘股vs小盘股

为什么要划分大盘股和中小盘股呢?换句话,大盘股和小盘股有什么明显的区别吗?一般而言,相同业绩的个股,小盘股的市盈率比中盘股高,中盘股要比大盘股高。特别在市场疲软时,小盘股机会较多。在牛市时大盘股和中盘股较适合大资金的进出,因此盘子大的个股比较看好。由于流通盘大,对指数影响大,往往成为市场调控指数的工具。投资者选择个股,一般熊市应选小盘股和中小盘股,牛市应选大盘股和中大盘股。

如何划分?市场上传统划分方法是根据流通股本的大小:一般流通股本超过 10 亿股为大盘股,流通股本小于 5 亿股为小盘股,流通股本 5 亿- 10 亿的属于中盘股。如果以市值衡量,总市值大于 1000 亿的属于超大盘股,总市值大于 500 亿以上的属于大盘股,总市值小于200亿的属于小盘股,处于 200 亿-500 亿总市值的股票,属于中盘股。

实际上关于大盘股和中小盘股的划分并没有统一的标准。大盘股和小盘股的区别并不是固定的,随着上市公司的增多,以及A股市场总市值的不断变化,大小盘股的划分标准也应该是动态变化的。

结合上面描述性统计结果,流通股本中位数为4.6亿,75%分位数为9.7亿,90%分位数约为20亿,因此,将流通股本超过 20 亿股划分为大盘股,流通股本小于 5 亿股为小盘股,流通股本 5 亿- 20 亿的属于中盘股。

从分组描述性统计上看,小盘股平均市盈率为75倍,明显高于大盘股;小盘股股价平均值为 15.47 元,是大盘股股价平均值的两倍左右。可见二者在估值上还是存在较大差异的。如果要从更严谨的角度去判别,可以根据分组统计结果对数据进行统计上的T检验,这里不再展开分析。

从净利率上看,大盘股明显占优,平均 12.64% 的净利率,而中盘股是 -11.56%,看来今年营商环境恶劣,承压比较大的是中盘股类型的上市公司。大盘股往往是传统行业,例如银行、房地产、钢铁、石油石化、煤炭、有色金属等,还是最赚钱的主啊。此外,可以发现一个有趣的现象,中小盘股内部两级分化很严重,如小盘股净利率最高的达 1332.62%,最差的为 -14735.66%,意味着有的中小盘股逆势赚钱,有的可能已经亏到“底裤”都没了。收入同比上,是小盘股占优,一般而言,中小盘股的成长性要比大盘股好,但是波动性也明显更大。关于规模与股票估值可以深入挖掘的东西还很多,特别是可以使用分位数回归,研究不同规模股票之间的收益率差异。

毛利率

计算公式:毛利率=(销售收入-销售成本)/销售收入×100%。毛利率对于判断公司盈利能力而言是很重要的指标,高毛利可以反映出公司的竞争优势。但是不同行业间毛利差异是很大的,一般要在同一个行业里比较。一般而言,毛利率越高反映公司盈利能力越强,公司投资价值越高。但是,要注意不能单纯使用该指标来选股,因为高毛利背后也有坑,如把成本算到费用去了(如某些软件公司),毛利率自然就高,一定要结合净利率来看。

以下十只股票的毛利率都超过90%,但是净利率并不高!第十只股票山东金泰出现了亮点:毛利率94.36%,但是净利率却是-177.2%,利润同比-58.91%,可以说是very interesting了,感兴趣的朋友可以深入挖掘下。这年头陷阱太多,单一角度看问题,很容易掉坑里。从山东金泰近两年走势来看,相对大盘指数跌了很多,可见市场还是相对“理性”的。

再来看看毛利率最低的十只股票,毛利率为负的股票竟然有 31 只,乐视 赫然在列,”贾布斯”画好了饼,愿者上钩。对于毛利率为负的股票你还敢去买,除非你有内部消息,否则只能说你胆子很肥。把时间拉长,乐视 从 2010 年上市到 2015 年大牛市,五年时间翻了N倍,创造了创业板的神话,但是 2018 年又响起了周杰伦熟悉的歌声“又回到过去…”

利润同比

每股收益

每股收益最高的十只股票平均价格为146.074元,平均市盈率为17倍,可见市场其实还是相对理性的,经营业绩好的公司总会被人挖掘出来,给予合理的估值。

中兴通讯应该是这里面比较熟悉的名字了,不出意外,受中美“毛衣战”影响,2018年三季度财务数据全部变脸:收入同比-23.26%,利润同比-285.93%,净利率-12.35,每股收益-1.732,估计是中美贸易战最大的受害者之一了。看看资本市场的反馈如何?

在深圳的时候,经常会听到华为中兴,像金庸天龙八部里面经常被提到的北乔峰南慕容,当然,乔峰可一直没把南慕容放在眼里。中兴通讯2015年牛市的时候平平无奇,2017年因为5G概念,飞了一把,谁知2018年中美“毛衣战”飞来横祸,股价被拦腰一斩,甚是惨淡(其实还好,也就回到2017年之前)。中美“毛衣战”算是黑天鹅事件了,至少2018年年初的时候很少有人预料到会演变到这一步田地,后面解读的基本上都是马后炮。万物互联的时代一直在酝酿着,相信5G概念未来仍然会持续发酵,但是中兴仍然感觉力不从心,毕竟脖子被人掐住了,未来能否借助5G的发展突破困局,拭目以待。

市值

其实从 2017 年以来,宇宙第一大行走势一直比大盘好很多,整个市场低迷的时候,银行股反而成了护盘的重要推手,当然大金融概念也是炒了一波。

四大行走势还是很相似的,毕竟业务结构和盈利模式差异不明显,其中建行由于盘子小,波动性可能更强些,流通股本只有96亿,而工商银行、农业银行和中国银行分别为2696亿、2940亿和2107亿流通股本。

假设从2011年1月1日(若无交易日顺延)开始买入四大行,持有到今天。区间最高收益率:建行为113.61%,工行为99.33%,农行91.72%,中行为79.53%,而上证指数为59.39%;最低收益率:建行为-8.31%,工行为-9..67%,农行-6.49%,中行为-15.33%,而上证指数为-38.04%.从标准差来看,建行波动最大。可以使用夏普率来比较,此处不展开分析。

不难发现,从区间累积收益率来看,除了天龙光电外,其余三只小市值股票最高收益率均高过上证指数,其中金亚科技和*ST德奥也高于四大行;但是,这三只股票的的区间累积收益率和标准差都明显大于四大行和上证指数。特别是把时间拉长来看,投资这只极小盘股很容易出现过山车,有种“辛辛苦苦奋斗十年,一夜之间回到解放前”的感觉。

选择股票组合

选股就是不断剔除股票,留下自己“中意”股票的过程。投资策略决定了投资期限的选择,而不同的投资期限决定了选股策略。针对上述基本面和交易数据设置参数和过滤值,使用Python编程一步步剔除掉大部分股票。注意,由于这里用到的基本面数据仅仅是2018年三季度的,企业的经营是动态演进的,市场交易频率更高,因而对股票的筛选也应该是一个动态的过程,这里只是给出一个静态的选股思路,以供参考,所选股票也不构成投资建议,切记!

结语

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年3月1日
下一篇 2019年3月1日

相关推荐