最近每天的热门话题都是:股票和赚钱。
小编作为一个合格的老韭菜,好像总是逃不过,买在最高点,卖在最低点的宿命。
而最近股票行情大幅震荡,小编拿的票要不就是涨停要不就是跌停,就是这么刺激,每天仔细算算,诶,赚到的钱都不够买速效救心丸的。上周听到各种牛市的呼声,我立刻马上赎回了理财,想着要不冲进去干一把,但是每天看着盘面也不知道买些啥。
后来,番茄说,要不用Python用因子选股策略试试?看看作为一个资金十分有限的散户,能不能借助手头上的Python工具,快速又简单地找到一个适合的选股策略,帮助我们在股市中获取超额收益呢,等我们试了发现,真的可以!
因子选股,是什么?
一听到因子选股模型,很多人开始头疼,是不是太专业了,我还是放弃吧!且慢!其实特别好理解,先跟着小编用一个例子看看。
比如一场马拉松比赛你想预测一下谁会是冠军,那么理论上我们可以提前对他们做一个身体测试,比如测试他们的肺活量,最大摄氧量等,对这些测试的指标进行排名,排名靠前的选手就是冠军的有力竞争对手。
那么因子选股其实也是相似的原理,我们选股就是想选出在部分因子指标上排名靠前的股票,但是会影响股票收益的因子成千上万,比如净利润率啊,市盈率啊,换手率啊,市值等等…那这么大的数据量我怎么才能分析完呢,别怕,python带你实现!
没有数据,怎么行?
我们的分析肯定需要从数据入手,那么第一步就是找数据!小编这次选用的是常用的指标数据,诸如:市盈率、换手率等,这些指标经典又富有的内涵逻辑,并且也是市面上大家分析比较常用的指标。
那么紧接着放在小编眼前的第一个问题便出来了:如何快速获取这些行情指标数据?
难道是需要我们自己一个一个去摘录吗?那可真的是太难了!这里,我们将借助到一个叫tushare的模块,自动摘录数据。
小编将本次数据准备主要分成两大块:
每日行情数据,包括:开高收低价,以及成交量成交额数据
每日指标数据,包括:市盈率、股票市值等数据
这些数据我们都可以通过tushare pro版提供给我们的api直接获取。
核心代码示例:
整理完数据后(小编整理的是2010年至2020年6月的上市股票数据),我们便拥有了目前上市的所有股票数据。
我们可以点开其中一个文件夹,观察其字段,整理后发现其中包含:股票代码、开高收低价格、每日涨跌幅(复权后)、换手率、市盈率、总市值等26个字段。
小编看了后简直亮眼放光,激动地搓搓手开始着手对这些常见的指标进行后续的研究。
策略构建及回测
在选股和指标筛选的逻辑上,小编本着一切从简的原则:
1.按月选股,每月第一个开盘日买入,最后一个开盘日卖出;
2.将每个指标进行正、负排序,分别选出前10只股票;
3.计算10年的累积收益,找出表现最好的指标。
想尝试一下,这种最为直白和简单的单因子选股策略最终是否会有令人惊喜的表现,结果发现——诶,还真有!
通过上面这张回测结果表,我们很清晰地发现,尽管本次选股策略的逻辑极为简单,但大部分指标在这种策略模式下依旧能够获得超额收益,而其中,表现最好的“总市值”也让我们可以简单得出“整个股市的资金更偏向于流入小市值”这个结论。
可视化,验证结论
为了进一步验证这一结论,我们决定通过简单的绘图进行进一步地探索。这里我们借助的工具主要是seaborn这个模块,绘制周期收益和总市值之间的分布,以及关系散点图。
当我们将近十年的所有股票数据放置进一张图表时,由于极端情况的出现,我们很难找出关系,由此,我们需要利用图标中的分布情况对股票数据进行筛选,筛选后观察它们之间的回归关系。
当我们一步步筛选总市值主要集中的区间后,绘制总市值和周期收益的绘图,发现它还是存在较为明显的负相关性,这也从统计角度解释了两者之间存在的某种联系。
10年70倍及背后的风险
看到这里,肯定会有同学会问,标题中提到的70倍收益又是什么?
其实我们是用了同样的逻辑对上述指标进行了回测和统计,发现当我们用“周”作为周期去进行选股的时候,小市值指标的表现依旧抢眼,甚至将累计净值飙升至近70倍。
那么,将周期缩短真的是好的么?
我们通过“最大回撤”这一特征来衡量,发现当我们将周期缩短至周时,常规指标们的收益率表现确实明显提升,可最大回撤率也急速上涨。
分析过程中所需要用到的武器
从上面的分析流程中,我们不难发现,当我们在做日线级别的交易时,一个赚钱的策略并不需要多么复杂的因子就可以实现,而在整个策略过程中,如何像计算机一样保持理性和加入更为严格的风控,是我们需要更多探讨的方向。
除此之外,就是去思考如何利用自己手头有限的工具去实现这一交易策略的运行。小编将整个策略实现的过程中,所需要学习和准备的工具分为了三部分:
金融理论及基础Python工具-Pandas
理论支持和分析工具是在做一切分析前必不可少的两大要素,如果是非金融专业的,不妨考虑一下CFA,帮助你形成系统的金融框架,而对于大多数有着丰富金融知识储备的人来说,Python无疑是对于入门者最友好、最快速实现逻辑价值的工具(可点击【[color=var(--weui-LINK)]Python量化投资-入门&进阶合集】了解我们Python课程相关内容哦~)
金融数据准备
对于已经掌握了一定Python技巧的同学来说,整个量化策略最为艰难的地方在于数据的获取,这也是我们量化的第一步。关于这部分的解决方法小编已经在文章的开头给到了大家核心的代码实现,以及具体的接口(tushare pro注册入口:https://tushare.pro/register?reg=368740)
时间序列分析和可视化探索
当我们获取数据之后,我们可以算是半只脚踏入了量化的大门,接下来我们只需要利用Pandas这个模块去进行指标的处理和构造即可。在整个策略构造中,除了前面提到的seaborn模块用作数据探索外,主要用到的核心函数是pandas下的resample和groupby,这两个往往是我们处理时间序列数据处理和大量数据时的常用工具。(可点击【[color=var(--weui-LINK)]Python专题课:可视化和时间序列分析】了解相关内容)
未来篇
单因子选股是最为简单,又比较适合散户的投资策略,也有很多意想不到的选股思路(如观察上市公司的股东情况)表现也较为以优异。
但正如我之前所说,单因子策略的研究本身是存在一定的缺陷和风控上的不足的,很多时候,我们为了寻找一个表现更加稳定的策略,会去主动构造新的指标,或者将这些常见指标结合,进行多因子选股分析,而这时候我们将会用到机器学习这一强大的工具,不知道大家未来想了解继续了解哪方面的内容呢?