我用Python做一个量化指数增强策略,爽了 !附代码!

fe1a78ee851853ba339228430901031d.png

这是邢不行第 84 期量化小讲堂的分享

作者 | 邢不行、密斯锌硒

A股是一个神奇的地方,它最大的特点就是多年不涨和永远的3000点。

c213724df7d22f834f4668563c7203e2.png

正因如此,调侃A股的段子层出不穷。

甚至连中国男足这么烂的行业都有人跑来Diss,讽刺A股比国足更差。

eab630212b3ba41fec70adec0e71ce98.png

我想说的是,尽管A股有很多问题,但也绝不至于像男足一样烂到这种地步。至少A股在全球的各个排名肯定是比男足高的。

76ba84cf1c2eb8a3e1a7d22a9c7b1c16.png

5d2b0abca19b484b71ccef69555b43bc.png

左右滑动查看排名对比

但不管A股和男足哪个更菜,都改变不了中国股市一直在3000点上下波动的事实。

那么下文我们就来探究A股万年不涨背后的原理。

并在此基础上给大家衍生出一个简单又高效的A股策略,最终效果如图所示:

e9b015d030c5d797ed280d79457612af.png

300倍神秘策略

从07年至今按照策略交易可以翻200多倍,能够大幅跑赢代表大盘的沪深300指数

这个策略是如何产生的,它的原理是什么呢?这一切都要从上证指数说起。

01

上证指数简介

说到A股围绕3000点上下波动的时候,我们默认指的是上证指数。里面包含了所有在上海交易所上市的1700多只股票。

上证指数在2007年初是2700点左右,期间最多涨到过6000点,然后一路下跌。最近几年一直在3000点附近波动。

从07年到21年整整15年的时间只涨了36%,确实非常的拉胯。

1d8d9e2f863a3af417b1614b3c5a52ab.png

上证指数月线数据

虽然媒体会默认用上证指数来代表中国股市,但有一定经验的交易者基本不会看它。

因为大家都知道它是一个失真的指数,不能很好的描述市场整体状况。

那为何上证指数会失真?我们从它的编制方式入手就能得到答案这也和我们的策略息息相关。

02

上证指数编制方法

上证指数的编制方式是总市值的加权平均。

a5cc7b0a1f0ebba764b26290d7eb8304.png

也就是单个股票的当天涨跌幅会根据它的市值权重贡献到整个涨跌幅当中。

7465c63c8c17b7e0da965d7c1a01e990.png

光看定义大家可能并不能很好的理解,我这边再举一个案例。

如果对指数编制感兴趣的话,欢迎扫描下方二维码或加我微信xbx719与我交流。

412eddf609a38d35cd2b7e9d467fb07b.png

1

案例分析

如下表所示,当天茅台的总市值是2.6万亿,是所有上证股票里面最高的。依次按市值排序,最后的三毛市值仅为12亿。

把这些股票的市值加总就能得到上证指数的总市值(48万亿)。

f5db55ccfab4ae5bca424bdd6d7a37af.png

数据时间:2021年12月31日

我们以此算出每个股票占上证总市值的比例,如茅台的市值占比就是5.37%(25752/479553=5.37%),而排名最末的三毛仅为0.05%(12/479553=0.05%)

1de680252dfc8d9f1ba002aed66af33a.png

个股市值占比

茅台在当天涨跌幅是 -1.2%,那么它对大盘的影响

就是5.37% * (-1.2%)。其他股票都能以此类推。

我们最终把这些值加总就能得到当天上证指数的涨跌幅是0.57%

1abab95d2697c4b90fe32dacc5b32550.png

借此我们就能知道,股票的市值越大,对指数的影响越大。

显然茅台对指数的影响最大,而三毛对指数的影响基本可以忽略不计。

这种市值区分非常大的现象在上证指数成分股里面是非常严重的。

2

权重拖累指数

我们还是以2021年12月31日的数据为例。

