Python量化交易——股票择时到底能否赚钱?技术指标大比拼——CMO指标

技术指标大比拼——CMO指标的有效性回测

  • Python量化交易——`CMO`技术指标的有效性研究
    • 背景介绍
    • CMO技术指标介绍
    • 指标用法建议
    • `qteasy`中内置了CMO交易策略
    • 433支股票五年回测结果
      • -45.8% ——该指标平均产生45.8%的超额亏损
      • -71.95%——该指标平均适应度-71.95%,一半左右股票会产生负收益

Python量化交易——CMO技术指标的有效性研究

背景介绍

技术指标是股票交易中最常用的技术手段之一,abc几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。

为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里

CMO技术指标介绍

钱德动量振荡器(CMO)是Tushar Chande开发的一种技术动量指标。CMO指标是通过计算所有最近较高收盘价之和与所有最近较低收盘价之差,然后将结果除以给定时间段内所有价格变动之和来创建的。结果乘以100得出-100到+100的范围。定义的时间段通常为20个周期。

指标用法建议

CMO衡量趋势强度。CMO的绝对值越高,趋势越强。CMO的绝对值越低,表示横盘交易区间。
CMO 在-100到100之间波动,它被用来判断当前股价位于超卖还是超买区间,本策略使用这个指标生成投资仓位目标。
-CMO达到50时表示出现超买情况,当它达到−50时表示出现超卖情况。

qteasy中内置了CMO交易策略

这里使用qteasy作为回测评测的工具。

qteasy是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易。qteasy目前最新版本为v1.0.14,可以通过pip安装,Github项目地址在这里

qteasy 的安装方法:

python -m pip install qteasy

qteasy中有一个内置策略是基于CMO指标创建的,其创建规则如下:

CMO 在-100到100之间波动,它被用来判断当前股价位于超卖还是超买区间,qteasy内置的CMO策略使用CMO指标生成投资仓位目标:

交易策略:
1, 当CMO大于0时,输出弱多头
2, 当CMO小于0时,输出弱空头
3, 当CMO大于50时,输出强多头
4, 当CMO小于-50时,输出强空头

上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档

433支股票五年回测结果

下面使用qteasy进行技术指标的回测
使用qteasy回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里

首先放出结果:CCI策略的强度为

-45.8% ——该指标平均产生45.8%的超额亏损

result_df.describe()
return 策略收益率 benchmark 基准收益率 mdd 最大回撤 sharp 夏普率 alpha 超额收益 diff
count 302 302 302 302 302 302
mean 56.68% 102.50% 29.16% 4.22% -7.77% -45.82%
std 105.90% 175.95% 8.26% 40.92% 30.38% 151.85%
min -42.16% -64.66% 10.18% -147.89% -297.12% -1236.27%
25% 1.40% -14.42% 22.92% -21.07% -23.14% -90.84%
50% 22.79% 37.21% 28.06% 3.30% -2.41% -5.99%
75% 61.83% 154.45% 34.55% 30.45% 10.54% 34.35%
max 639.66% 1420.35% 56.05% 134.93% 96.21% 528.98%

302支股票的平均收益率是102.5%,而策略平均收益为56.68%,平均跑输了原始股票62.1个百分点。

再看策略适应性:

-71.95%——该指标平均适应度-71.95%,一半左右股票会产生负收益

在所有有回测结果的302支股票中,六种典型结果的数量分别如下:

序号 组别 股票数量 该组平均基准收益 该组平均择时收益 该组平均超额收益
1 力挽狂澜 52 -29.95% 23.69% 53.64%
2 锦上添花 50 101.82% 173.50% 71.68%
3 差强人意 130 213.64% 62.16% -151.48%
4 无力回天 31 -36.19% -10.31% 25.88%
5 屋漏逢雨 13 -14.93% -24.28% -9.35%
6 乐极生悲 26 37.11% -9.02% -46.13%

综上,结论如下:

  • 该指标在大部分情况下会产生正收益,产生正收益的比例只有约41%
  • 有相当多的股票产生差强人意的收益,约42%,而且平均跑输原始股票152个百分点,这是造成指标评价结果差的最大原因
  • 指标在近一半的股票上产生了超额收益:平均约40%左右,算是较高的水平,这为该指标的评分增加了一些亮色

总体来说,该指标的择时效果一般,只有股票本身表现较好时,才有较好的收益。如果要看其他所有股票的结果,请点击这里

你可能感兴趣的:(量化交易,量化投资,python,python,技术指标,量化交易,选股择时,TA-Lib)