技术指标大比拼——ADX指标的有效性回测
Python量化交易——ADX
技术指标的有效性研究
背景介绍
技术指标是股票交易中最常用的技术手段之一,abc几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib
中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib
中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。
为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里
技术指标介绍
ADX指标全称 Average Directional Movement Index 平均定向运动指数,时用于衡量价格变动趋势的整体强度的技术指标。ADX指标通过价格变动范围变化值的平均值来衡量。也有人使用ADX配合DMI+和DMI-指标来共同衡量价格在正负方向上的波动强度。
指标用法建议
ADX衡量价格变动的趋势,因此,我们的交易信号可以根据价格变动的趋势强弱判断:
- 当ADX高于25时,会出现强劲的趋势,而当低于20时,不会出现任何趋势。
- 当ADX从高值下降时,趋势可能会结束。可能需要进行额外的研究,以确定是否平仓。
- 如果ADX在下降,这可能表明市场的方向性正在减弱,目前的趋势正在减弱。随着趋势的变化,可能希望避免交进行趋势性交易。
- 如果在长时间保持低位后,ADX上升了4或5个单位(例如,从15到20),那么它可能发出了交易当前趋势的信号。
- 如果ADX在上升,那么市场呈现出增强的趋势。ADX的值与趋势的斜率成比例。ADX线的斜率与价格运动的加速度(变化趋势斜率)成正比。如果趋势是恒定斜率,则ADX值趋于平缓。
qteasy
中的ADX内置策略
这里使用qteasy
作为回测评测的工具。
qteasy
是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;未来还将提供实时自动化交易功能。该项目正在开发中,Github项目地址在这里
qteasy
的安装方法:python -m pip install qteasy
qteasy
中有一个内置策略是基于ADX指标创建的,其创建规则如下:
ADX交易策略:
基于ADX指标判断当前趋势的强度,从而根据趋势强度产生交易信号
- 当ADX大于25时,判断趋势向上,设定持仓比例为1
- 当ADX介于20到25之间时,判断为中性趋势,设定持仓比例为0 3, 当ADX小于20时,判断趋势向下,设定持仓比例为-1
上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档
433支股票五年回测结果
下面使用qteasy
进行技术指标的回测
使用qteasy
回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度和适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里
首先放出结果:ADX策略的强度为
12.45% ——该指标能平均产生12.45%的超额收益
result_df.describe()
rtn | benchmark | mdd | sharp | alpha | diff | |
---|---|---|---|---|---|---|
count | 296.000000 | 296.000000 | 296.000000 | 296.000000 | 296.000000 | 296.000000 |
mean | 1.047650 | 0.923122 | 0.473209 | 0.274161 | -0.000117 | 0.124527 |
std | 2.240340 | 1.700960 | 0.133260 | 0.412251 | 0.206761 | 2.227343 |
min | -0.700151 | -0.646602 | 0.184810 | -1.938087 | -2.752121 | -9.676332 |
25% | 0.012122 | -0.119593 | 0.378482 | -0.023001 | -0.065888 | -0.407317 |
50% | 0.550242 | 0.296901 | 0.474280 | 0.278852 | 0.014613 | 0.059788 |
75% | 1.357002 | 1.369048 | 0.559162 | 0.566107 | 0.081492 | 0.586153 |
max | 26.655793 | 14.203513 | 0.865547 | 1.402457 | 0.582459 | 25.113934 |
296支股票的平均收益率是92%,而策略平均收益为104%,平均跑赢了大盘12.5个百分点。
再看策略适应性:
45.5%——该指标平均适应45.5%的股票
在所有有回测结果的296支股票中,六种典型结果的数量分别如下:
序号 | 组别 | 股票数量 | 该组平均基准收益 | 该组平均择时收益 | 该组平均超额收益 |
---|---|---|---|---|---|
1 | 力挽狂澜 | 49 | -26.8% | 50.5% | 77.3% |
2 | 锦上添花 | 70 | 116% | 247% | 130% |
3 | 差强人意 | 88 | 236% | 100.7% | -135.9% |
4 | 无力回天 | 24 | -38.3% | -18.6% | 19.6% |
5 | 屋漏逢雨 | 27 | -25.2% | -37.6% | -12.4 |
6 | 乐极生悲 | 27 | 37.5% | -15.4% | -52.9% |
综上,结论如下:
- 该指标在大部分情况下都可以取得正收益,约70%
- 但是有大量的股票虽然产生了正收益,但结果差强人意:约30%,这是其最大弱点
- 只有一半不到的股票产生了超额收益:约45%
总体来说,该指标的择时效果一般。如果要看其他所有股票的结果,请点击这里