Python量化交易——股票择时到底能否赚钱?技术指标大比拼——RSI指标
技术指标大比拼——RSI指标的有效性回测
Python量化交易——RSI
技术指标的有效性研究
背景介绍
技术指标是股票交易中最常用的技术手段之一,abc几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib
中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib
中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。
为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里
RSI
技术指标介绍
相对强弱指数RSI是根据一定时期内上涨和下跌幅度之和的比率制作出的一种技术曲线。能够反映出市场在一定时期内的景气程度。它由韦尔斯.怀尔德首创,发表在他的《技术交易系统新思路》一书中。(1978年版)
RSI最早被用于期货交易中,后来人们发现用该指标来指导股票市场投资效果也十分不错,并对该指标的特点不断进行归纳和总结。现在,RSI已经成为被投资者应用最广泛的技术指标之一。投资的一般原理认为,投资者的买卖行为是各种因素综合结果的反映,行情的变化最终取决于供求关系,而RSI指标正是根据供求平衡的原理,通过测量某一个期间内股价上涨总幅度占股价变化总幅度平均值的百分比,来评估多空力量的强弱程度,进而提示具体操作的。RSI的应用法则表面上比较复杂,包括了交叉、数值、形态和背离等多方面的判断原则。
指标用法建议
关于RSI的使用,首先是观察两条或多条不同参数曲线的位置关系
RSI不同参数曲线的使用方法完全与移动平均线的法则相同,参数较小的短期RSI曲线如果位于参数较大的长期RSI曲线之上,则目前行情属多头市场;反之,则为空头市场。由于参数较大的RSI计算的时间范围较大,因而结论会更可靠。但同均线系统一样无法回避反应较慢的缺点,这是 在使用过程中要加以注意的。
RSI值将0到100之间分成了从"极弱"、“弱”"强"到"极强"四个区域。"强"和"弱"以50作为分界线,但"极弱"和"弱"之间以及"强"和"极强"之间的界限则要随着RSI参数的变化而变化。不同的参数,其区域的划分就不同。一般而言,参数越大,分界线离中心线50就越近,离100和0就越远。不过一般都应落在15、30到70、85的区间内。RSI值如果超过50,表明市场进入强市,可以考虑买入,但是如果继续进入"极强"区,就要考虑物极必反,准备卖出了。同理RSI值在50以下也是如此,如果进入了"极弱"区,则表示超卖,应该伺机买入。
qteasy
中内置了RSI交易策略
这里使用qteasy
作为回测评测的工具。
qteasy
是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易。qteasy目前最新版本为v1.0.15,可以通过pip安装,Github项目地址在这里
qteasy
的安装方法:python -m pip install qteasy
qteasy
中有一个内置策略RSI是基于RSI指标创建的,其创建规则如下:
按照规则计算RSI,根据RSI的值与
ulim
/llim
的关系生成持仓目标信号:
1, 当RSI
>ulim
时,设置持仓目标为1
2, 当RSI
<llim
时,设置持仓目标为-1
3, 其余情况设置持仓目标为0
默认情况下,ulim
为70%,llim
为30%,即RSI大于70%时买入,小于30%时卖出,这两个参数是策略可调参数
上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档
433支股票五年回测结果
下面使用qteasy
进行技术指标的回测
使用qteasy
回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度和适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里
首先放出结果:RSI策略的强度为
-78.74% ——该指标平均产生-78.74%的超额收益
result_df.describe()
return 策略收益率 | benchmark 基准收益率 | mdd 最大回撤 | sharp 夏普率 | alpha 超额收益 | diff | |
---|---|---|---|---|---|---|
count | 288 | 288 | 288 | 288 | 288 | 288 |
mean | 27.70% | 106.44% | 26.41% | -30.27% | 6.77% | -78.74% |
std | 89.73% | 178.18% | 8.51% | 44.56% | 292.37% | 181.39% |
min | -50.55% | -57.14% | 8.18% | -140.20% | -1261.23% | -1386.15% |
25% | -11.68% | -11.96% | 19.76% | -62.57% | -29.36% | -137.61% |
50% | 2.74% | 40.12% | 25.38% | -32.25% | -7.14% | -27.58% |
75% | 35.97% | 156.31% | 32.47% | -1.70% | 6.75% | 20.05% |
max | 764.29% | 1420.35% | 54.36% | 132.09% | 1778.97% | 488.01% |
288支股票的平均收益率是106.44%,而策略平均收益为27.7%,平均跑输了原始股票78.74个百分点。
再看策略适应性:
-405.13%——该指标平均适应度-405.13%,表现极差
在所有有回测结果的296支股票中,六种典型结果的数量分别如下:
序号 | 组别 | 股票数量 | 该组平均基准收益 | 该组平均择时收益 | 该组平均超额收益 |
---|---|---|---|---|---|
1 | 力挽狂澜 | 43 | -31.17% | 29.68% | 60.84% |
2 | 锦上添花 | 27 | 72.44% | 170.91% | 98.48% |
3 | 差强人意 | 87 | 228.39% | 48.32% | -180.07% |
4 | 无力回天 | 31 | -32.98% | -11.73% | 21.25% |
5 | 屋漏逢雨 | 13 | -13.06% | -25.61% | -12.55% |
6 | 乐极生悲 | 87 | 130.58% | -16.34% | -146.92% |
综上,结论如下:
- 该指标仅在刚刚过半的情况下产生正收益,正收益的比例有约50%,但是要知道,296支股票本身就有68%的股票收益为正,说明择时的效果不如闭著眼睛买
- 在平均收益高达228%的一组股票中,择时收益竟然只有48%,说明择时极大地错失了机会
- 同时在平均收益达到130%的一组股票中,择时净平均产生了16%的亏损,这波反向择时让人不服不行
总体来说,该指标是所有择时指标中性能垫底的几个之一。如果要看其他所有股票的结果,请点击这里