Python量化交易——股票择时到底能否赚钱?技术指标大比拼——MOM指标
技术指标大比拼——MOM指标的有效性回测
Python量化交易——MOM
技术指标的有效性研究
背景介绍
技术指标是股票交易中最常用的技术手段之一,abc几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib
中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib
中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。
为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里
MOM
技术指标介绍
动量线,英文全名Momentum,简称MOM。动量可以视为一段期间内,股价涨跌变动的比率。“动量”这一名词,市场上的解释相当广泛。以Momentum命名的指标,种类更是繁多。这里所介绍的动量线,是由佩里·考夫曼(Perry Kaufman)在《Trading Systems and Methods》一书所发表的简易动量模式。
- N天MOM:(当日收盘价-N天前收盘价)
指标用法示例
**请注意!**由于MOM线的用法众多,下面只是一个示例
12天M0M以O轴为中心线,O轴的上、下方,分成六等份的超买超卖区,分别为+1、+2、 3和-1、-2、-3。例如:甲股的12天MOM上升至6.8时,我们将它定义为+1。那么,13.6就是+2,20.4就是 3。相反的,-6.8定义为-1·-13·6为-2,-20·4为-3。
注意!每一支股票的超买超卖区都不一样,必须自行寻找适合的界限值。
- 短线行情,12日MOM上升至 1时,股价回档。
- 短线行情,12日MOM下跌至-1时,股价反弹。
- 中期趋势,12日MOM>+2时,经常是上升波段结束的时机。
- 中期趋势,12日MOM<<-2时,经常是下跌波段结束的时机。
qteasy
中内置了MOM交易策略
这里使用qteasy
作为回测评测的工具。
qteasy
是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易。qteasy目前最新版本为v1.0.14,可以通过pip安装,Github项目地址在这里
qteasy
的安装方法:
python -m pip install qteasy
qteasy
中有一个内置策略MOM是基于此指标创建的,其创建规则如下:
交易策略:
按照规则计算MOM,根据MOM的值生成持仓目标信号:
1, 当MOM > 0时,设置持仓目标为1
2, 当MOM < 0时,设置持仓目标为-1
3, 其余情况设置持仓目标为0
交易策略有一个可调参数n:代表MOM的计算周期,可以通过微调此参数改变策略的性能
上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档
433支股票五年回测结果
下面使用qteasy
进行技术指标的回测
使用qteasy
回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度和适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里
首先放出结果:MOM策略的强度为
-5.87% ——该指标平均产生-5.87%的超额收益
result_df.describe()
return 策略收益率 | benchmark 基准收益率 | mdd 最大回撤 | sharp 夏普率 | alpha 超额收益 | diff | |
---|---|---|---|---|---|---|
count | 288 | 288 | 288 | 288 | 288 | 288 |
mean | 100.57% | 106.44% | 46.43% | 23.19% | 0.40% | -5.87% |
std | 173.66% | 178.18% | 11.18% | 38.28% | 12.97% | 159.06% |
min | -62.09% | -57.14% | 18.14% | -101.94% | -29.95% | -1049.38% |
25% | 3.87% | -11.96% | 37.70% | -3.99% | -7.46% | -53.58% |
50% | 41.52% | 40.12% | 45.61% | 24.16% | 0.24% | 0.40% |
75% | 122.99% | 156.31% | 54.30% | 47.02% | 7.97% | 49.41% |
max | 1254.85% | 1420.35% | 81.46% | 151.49% | 73.33% | 930.22% |
288支股票的平均收益率是106.44%,而策略平均收益为100.57%,平均跑输了原始股票6个百分点。
再看策略适应性:
104.99%——该指标平均适应度104.99%,对于大部分股票能取得正收益
在所有有回测结果的288支股票中,六种典型结果的数量分别如下:
序号 | 组别 | 股票数量 | 该组平均基准收益 | 该组平均择时收益 | 该组平均超额收益 |
---|---|---|---|---|---|
1 | 力挽狂澜 | 46 | -29.55% | 41.60% | 71.15% |
2 | 锦上添花 | 72 | 117.90% | 239.67% | 121.76% |
3 | 差强人意 | 106 | 222.88% | 103.66% | -119.22% |
4 | 无力回天 | 28 | -34.71% | -12.73% | 21.97% |
5 | 屋漏逢雨 | 13 | -15.46% | -38.01% | -22.55% |
6 | 乐极生悲 | 23 | 46.59% | -14.93% | -61.52% |
综上,结论如下:
- 该指标在大部分情况下会产生正收益,产生正收益的比例有约78%
- 在产生最大正收益的两组股票中(118%和222%),该指标都能基本上保住原本走势就很好的股票,并在大约40%的股票上产生更高的收益,择时效果不错,但是也在60%的股票上因为择时导致错过涨势
- 产生负收益的股票数量不多,且大多数是因为股票本身的走势很差,而且,在走势很差的股票中,有一半都可以反败为胜,这一点颇为可贵
总体来说,该指标的择时效果较好,且有较好的抗跌性能,择时错过涨幅的情况比较可惜。如果要看其他所有股票的结果,请点击这里
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步