Python量化交易——股票择时到底能否赚钱?技术指标大比拼——DM指标
技术指标大比拼——DMI指标的有效性回测
Python量化交易——DM
技术指标的有效性研究
背景介绍
技术指标是股票交易中最常用的技术手段之一,abc几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib
中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib
中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。
为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里
DMI技术指标介绍
DM / DMI (Directional Movement Index),又叫动向指标或趋向指标,也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
DMI指标的基本原理是在于寻找股票价格涨跌过程中,股价藉以创新高价或新低价的功能,研判多空力量,进而寻求买卖双方的均衡点及股价在双方互动下波动的循环过程。在大多数指标中,绝大部分都是以每一日的收盘价的走势及涨跌幅的累计数来计算出不同的分析数据,其不足之处在于忽略了每一日的高低之间的波动幅度。比如某个股票的两日收盘价可能是一样的,但其中一天上下波动的幅度不大,而另一天股价的震幅却在10%以上,那么这两日的行情走势的分析意义决然不同,这点在其他大多数指标中很难表现出来。而DMI指标则是把每日的高低波动的幅度因素计算在内,从而更加准确的反应行情的走势及更好的预测行情未来的发展变化。
指标用法建议
DMI指标共有+DI(即PDI,下同)、-DI(即MDI,下同)、ADX、ADXR四条线,也是它的四个参数值,它分为多空指标(+DI、-DI)和趋向指标(ADX、ADXR)两组指标
多空指标
多空指标包括(+DI多方、-DI空方)
+DI在-DI上方,股票行情以上涨为主;+DI在-DI下方,股票行情以下跌为主。
在股票价格上涨行情中,当+DI向上交叉-DI,是买进信号,相反,当+DI向下交叉-DI,是卖出信号。
-DI从20以下上升到50以上,股票价格很有可能会有一波中级下跌行情。
+DI从20以下上升到50以上,股票价格很有可能会有一波中级上涨行情。
+DI和-DI以20为基准线上下波动时,该股票多空双方拉锯战,股票价格以箱体整理为主。
qteasy
中内置了DM交易策略
这里使用qteasy
作为回测评测的工具。
qteasy
是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易。qteasy目前最新版本为v1.0.14,可以通过pip安装,Github项目地址在这里,安装方法如下:python -m pip install qteasy
qteasy
提供了一个基于DM的内置交易策略,其创建规则如下:
按照规则计算
+DM
与-DM
,根据±DM
的值生成持仓目标信号:
1, 当+DM
>-DM
时,设置持仓目标为1
2, 当+DM
<-DM
时,设置持仓目标为-1
3, 其余情况设置持仓目标为0
上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档
433支股票五年回测结果
下面使用qteasy
进行技术指标的回测
使用qteasy
回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度和适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里
首先放出结果:DM策略的强度为
-16.7% ——该指标平均跑输原始股票-16.8%
result_df.describe()
return 策略收益率 | benchmark 基准收益率 | mdd 最大回撤 | sharp 夏普率 | alpha 超额收益 | diff | |
---|---|---|---|---|---|---|
count | 288 | 288 | 288 | 288 | 288 | 288 |
mean | 89.73% | 106.44% | 46.26% | 12.92% | -2.57% | -16.71% |
std | 177.13% | 178.18% | 11.33% | 38.22% | 21.46% | 158.68% |
min | -53.50% | -57.14% | 14.91% | -77.36% | -298.65% | -926.08% |
25% | -4.26% | -11.96% | 37.96% | -12.80% | -8.88% | -54.84% |
50% | 36.17% | 40.12% | 45.60% | 9.54% | -1.50% | -7.07% |
75% | 127.89% | 156.31% | 53.92% | 35.80% | 5.41% | 41.12% |
max | 1846.61% | 1420.35% | 74.60% | 135.92% | 82.52% | 1188.64% |
288支股票的平均收益率是106.44%,而策略平均收益为89.73%,平均跑输了原始股票16.71个百分点。
再看策略适应性:
38.23%——该指标平均适应度38.23%,表现不算理想
在所有有回测结果的288支股票中,六种典型结果的数量分别如下:
序号 | 组别 | 股票数量 | 该组平均基准收益 | 该组平均择时收益 | 该组平均超额收益 |
---|---|---|---|---|---|
1 | 力挽狂澜 | 38 | -29.43% | 30.57% | 60.00% |
2 | 锦上添花 | 68 | 113.16% | 220.53% | 107.37% |
3 | 差强人意 | 101 | 242.11% | 111.63% | -130.48% |
4 | 无力回天 | 30 | -36.29% | -18.48% | 17.81% |
5 | 屋漏逢雨 | 19 | -17.12% | -31.40% | -14.29% |
6 | 乐极生悲 | 32 | 32.45% | -13.72% | -46.17% |
综上,结论如下:
- 该指标在大部分情况下会产生正收益,产生正收益的比例有约72%
- 但是在所有正收益的情况下,有接近50%是跑输股票本身的收益的,在跑输的部分平均跑输130个百分点
- 在产生负收益的28%只股票种,有超过1/3能够部分挽回损失。
总体来说,该指标的择时不够好,平均超额收益不够理想。如果要看其他所有股票的结果,请点击这里