9887b07c2a4386f8e82899eaaabeabe2.png

总计1750只成分股

市值排名前100的股票权重占比超过了52%,其它的1650个股票加起来也只占了48%。这像极了我们的贫富差距数据。

因此排名前100的股票对上证指数的走势影响极大。

我们观察下表中排名靠前的股票,如中某某行、中某油、中某某寿等。

feaa919cf1a2184bb85697e9c30cbb70.png

市值前100股票

你可以很容易的从它们的月K线图中看出这些股票基本处于千年不涨的情况,就像中国足球一样。

b8bce6b3847c2b93e01b1eedeeb9a13f.png

10ca7081275a48d19007476c2bf4011c.png

8336b886d171c02fab5ce8847d9cf1f9.png

     左右滑动查看更多

但这些股票一直不涨也是有原因的。

它们大多都是国有企业,只需为党和人民服务,并不需要为股东(资本家)负责。

总而言之,上证指数多年不涨的本质原因就是:对上证指数影响最大的权重股多年不涨甚至下跌,导致了指数长期在3000点附近徘徊

那既然我们了解了这个现象,就应该想着怎么去利用它。

比如我就非常好奇,如果去除或降低这些权重股的影响,同样买上证指数的成分股,它的收益是否会有所提高?

03

上证等权指数

1

等权概念

我们这边来做一个实验,仍计算这些股票每天的涨跌幅。但是规定每个股票对整体指数的影响均等。

c71c67b7bd3c87b2d4acb8fa727eaf34.png

指数等权编制规则

如茅台和三毛对指数的影响都是1/1750,与市值无关。

a70a1e135b7b0362093195dcb01c0d02.png

数据时间:2021年12月31日

也就相当于我们重新编制一个等权指数,它不再偏袒于大市值股票。

同时我们继续让新指数每天的成分股和上证指数保持一致,只不过它们各自影响的权重不同

105ec4be7c96d5dab277ab5af7e3b1ec.png

那这个等权指数的最终收益会如何,是否会超越原来的上证指数呢?

2

数据代码

想要知道这个结果,首先我们需要每天每只股票的数据。

我已经帮大家整理好了数据,包含了所有的股票(包括已退市的股票)。数据的情况如图所示:

b483bd85ace8e30175e44aa80c551ba4.png

数据展示

它包含了这个股票上市第一天至今,每天的开高收低价格以及总市值

有了数据后,通过Python代码计算就能得到相应的结果。

aaa8dff7cfcf425dad6f07650e5e47f2.png

如果你需要数据和代码的话,可以扫描下方二维码或加我微信xbx719,都是可以免费发给你的。

af32a2f08cc8042cf721270e7ab9fb13.png

3

等权指数结果

最终结果如下图所示:

图中代表上证指数的黄色曲线,从2007年至今涨了36%,非常拉胯。

而代表等权指数的蓝色曲线共涨了8.59倍。虽然15年只翻了10倍不到,但也远远跑赢了上证指数本身。

315cbbfebf781f4c167b811e3251edbe.png

等权指数净值表现更佳

这时我们再来看某足球评论员的那句“越南股市把A股爆了6:1”。

如果把上证等权指数越南股市从2010年开始做个对比的话就会发现,即使越南指数近几年开始飙涨,但它整体的涨幅还是没有跑赢等权指数。这恐怕要让刘老师失望了。

66c7beb7682de3a0e3ea1c7877dddc19.png

上证等权指数vs越南指数

通过刚刚的说明,我们已经知道,指数因为编制的原因并未真实的反映出市场的涨跌幅

我们可以通过对所有成分股等权买入的方式来实现更高的增长

4

过程实操

但这些知识除了能让大家了解指数编制的规则以外,对投资的实际帮助并不大。

因为没有办法投入实战。你没有这么多钱去买入这么多只股票。

b802f3d1901443b81f2962923c638cde.png

