Python量化交易——股票择时到底能否赚钱?技术指标大比拼——STOCH指标
技术指标大比拼——STOCH指标的有效性回测
Python量化交易——STOCH
技术指标的有效性研究
背景介绍
技术指标是股票交易中最常用的技术手段之一,几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib
中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib
中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。
为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里
STOCH
技术指标介绍
STOCH指标(Stochastic Oscillator)向我们展示了有关动量和趋势强度的信息。正如我们将很快看到的,该指标分析价格变动,并告诉我们价格变动的速度和力度。STOCH指标计算K和D两条线,都在0~100之间波动。
指标用法建议
- 从取值方面考虑,80以上为超买区,20以下为超卖区,STOCH超过80就应该考虑卖了,低于20就应该考虑买入了;
- KD指标的交叉方面考虑,K上穿D是金叉,为买入信号,金叉的位置应该比较低,是在超卖区的位置,越低越好。交叉的交数以2次为最少,越多越好;
- KD指标的背离方面考虑 当KD处在高位,并形成两个依次向下的峰,而此时股份还在一个劲地上涨,这叫顶背离,是卖出的信号。 当KD处在低位,并形成一底比一底高,而股价还继续下跌,这构成底背离,是买入信号。
入场时机的判断
- 当stoch随机指标下行穿破20并且抵达10之后,指标便开始出现反转,快线上行穿破慢线回到了20的上面的话,就是买进的机会。
- stoch随机指标上行穿破80到达90一点之后,转头向下,快线穿破慢线下跌至80的下面,就是比较好的卖出的信号。
出场时机的判断
- 如果是买单的话,当stoch随机指标上升到80之后,投资人应该及早获利了结;卖单的话,stoch随机指标到达20之后则投资人可以选择平仓。 [1]
qteasy
中内置了STOCH交易策略
这里使用qteasy
作为回测评测的工具。
qteasy
是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易。qteasy目前最新版本为v1.0.14,可以通过pip安装,Github项目地址在这里
qteasy
的安装方法:
python -m pip install qteasy
qteasy
中有一个内置策略是基于STOCH指标创建的,其创建规则如下:
交易策略:
策略参数:
fk: int, 快速均线计算周期
sk: int, 慢速K均线计算周期
skm: int, 慢速K均线类型,取值范围0~8
sd: int, 慢速D均线计算周期
sdm: int, 慢速D均线类型,取值范围0~8
信号规则:
按照规则计算k值和d值,根据k值生成比例买卖交易信号:
1, 当k > 80时,产生逐步卖出信号,每周期卖出持有份额的30%
2, 当k < 20时,产生逐步买入信号,每周期买入总投资额的10%
3, 当k和d发生背离的时候,不会产生信号,用户须自行设置
上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档
433支股票五年回测结果
下面使用qteasy
进行技术指标的回测
使用qteasy
回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度和适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里
首先放出结果:STOCH策略的强度为
-72.15% ——该指标平均产生-72.15%的超额收益
result_df.describe()
return 策略收益率 | benchmark 基准收益率 | mdd 最大回撤 | sharp 夏普率 | alpha 超额收益 | diff | |
---|---|---|---|---|---|---|
count | 288 | 288 | 288 | 288 | 288 | 288 |
mean | 34.29% | 106.44% | 33.99% | -inf% | -25.32% | -72.15% |
std | 47.65% | 178.18% | 13.46% | nan% | 38.41% | 158.13% |
min | -65.20% | -57.14% | 9.70% | -inf% | -190.67% | -1324.76% |
25% | 4.23% | -11.96% | 24.49% | 5.93% | -43.93% | -107.18% |
50% | 30.14% | 40.12% | 31.86% | 37.35% | -14.67% | -15.29% |
75% | 61.72% | 156.31% | 41.57% | 74.88% | 2.19% | 22.90% |
max | 198.06% | 1420.35% | 75.90% | 161.23% | 80.72% | 183.14% |
288支股票的平均收益率是106.44%,而策略平均收益为34.29%,平均跑输了原始股票103.53个百分点。
再看策略适应性:
-197.07%——该指标平均适应度-197.07%,表现较差
在所有有回测结果的288支股票中,六种典型结果的数量分别如下:
序号 | 组别 | 股票数量 | 该组平均基准收益 | 该组平均择时收益 | 该组平均超额收益 |
---|---|---|---|---|---|
1 | 力挽狂澜 | 37 | -20.14% | 26.35% | 46.49% |
2 | 锦上添花 | 52 | 28.50% | 55.41% | 26.90% |
3 | 差强人意 | 132 | 230.28% | 58.97% | -171.31% |
4 | 无力回天 | 36 | -38.48% | -19.21% | 19.27% |
5 | 屋漏逢雨 | 14 | -28.71% | -41.94% | -13.23% |
6 | 乐极生悲 | 17 | 76.86% | -28.54% | -105.40% |
综上,结论如下:
- 该指标在绝大部分情况下会产生正收益,产生正收益的比例有约76%,但是,产生的所有正收益都较低,而且其中有大约2/3都是会跑输原始股票
- 该指标产生的实际择时效果有限,无法选择出有效的上涨波段,通常需要通过调整参数进一步改进策略的表现
总体来说,该指标的择时效果较差,基本上无法选出正确的上涨波段,平均收益非常低。如果要看其他所有股票的结果,请点击这里
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~