颠覆认知!“垃圾股”策略长期跑,10年翻100倍、近2年6倍,吊打茅指数!| 邢不行

news/2024/5/19 1:37:37 标签: python, 量化投资, 金融, 股市

这是一个非常简单的量化选股策略,它只用到了两个基础选股指标。 

代表策略的橙色曲线2010年至今从1元涨到了112元年化收益43%;在近两年大盘下跌的情况下,这个策略更是逆势翻了6倍

这个量化策略究竟用了哪两个选股指标?具体又是如何运行的?下面我们做相应的介绍。

01 低价股往事

美股往事

1939年秋,尚未从经济大萧条的泥泞中完全挣脱的美国,经济再次陷入衰退,GDP大幅下滑,失业率重回高点。

在不远的欧洲,世界大战正式打响,战火逐步蔓延全球。内忧外患之下,一时间消极与恐慌蔓延全美,股市更是暴跌49%

而未来被称为全球投资之父、历史上最成功基金经理之一的邓普顿,在这样的背景下开启了他的投资生涯。

相较于其他投资者的悲观消沉,年轻的邓普顿有着截然不同的乐观。

他认为美国必将被卷入战争,战争刺激下所有行业都将复苏,即使是那些效率最低的公司,股价也将出现急剧上涨

2 抄底股市

这也促使邓普顿有了抄底股市的计划。

但他并未买入单一个股或大盘指数。而是借款1万美元,买入交易所中所有1美元以下的股票,平均每只股票持仓100美元左右。

4年后邓普顿选择清仓,此时他买入的104只股票中,只有4只亏损,胜率高达96%,初始的1万美元更是变为了4万,远远跑赢了同期标普500指数。

邓普顿的这次抄底为何能够成功呢?

这其实源于国外股市长期存在的低价股效应

02 低价股效应

低价股效应简介

所谓低价股效应,就是股价绝对值越低,未来的收益越高

该效应不仅被众多投资大师实践过,在学术界也受到了广泛的认可。

了解一定历史的同学都知道,投资实操界和学术界互相鄙视,能被两者同时认可的理论,一般很难出错。

那低价股效应又是如何产生的呢?

2 低价股效应成因

主要原因是低价股给投资者一种便宜的错觉。

比如在A股大家看到2000块的茅台时,可能第一反应是吐槽价格太贵;而看到2块农行时又觉得很便宜

但股票的贵或便宜不能看股票的绝对价格,而是要看估值市值。

然而如此简单的常识,却至少有80%的投资者是不知道的。不信的话,可以采访一下你炒股的朋友。

另外很多低价股处于超跌状态,超跌的股票有很强的反转效应,适合买入。

我们是做量化交易的,既然知道了低价股效应,自然就会好奇,A股是否同样存在低价股效应呢?

下面我们就借助全部的A股历史数据和Python代码,来构建一个低价股策略,去看看这样选股到底是赚还是赔?

03 A股低价股效应

数据准备

想要进行验证,我们就需要用到每只股票每天的交易数据。

我已经帮大家整理妥当,包含了所有股票(包括已退市的股票)上市至今每天的开高收低价。数据情况如图所示:

如果你需要这个数据的话,可以点我头像交流,都是可以直接发给你的。

2 策略构建

有了数据后我们就可以尝试构建相应的策略。

每月最后一个交易日结束后,我们去获取所有股票收盘价,从中选出价格最低的50只股票。

为防止选到可能退市的股票,我们约定选出的股票的收盘价需大于2元。(在A股,连续20个交易日收盘价低于1元的股票会被强制退市)

我们再从每月选出的50只股票中剔除ST股、退市股、停牌股及上市不满一年的新股

次月第一个交易日开盘时,均仓买入选出的股票,一直持有至次月最后一个交易日收盘时卖出,并重新选择此时满足条件的股票。如此循环往复。

比如我们在2022年11月底在所有股票中选出了28只符合条件的股票。

就在12月的第一个交易日开盘均仓买入,一直持有到12月最后一个交易日收盘卖出,并重新选择符合条件的股票,这次选中了17只。

由此我们发现,策略选出的股票数量不确定的,可能有50只,也可能一只没有。

那这样的策略能赚钱吗?你用Excel也可以计算,但相对繁琐,我们就借助Python代码来进行验证。

如果你需要这个代码的话,可以点我头像交流,都是可以直接发给你的。·

3 回测结果

策略回测结果如图所示:

代表策略的橙色曲线从2010年至今从1元涨到了5.78元远远跑赢了代表同期沪深300指数的绿色曲线,14%的年化收益也跑赢了同期房价涨幅。

但策略的最大回撤高达55%,这是我们只使用了单一的选股指标永远满仓造成的。

当然只看排名前50的低价股有一定的偶然性,一旦出现异常情况,就会严重影响策略结果。

04 分组统计

策略延伸

所以我们接下来不仅只看排名前50的低价股,还要看价格最低的前20%的股票的整体收益情况。

我们仍使用之前的Python代码,只需稍作修改即可。

如果你需要这个代码的话,可以点我头像交流都是可以免费发给你的。

策略结果如图所示:

价格最低的前20%的股票最终收益是3.81,同样跑赢了沪深300指数。

2 分组表现

甚至我们不仅仅只看前20%的股票,还可以根据股票价格把所有股票分成5组,分别看各组的表现。

最终结果如图所示:

各组收益间呈现出明显的递减规律,即股票价格越低,未来收益越高

这恰恰证明了A股和其他股票市场一样,存在着低价股效应

我们也比较推荐大家今后交易时加入低价股指标,以此完善自己的选股策略。

