引言:邢经理的系列帖子《量化小礼堂》,希望通过实际案例帮助初学者运用python进行量化投资,了解行业研究方向,为大家提供帮助。
前言:
蛇吃尽,扬州跨鹤。 人性的贪婪,像死者,像来者。
王朝兴亡,人生起落。 周期更替,顺之则昌,逆之则亡。
金融市场变化多端,但只有人性和周期是一致的。
qldbd改进以不变应万变,量化策略也是如此。 从奇特的人性和周期出发构建战略,就能经受市场的考验。
本文从周期的角度介绍了一种简单有效、可扩展的量化策略。
策略结果
01 股灾性牛市
如果你最近(2021年1月底)关注股市,你一定知道这种奇怪的现象:
上证指数从2019年1月的2440点上涨至至今3500点左右,至涨幅高达43%
但是,许多股票反而跌破了指数在2440点时的价格
其间,个股大部分下跌,但大市值蓝筹股在上涨较少,指数中为权重较大,因此带动指数一同上涨。
大盘涨得飞起,个股却跌得要死,大家请参阅股灾性牛市。
1
市值小的战略
虽然最近市值高的股票经常上涨,但我一直认为市值高的股票很好。A股前十几年可是小市值股票的天下
我在2016年写了一篇名为《10年翻400倍的策略》 (包括代码)的文章。
这个战略的利益被夸大了,但不含水分。 原理也非常简单。每周选取市值最小的30只股票,持有一周,如此每周循环。
从2007年开始按照该战略交易,2020年为最高能翻600多倍,最近撤出了很多,但3358www.Sina.com/。
最近出现了那么多拆迁和注册制,有些同学认为战略失效了。
但是市场是净值依旧有400多,有的只是不断往返的周期。 看看有几百年历史的美国市场就知道了。
2
“好50”惨案
从美股100年的历史来看,市值小的股票一直在上涨,学术界也有理论解释。
但是,市场风格总是波动的。 从1960年末到1970年初的10年间,美国股市整体市值上涨最多的只有50只股票,历史上被称为“没有永远的优和差”行情。
当时,大家都在购买可口可乐、迪士尼、麦当劳、运输等市值较高的蓝筹股。漂亮50
“漂亮的50”一直是独占的吗? 世事无常,从1972年到1974年,这些大型蓝筹股开始集体下跌。
“漂亮50”从高点下跌了百分之
其中迪士尼跌幅为这和A股当前的状况很像,只不过美国人买的是可乐,我们换成了茅台。,跌幅最小的麦当劳也为高达80%。 同步为67%
标普500只跌了37%
天下大势,久别必合久别。 股市也一样,一种风格所以大家千万不要觉得基金抱团的大市值蓝筹股,有“护城河”就会只涨不跌。,都只是周期。
作为投资者,一根筋不能只买大的市场价格或小的市场价格。 更好的方法是学习它们之间是如何工作的。涨久必跌,跌久必涨
现在,我给大家展示一下在大小不同的磁盘之间轮换的量化策略。
02 不论周期如何波动,只要我们一直风口潮头就行。
为了便于研究和理解,本文以大小盘风格轮动表示市值较大的股票,以大盘指数表示市值较小的股票。
本文以沪深300为大盘指数,由a股市值最大的300只股票组成,小盘指数
5.9%,妥妥的大市值核心资产。
小盘指数我们选择创业板指数,它由创业板中的100只股票组成,占总市值的9.5%。
1
策略来自市场经验
lhdqt长期泡在市场中,总能觉得自己发现一些了规律。比如我自己就注意到,市场走势存在延续性。
举例来说,上图中2010年9月28日至30日期间,大盘前一个月涨幅优于小盘,次日依旧优于小盘,延续了之前的表现。
同理,2010年11月17日至19日期间,小盘前一个月涨幅优于大盘,次日依旧优于大盘,也延续了之前的表现。
也就是说市场存在惯性。前期涨得多的指数,后期也大概率会涨得多。
当然这只是我肉眼观察到的现象,不一定普适。但不妨碍我尝试着基于此构建一个量化策略。
其实很多量化策略就来自这些实盘经验。把这些经验数量化、规则化形成一套严谨的买卖逻辑,就能构建一个完整的量化策略。
2
风格轮动策略
根据市场惯性经验,我们构建如下量化策略:
1. 交易对象:沪深300、创业板指数的ETF,前者代表大市值,后者代表小市值。
2. 筛选条件:用最近N日的涨跌幅,作为筛选条件(默认N=20,即大约为最近一个月)。
3. 风格轮动:每日根据条件,选择涨幅大的指数持有。
来举个例子讲解策略细节。
2010年9月28日开始运行策略。收盘后发现沪深300最近20天涨幅为1.08%,优于创业板。那就在次日开盘时买入沪深300的ETF。
指数无法直接交易,用ETF代替。我在之前的文章《一念之差,少赚一百万》中介绍过几种投资指数的方法。
次日(9月29日)收盘前,发现沪深300的涨幅依旧占优势,那就维持沪深300的仓位不变。
时间来到11月9日,收盘前发现创业板前月的表现首次超过沪深300。我们就在当日收盘时卖掉之前持有的沪深300ETF,然后在次日开盘时买入创业板ETF。
之后都按照这样的方法,每天收盘前计算大小盘指数前20天的涨跌幅,并在下日持有表现好的。
这样我们就把之前关于市场的经验转换成了一个明确买点、卖点,可无脑执行的量化策略。
3
策略回测
那这个策略能赚钱吗?
很多时候经验是不可靠的。人脑不够精确,又会带上主观偏差,只看想看到的东西。
想要知道这个根据经验总结出来的策略是否有效,最好的方法,就是用历史数据和Python代码来验证这个策略,看看在历史上这个策略的表现。
运行代码后得到结果:
回测时间从创业板指数诞生的2010年开始,至2021年1月。在扣除手续费后,策略翻了8.48倍,年化收益22.42%,远超同期大盘(2.15倍)和小盘(3.67倍)的表现。
但美中不足的是,该策略的最大回撤高达48.33%,很多人在实盘中无法接受这么大的回撤,所以需要进行优化。
03 策略优化
1
策略分析
目前策略在收益上的表现已经不错了,所以我们主要针对最大回撤进行优化。
想要降低回撤,最好的办法就是回到最大回撤发生的时间,2015年6月3日至8月26日,看看当时的市场发生了什么。
当时恰逢15年股灾,沪深300和创业板指数都处于下跌状态,市场整体处于深度熊市。
我们在这段时间内挑了几天比较典型的持仓:
6月26日小盘相对跌的少,持有大盘,5日后亏损5.26%
7月28日小盘相对跌的少,持有小盘,5日后亏损1.42%
不难发现,在市场整体下跌时,策略只是在大小盘之间选择跌得少的买入。即使两者中选对了,也仍然是跌。
当市场处于明显熊市,再傻傻的按照策略操作,最多只能让我们少亏,这明显是不对的。
2
策略优化
据此,我们尝试对策略做优化。
当两个指数近20天都下跌时,我们认为市场处于熊市,所以第二天直接空仓。
新的策略能否达到预期?光凭脑子yy和嘴说是没用的。还是要利用Python和数据进行验证,代码如下:
只需新增三行代码就能达到想要的效果。新策略的结果如下:
蓝线:沪深300 橙线:创业板指数 灰线:风格轮动
不仅最大回撤按照预期的从48.33%下降到29.13%,净值也从8.48提升到了11.71。
最大回撤的时间段从2015年变为了2018年,如果你想继续优化策略,可以去看看当时发生了什么,能不能总结出原因?
总的来说,这次优化还是很成功的,改进后的策略在风险和收益上的表现都有所提升。
3
进一步优化
此外再给大家提供一些优化思路 -- 修改策略的变量。
之前的策略用沪深300、创业板指数。但代表大盘的指数还有上证50、上证综指等等。小盘指数也可选择中证500或者中证1000。
与此同时,20日涨跌幅这个筛选条件,可以变成其他日涨跌幅,比如10日、30日、40日等。
这些改变在代码中只要改几个变量就能实现。这里我们仅将大盘指数从沪深300变为上证50,其余不变,看看策略表现如何。
蓝线:沪深300 橙线:创业板指数 灰线:风格轮动
策略的年化收益率从26.21%提升到了27.61%,最大回撤也下降了2%,收益进一步提升,风险也进一步下降。
04 其他方法
本文介绍了在两个指数之间进行轮动的量化策略。
如果我们的思路再开阔一点,其实可以将轮动的对象从指数变为其他东西。
比如在两个自己喜欢的股票之间轮动,在白酒和券商之间轮动,在比特币和以太坊轮动...
我可以提前透露一下,这个策略在BTC和ETH之间轮动的收益非常爆炸,本文点击“在看”超过100,我就公布策略结果。
其实思路还可以进一步放开。我们甚至可以跳出轮动这个框架,尝试更专业的玩法 -- 构建股指期货多空。
关于什么是股指期货,大家可以看我之前的文章《一念之差,少赚100万》。运用股指期货我们可以做多优势指数,做空劣势指数。
股指期货多空组合
这样我们的收益就完全取决于两个指数之间的差异,整体的资金曲线也会和大盘都是无关。由于策略比较复杂,本期篇幅有限就不展开了。
关于本文如果还有其它不明白的地方,可以加我微信xbx3642沟通。