你也没有能力一下子去下单这么多只股票,一个个下单的话不知道要下到猴年马月。

除非你像我们一样可以实现程序化的自动下单。

感兴趣的可以观看这个视频

再者市面上也没有相应的指数基金是等权跟踪所有股票的,所以你基本上很难实现这个收益

但既然已经知道了A股不涨是因为大市值的股票拖累指数。那我们可以反过来想,如果只买小市值的股票,能不能实现更高的收益?

04

策略构建

1

小市值策略

我们可以尝试构建一个简单的选股策略。

118e336d6918fd65b5f1389db01ba4ae.png

选股策略

在每月的最后一个交易日对沪深300指数的成分股按照市值进行排序。

选取市值最小的10只股票,在次月的第一个交易日开盘时均仓买入。

之后无论涨跌如何都持有不动,等到这个月的最后一个交易日收盘时再把股票卖光。

之后继续选择此时市值最小的股票并买入,如此循环往复

2

举例说明

例如我在2006年的12月29日选出了当天沪深300成分股中市值最小的10只股票

那我就在2007年1月的第一个交易日去均仓买入它们并一直持有到1月31日再卖光。

此时再选出最新的10只股票去买入,每月重复上述操作即可。

3488c80ed8e07ff5672565ffdf9458b4.png

这样大家应该可以完全理解,这是一个非常简单的策略,执行起来也很容易。

因为每个月你只需交易一次,在行情软件上面按市值排序就能知道买什么了。

那么这个策略的收益到底如何呢?

3

策略结果

这个策略的收益我并不推荐手工计算。

我们是用了Python编程及相应的股票数据来得到这个结果。

值得一提的是,我们这里的股票数据有一列是专门用来确认这个股票是否当前属于沪深300成分股的。

8c3e584932ff94a37a78212e33d06792.png

成分股筛选

这个数据非常难得,如果对数据和代码感兴趣的话,可以扫描下方二维码或加我微信xbx719,都是可以免费发给你的。

3e92ea66d87462a58ac3845a8ece33bb.png

代码运行结果如图所示:

66276c79404a8ca56d6e8f17ad0257d5.png

蓝色曲线展示了策略的情况,最终收益有26倍左右,远远跑赢了黄色曲线代表的沪深300指数

美中不足的是,策略的最大回撤高达70%,这也是不可避免的。因为策略要求一直满仓持有股票,当所有的股票都开始下跌的时候,我们也没法幸免。

但在实际交易中,你是可以做一定择时的,可以靠你聪明的小脑袋瓜子去避免这个最大回撤。

c2ad2e66615ecefab2d2109e6038a383.png

但残酷的现实却是,对于大部分人来说,越做择时,反而回撤越大,收益越低。

4

策略拓展

我建议大家可以去尝试下这个策略,因为它本质上就是一个沪深300的指数增强。

最关键的是,这个策略每次我们只需要买10个股票,这很多人是买得起的。

甚至你还可以每次买3只股票,看看效果如何。

你可以扫描下方二维码或加我微信xbx719,问我要了代码和数据之后修改参数自己去跑一下,我这里就不赘述了。

9d9b5c8c264c397702c29092044800b0.png

那除了改变股票数量外,我们还能对这个策略做进一步的延伸吗?

05

策略优化

1

全A小市值股票策略介绍

我们之前是在沪深300的成分股里选择股票,如果在所有股票中选择市值最小的股票,结果会怎样呢?

fce640133bb73516461ca466f29c18b0.png

当然,为了避免买到容易退市的股票,我们需要加一个限制条件。

我希望所选股票最近四个季度的净利润,也就是净利润TTM大于0。

也就是说我们选择的公司至少在最近1年是赚钱的。并且这个股票不能是ST股或者即将退市的股票。

在这种情况下,我每个月挑选并买入持有市值最小的股票一个月,直到这个月的最后一个交易日才会卖出。

4e2b16c1ed11075cb4d59f369dc368d6.png

2

