日K<20买,日K>80卖?有点意外,这么简单的交易的交易模型竟然能有这样的讨论声量。其实不太需要争论,最简单的方法就是直接写一支程式回测,这个交易策略能不能用就一目了然了
回测时间
2003-06-30 (0050的上市日) ~ 2021-12-13,时间约18年半
买卖条件
- 日K<20买进,日K>80卖出,买卖日为隔天开盘价,ex: 2021-11-25 K值 28.60,2021-11-26 K值 13.65(跌破20),则在下一个交易日 2021-11-29 以开盘价买入
- KD 参数使用台股常用的 933,即
- 第一个参数9:代表RSV值的设定周期为9
- 第二个参数3:代表K值计算公式中的两个分母
- 第三个参数3:代表D值计算公式中的两个分母
- 一次即买入或卖出全部资金,无加减码
- 不放空
- 不考虑股息
- 先不考虑交易成本及滑价(用开盘价买卖也没有滑价的问题)
回测结果
最近五笔交易为
买进时间 | 买进价位 | 卖出时间 | 卖出价位 | 报酬率 | 持续时间 |
---|---|---|---|---|---|
2021/11/29 | 137.6 | 2021/12/7 | 141.35 | 2.73% | 8天 |
2021/10/4 | 134.7 | 2021/10/20 | 137.05 | 1.75% | 16天 |
2021/8/17 | 135.4 | 2021/8/30 | 138.65 | 2.40% | 13天 |
2021/7/22 | 137.8 | 2021/8/5 | 139.25 | 1.05% | 14天 |
2021/5/6 | 136.3 | 2021/5/26 | 134.85 | -1.06% | 20天 |
肉眼比对程式跑出的结果,和看盘软体显示的结果一致,程式看起来没有写错,18年半来总共会进行126笔交易,完整交易记录下载连结如下: 下载
回测使用的 library 为 backtesting.py,回测结果截图如下
小评 partⅠ
- 胜率 72.22%,这大概是最亮眼的地方,7成胜率在交易系统中算相当不错,虽然很多人觉得胜率是交易系统中最不重要的指标
- Max Drawdown -39.90%,还不错,因为这个区间有经历到 2008 金融风暴,4成左右的最大亏损还算 OK
- 总报酬率 193.12%,年化报酬率 6.11%,每个人对报酬率的要求不同,我个人是不满意
- 夏普值 0.398,以我的标准是不及格
眼尖的人应该有看到一栏 Buy & Hold Return
:281.61%,比这个策略的 193.12% 高,即然回测工具都特别写 Buy & Hold 的报酬了,当然再写一支程式来做对比
对比 Buy & Hold
直接上图,蓝线为0050 buy and hold 的净值,橘线上为使用这个交易策略
走势图
最大亏损
这里用的 library 是 ffn,截图资讯太多,简单整理个表格,两个 library 算出来的值有点不太一样
总报酬率 | 最大亏损 | CAGR | 年化报酬率(Daily) | 年化波动率(Daily) | 夏普值(Daily) | |
---|---|---|---|---|---|---|
buy & hold | 281.61% | -58.97% | 7.53% | 9.41% | 20.04% | 0.47 |
kd 策略 | 193.12% | -39.90% | 6.00% | 6.98% | 14.42% | 0.48 |
如果看不懂这些数据的话,建议可以先看我另一篇文章: 如何评价一个交易策略或投资组合的好坏
小评 partⅡ
其实不太容易评断这两个交易谁比较好
- 以报酬率来看 buy & hold 报酬率较高
- 以波动率和最大亏损来看,kd 策略风险较低
- 以综合的评分夏普值来看,两个交易刚好打平
- buy & hold 有完整的股息,kd 策略 发放股息的时候不一定有部位,所以实际上 buy & hold 的报酬会再好一点
加入交易成本
应该还记得前面的 kd 策略是不含交易成本的,事实上台股的交易成本并不低,有0.1425%的手续费还要买卖各扣一次,还有0.1%的交易税 (2022-01-09 更新,ETF 的交易税应为 0.1%,不是 0.3%)
现在我们加入交易成本 0.001425*2*0.28+0.003 = 0.003798 (手绩费用2.8折,够有诚意了吧),重跑刚才程式,新的结果如下
走势图
最大亏损
总报酬率 | 最大亏损 | CAGR | 年化报酬率(Daily) | 年化波动率(Daily) | 夏普值(Daily) | |
---|---|---|---|---|---|---|
buy & hold | 281.61% | -58.97% | 7.53% | 9.41% | 20.04% | 0.47 |
kd 策略 | 134.52% | -40.11% | 4.73% | 5.75% | 14.41% | 0.40 |
小评 partⅢ
加了交易成本后应该就很好选了,一个是买了后就不理它,一个还要辛苦的杀进杀出,结果最后的净值不到无脑 buy & hold 的一半
本来想说点什么
其实有回测之前我就大概猜出结果了,一般的交易系统大致可以分为「顺势交易」和「逆势交易」两种,这个策略属于后者,逆势交易的特性是胜率高
(刚才的回测也证实了),单笔获利小
也就是俗称的小赚大赔,而且有个致命的缺点是当大行情来时,无法捉到完整波段
,也就是和大赚无缘,从走势图就可以很明显看出,在2019、2020台股大涨的时候,这个策略几乎没有获利,原因很简单,因为 K>80 把股票卖掉却找不到时机重新进场,就眼睁睁看着股价上涨却毫无作为
逆势交易不好吗?不见得,取决于写策略的功力。不过逆势交易的策略不好写(相对于顺势交易),而且很容易流于对参数的最佳化而造成 overfitting。这个主题很大,讲下去没完没了不是几篇文章就能解释的,就先到此为止吧
总之网路上的话听听就好,还是要有独立判断的能力