日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.001 = 0.001798 (手績費用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。這個主題很大,講下去沒完沒了不是幾篇文章就能解釋的,就先到此為止吧
總之網路上的話聽聽就好,還是要有獨立判斷的能力