案例分析

比如在2006年12月末,我选出来10只股票,那么就在07年1月的第一个交易日去买入并持有整个1月。

我会在1月31日收盘卖出持有的股票,并选出新的10只股票,在2月的第一个交易日去买入并持有,以此类推。

d816d76559d6374da716ea5c20809217.png

通过这样的方法,我最终的收益有多少呢?我们还是要通过数据和Python来实现。

如果你需要这个代码和数据的话,可以扫描下方二维码或加我微信xbx719,都是可以直接发给你的。

1da28e783875408021822738a5a8ddbb.png

3

策略结果

运行代码之后最终结果如图所示:

d6970e326512cbb72310cfb240dca95c.png

蓝色曲线代表策略净值

这个看似简单的策略从2007年开始,在扣除了所有手续费后最终翻了284倍。

年化收益也由原来的25%提高到了46%,最大回撤也有所缩减

不过最大回撤相对来说还是比较大的,你可以尝试去进一步优化策略。

而当我们对比两个策略的资金曲线,你会发现不同的时间段它们的表现也是不相同的。

72c368a28cae2a86ab1368b7716096c7.png

2015年前全部A股挑选小市值的策略涨幅更大,但15年至今,沪深300成分股中选择的小市值股票反而更加优质

这源于策略风格上的差异,不同的策略适用于不同的市场。所以我们有的时候会同时去跑多个策略。

当然这是另外一个话题了,如果大家感兴趣的话可以多多点赞,也可以扫描下方二维码或加我微信xbx719交流。我们之后可以去讲讲多策略怎么跑、多策略选择以及多策略的轮动

20dfd2bc3dba5aea427298c239e58217.png

06

尾声

至此,我们通过A股指数当中一个固有的缺陷,带出了一个有意思的交易策略。

其实类似的有趣现象和以此延伸出来的交易策略还有很多。

8f9efe1fdb51794daa763ddbf844bf3a.gif

大家想看的话可以多多点赞,或加我微信xbx719交流,点赞破100的话,之后就再出一期来聊一聊A股的其他有趣现象

总而言之,我们要学会科学投资,不能只是主观的去拍脑袋,然后根据一些不准确的经验去做决策。

归根到底一句话,我们用数据说话。

07

后记

文章的最后,和大家分享一点量化投资的心得

很多人问我小白如何开始学习量化投资,有什么可以书单推荐

我的建议是千万不要直接找本书来看。

你找本编程书看,那跟着敲完“Hello World”就结束了;你找本数学书看,那看到第七页的公式就睡着了。

6209271d7897575cf05e2b21f3f1c159.png

更好的学习方式是做实际的项目,在实践中学习量化策略。

研报就是很好的量化实践项目。

一篇研报就是一个策略,作者都是年薪百万的高学历券商分析师,你要做的就是读懂策略研报,并用代码实现。

f1d21418c7b747e9c76f1c0b3e47cb16.png

在此期间什么不会学什么,哪里不会点哪里,抱着解决问题的心态去学习,事半功倍。

熟读唐诗三百首,不会作诗也会吟。

bc379d1ca68f5d55a4c3382d77b4e265.png

那么哪里可以获取研报呢?

你可以扫描下方二维码或加我的微信xbx719,我这里有分门别类几万份研报,还会实时更新

ca1bbb2755ec07878c528606d0ffad14.png

我会区分难度,精选之后发给你。

6cf5f2cc0aae7e15a0ab24ccec856553.png

加我微信xbx719后,也可以交流量化投资相关问题,我比较忙,回复的比较慢,但是看到的都会回复。

聊的开心,聊得有缘,很多量化的数据、资料都是可以送给你的。

也可以翻翻我朋友圈的内容,很多量化干货。一些不会公开发的内容,都会在朋友圈说。

7604ee9780bdfbd362379f22a48d5f18.png

联系作者

d73de7cb2fd29ba743596bb73b63eed4.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值