引言:
邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助
如果要说哪个技术指标知道的人最多,那估计非
MACD
莫属了。
因为不管你是炒A股、美股,期货期权还是炒币,任何行情软件中它都会默认出现在第一个位置。就好像是
全世界通用
的一样。
那这个指标真的对投资有很大的帮助吗?我之前有篇文章就对此进行了验证。
在这篇文章中我从MACD最经典的金叉、死叉用法入手,找出了80万次相关数据来验证其有效性。
金叉、死叉
如上图中点1处MACD指标的DIFF线(黑线)自下向上穿过DEA线(蓝线),指标认为此处交叉是黄金买点,称为
金叉
。
反之如点2处DIFF线自上向下穿过DEA线,则认为应当坚决卖出,称为
死叉
。
那将金叉、死叉作为买卖点操作能赚钱吗?我们用某茅股票来测试下。
某茅股票回测
上图中黄线代表的某茅股票本身,07年至今涨了32倍,按照金叉死叉规则买卖得到的蓝线却只涨了7倍。
这…还不如买入持有不动好啊…
为了避免特例,我干脆找来了
全部A股
4000多只股票2007年至今所有数据,得到了
80万次
金叉死叉,并统计了它们之后N日的股价表现。
如上图所示,金叉/死叉发生后股票的上涨/下跌概率基本在
50%
左右,这个概率和我
抛80万次硬币
没有本质上的区别。
由此可见,MACD的金叉死叉用法确实没有想象中那么有效。
更详细的内容你可以看我这期视频。相关数据和代码,
加我微信xbx4134
免费发你一份。
01 MACD顶底背离
这期视频后有很多同学留言说,MACD除了金叉死叉外还有
顶底背离
的用法,希望能测试一下。
其实相关研究我在大学时就自己摸索过,这次就来专门来测试下这个高人气方法。
这里先大概介绍一下顶底背离的定义。
1.顶底背离定义
顶背离
如图所示,当股价呈上升趋势(图中红线),MACD指标却呈下降趋势时(图中绿线),就构成了
顶背离
。
这被认为是
见顶
的标志,股价后续会
下跌
(图中橙线)。
同样的,
底背离
就是股价呈下降趋势时MACD指标呈上升趋势。这被认为是
底部
信号,股价倾向于
上涨
。
底背离
需要强调的是,市场上
没有统一的标准
去定义顶底背离,这里只是选取了最常用定义来讲解。
2.顶底背离案例
A股顶底背离案例
并且在其它市场也能找到不少成功案例。如下图中比特币2021年3、4月价格不断创新高,对应的MACD指标却不断下降。
BTC顶背离
这是连续
双重顶背离现象
,属于强烈的
见顶信号
。之后价格也确实从高位的6.4万(美元)最多跌到了3万以下。
那么顶底背离真的有案例中那么
无往不利
吗?
我们做量化投资的
不能只看个例
,而是要通过编程从历史数据里面去找出全部的顶底背离,看看在概率上到底是否有优势。
02 量化定义
想要实现量化顶底背离,就要把顶底背离的
模糊定义
转化为
明确的计算机语言,
这一步也是量化投资的关键。
1.量化顶背离
我们逐个看定义,
股价不断创新高
该如何量化?
找到
相邻的三根K线
作为一个组合,只要满足
收盘价高于前后两个交易日
即视为
高点
,如下图:
在下方K线图中标出
所有高点
。但发现被选中的点数量太多了,不符合我们的直观认知。
初步筛选
因此进一步筛选:高点需
同时高于过去30日任何一天的收盘价,
得到下图中4个点,这4个点就和我们主观认为的高点比较接近。
进一步筛选高点
我们再加上一个条件:选择出的高点还需大于前一高点。图中4点都符合要求。
符合定义的高点
最后的条件是:
K线创新高
的同时
,对应的DIFF值小于前一个高点
。
这样我们就成功通过
量化定义
找出了下图中顶背离位置,股价也确实开始下跌。
量化定义下产生的顶背离
经过上述步骤就能把顶背离的经验描述转化为精确的
量化规则:
规则总结
通过这个规则任何人都可以
毫不模糊
地找出顶背离的点,没有半点的模棱两可、语焉不详。
2.量化底背离
底背离的定义就是完全反过来。
先量化创新低的概念,即
收盘价低于前后两根K线。
低点:收盘价低于前后两个交易日
找出所有低点后从中筛选出
创30日新低且小于
前一低点的点,其对应的
DIFF值大于
前一低点,形成
底背离
且后续股价上升,如下图所示。
量化底背离
3.多种量化定义
以上就是本文对于MACD顶底背离的量化定义。
但要强调的是,量化定义本就是
见仁见智的
,不同的人会有不同的结论,
没有标准答案
。
比如下图是来自于某券商研报中的另一种顶底背离定义。
某券商研报:MACD顶底背离定义
你感兴趣的话可以看下这个规则,也可以
加我微信xbx4134
,我把研报原文发你。
同时如果你有更好的定义方法也欢迎
与我交流
或在
评论区留言
。
03 指数回测
有了精准的量化定义后,就可以据此找出
历史上所有
顶底背离情况,用大数据去证明它是否有效。
先来看顶底背离在沪深300指数上的实际效果。
1.数据获取与加工
针对指数进行回测,要先获取
指数数据
。
登录我们的
量化小讲堂网站
,找到主要指数历史日线数据。联系网站客服就可以免费获取一份。
www.quantclass.cn/data/stock
得到的数据如下图所示。每一行就是指数每天的
开、高、低、收
数据。
原始数据
用
Python
来计算MACD指标很简单,
几行代码
就可以搞定。
这个代码你需要的话可以对着图抄,也可以加我
微信xbx4134
获取。
计算后的结果包含了DIF、DEA及MACD每日的值:
这时就能用
Python
找出所有的顶底背离了。
需要代码可以加我微信xbx4134获取
输出结果如下图所示:
顶底背离及其后续表现
除顶底背离出现时间外,也计算了发生顶底背离后1天/5天/20天的涨跌幅。
2.指数回测
通过顶底背离位置得到相应开仓、平仓信号。
41次顶背离,24次底背离
我们在出现底背离时就全仓买入,顶背离时则全部卖出。过滤掉中间连续的重复信号。
按策略从07年至今针对沪深300指数进行操作,回测结果如下:
顶底背离在沪深300上表现一般
黄色曲线是沪深300指数从07年至今的净值表现,翻了
2倍不到
。
蓝色曲线是顶底背离策略净值,
整体下跌
且大部分时间都处于
空仓状态
(横线部分为未持仓阶段)。
由于顶底背离信号出现条件较为
严苛
,如直接
机械
的按信号进行交易很容易
错过许多大行情
,所以使用类似的
资金曲线方法
判断指标效果
并不科学
。
3.指数未来表现
下面换个方法,从发生顶底背离之后
N天涨跌幅
角度来看MACD指标是否有效。
如上图中在发生顶背离后,我们统计其未来1天、5天、20天的涨跌幅。
沪深300指数共出现24次底背离、41次顶背离,其未来1天、5天、20天涨跌幅如下:
沪深300顶底背离未来表现
24次底背离发生5日后有62%上涨概率且收益中值显著为正。1日、20日的上涨概率和收益中值都
表现较差
。
41次顶背离后不仅1日、20日都只有44%的概率下跌且收益中值
与预期相反
,5日后也只有51%的概率下跌,
并不明显
。
所以顶底背离在指数上
并未达到相应的预期
。
之后指数上再出现顶底背离时大家一定要谨慎。概率都是
五五开
而已,甚至可能是
反向指标
。比如下图的两个反例:
顶底背离反例
04 全部个股回测
下面再对
所有的个股
的全部历史数据进行测试。
回测前同样要准备
全部A股开、高、低、收
数据。
有Python编程基础的可以去网易财经这类财经网站
爬取
相关数据。
网易财经:quotes.money.163.com/stock
也可以在我们
量化小讲堂网站
获取股票历史日线数据,包含了1990年至今全部4000多只A股的
所有数据
,并且每天
实时更新
。
www.quantclass.cn/data/stock
可以加我微信xbx4134免费获取一份最新的数据。
搞定数据后,就可以用
Python编程
找出所有的顶底背离。
需要代码可以加我微信xbx4134获取
在
2007年至今
共
4000多只
股票的数据样本范围内,共出现
顶背离71473次
,
底背离55929次
。
全部A股顶底背离统计
7万多次底背离发生1天、5天、20天后的上涨概率普遍
大于51%
,收益中位数
显著为正
。
这已经是不错的概率了,特别是5日之后的54%。要知道在X场上,庄家针对你的优势就可以赚的
盆满钵满
了。
而5万多次顶背离后
预期下跌但继续上涨
的概率更大,收益中值也基本可以忽略不计。
由此可见,MACD的底背离有一定的
参考价值
,而顶背离的有效性就要打一个大大的问号了。
看到这大家对顶底背离是否有效也应该有了自己的看法。投资是
概率游戏
,以后看到顶底背离切记
三思而后行
。
05 尾声
相信一定会有人抬杠说本文中顶底背离的用法是不对的。
量化定义本就是
见仁见智
的。我更希望这篇文章
抛砖引玉
,对你将自身的投资经验转为量化定义有所帮助。
当然如果你有顶底背离更好的用法,你可以和我一样把它转换为明确的量化语言进行回测,也欢迎你加我
微信xbx4134
一起交流探讨。