但说实话,上文构建的低价股策略年化收益偏低、回撤偏大,并不适合直接实盘使用。

下面我们就尝试着来改进一下这个策略,让它可以更贴近实战。

05 策略改进

低价股特征

改进策略最好的方法,是观察策略选中的股票:

可以发现,大部分低价股都是市值较低小盘股

我们之前的一篇文章也验证过股票市值越小,未来收益越高这一结论。

点击图片查看原文

 

接下来我们就尝试在低价股策略基础上加入小市值的筛选条件,构建一个新的量化选股策略。

2 策略改进

在原有交易模式不变的情况下,我们来改进选股条件:

1.收盘价仍大于2元。

2.价格须是最低的200只之一。

3.市值须是最小的200只之一。

当一只股票同时满足以上3个条件,我们才会选中它,这就形成了我们全新的选股策略:

我们仍借助全部的A股历史数据和Python代码来进行回测。

如果你对这个数据和代码感兴趣的话,可以点我头像交流都是可以直接发给你的。

3 回测结果

回测结果如图所示:

代表策略的橙色曲线从2010年开始至今从1元涨到了112元,年化收益高达43.76%,对比原策略有了显著的提升。

分年度来看:

除了14年、17年和20年,策略均跑赢了原始策略和沪深300指数,超额收益明显。

值得一提的是,策略从21年至今表现极为优秀,两年涨了6倍,而同期大盘则是下跌的。

4 策略跟踪

所以我很推荐大家去使用这个策略,你坚持用它的话,不说有多赚钱,肯定比自己瞎操作要好。

并且这个策略操作简便,即使不会用Python,用同花顺最基础的条件选股也能选出符合条件的股票。

为了方便大家查看策略表现,我们也在自己的网站上公开了这个策略。

你可以查看每月的最新选股结果和策略的历史表现,非常方便。

需要这个网址的话,可以点我头像交流都是可以直接发给你的。

5 思路拓展

至此我们介绍了A股的低价股效应,形成了一个有效的量化策略,并在此基础上魔改出一个更好的策略。

大家也可以延续本文的思路,加入更多的条件来优化这个选股策略。

比如可以再加入一些财务数据相关的选股条件,选出基本面更优质的公司,当这些指标结合后可能会产生更好的策略。

06 后记

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

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

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

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

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

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

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

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

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

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

你可以点我头像交流,我这里有分门别类几万份研报,还会实时更新

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

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

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

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


http://www.niftyadmin.cn/n/200378.html

相关文章

C++模板基础(七)

Concept -模板的问题&#xff1a;没有对模板参数引入相应的限制 -参数是否可以正常工作&#xff0c;通常需要阅读代码来理解 #include<iostream> #include<vector> template<typename T> void fun() {//...阅读代码来理解 } int main() {std::vector<in…

Spring Bean的生命周期介绍

Spring Bean的生命周期源码链路思维导图流程图介绍SpringBean对象的生命周期视频介绍源码链路 refresh() finishBeanFactoryInitialization(beanFactory); beanFactory.preInstantiateSingletons(); getBean(beanName); doGetBean(name, null, null, false); createBean(beanNa…

class与namespace的区别

class也是一个名字空间&#xff0c;不过他是封闭的&#xff0c;也就是说你只能在一个文件里面定义class包含什么&#xff08;通俗点讲&#xff0c;就是一个class只能有一个头文件&#xff09;&#xff1b; namespace是开放的&#xff0c;和class不同的是你可以在多个文件里面象…

C程序设计语言基础

机器语言与高级语言 计算机硬件只能够识别电平信号&#xff0c;正电平或负电平&#xff0c;计算机的的各种按钮触发各种电平与计算机交互。随着随着操作系统的发展&#xff0c;人们用1&#xff0c;0分别表示正电平和负电平&#xff0c;并由0&#xff0c;1所组成的一系列指令指…

玩具产品发美国FBA头程走什么渠道比较划算

如果要将玩具产品发往美国FBA仓库&#xff0c;选择哪个渠道比较经济实惠呢?考虑到玩具产品在出口到美国中占据了较大的比例&#xff0c;有一点需要注意&#xff0c;在出口玩具产品前一定要做好CPC认证&#xff0c;只有通过CPC认证的产品才能发往美国FBA头程。那么&#xff0c;…

力扣每日一题【2399.检查相同字母间的距离】

力扣每日一题【2399.检查相同字母间的距离】 文章目录力扣每日一题【2399.检查相同字母间的距离】&#x1f34a;题目&#x1f34b;解析&#x1f966;代码&#x1f34a;题目 给你一个下标从 0 开始的字符串 s &#xff0c;该字符串仅由小写英文字母组成&#xff0c;s 中的每个字…

护眼灯哪些牌子好?2023热门护眼灯品牌推荐

护眼灯可以说是书桌的标配&#xff0c;不管是办公桌、书桌上&#xff0c;基本上有一盏辅助台灯&#xff0c;主要是就是补足室内环境亮度&#xff0c;市面上可以选择的护眼灯&#xff0c;可谓是琳琅满目&#xff0c;让人挑花眼&#xff0c;如果选择品质不好的台灯可能对眼睛造成…

Hilt进阶--本文带你吃透Hilt自定义与跨壁垒

跨越 IOC容器的壁垒 使用依赖注入&#xff08;DI&#xff09;时&#xff0c;我们需要它对 实例 、依赖关系 、 生命周期 进行管理&#xff0c;因此DI框架会构建一个容器&#xff0c;用于实现这些功能。这个容器我们惯称为IOC容器。 在容器中&#xff0c;会按照我们制定的规则…