跳至主要内容

K<20買,K>80賣真能打敗大盤?用KD指標回測0050歷史股價

· 9 分鐘閱讀
Eric Cheng

日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/29137.62021/12/7141.352.73%8天
2021/10/4134.72021/10/20137.051.75%16天
2021/8/17135.42021/8/30138.652.40%13天
2021/7/22137.82021/8/5139.251.05%14天
2021/5/6136.32021/5/26134.85-1.06%20天

肉眼比對程式跑出的結果,和看盤軟體顯示的結果一致,程式看起來沒有寫錯,18年半來總共會進行126筆交易,完整交易記錄下載連結如下: 下載

回測使用的 library 為 backtesting.py,回測結果截圖如下 0050-kd-backtesting.py-result

小評 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 的淨值,橘線上為使用這個交易策略

走勢圖

0050-kd-ffn-1

最大虧損

0050-kd-ffn-2

這裏用的 library 是 ffn,截圖資訊太多,簡單整理個表格,兩個 library 算出來的值有點不太一樣

 總報酬率最大虧損CAGR年化報酬率(Daily)年化波動率(Daily)夏普值(Daily)
buy & hold281.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折,夠有誠意了吧),重跑剛才程式,新的結果如下

走勢圖

0050-kd-ffn-3

最大虧損

0050-kd-ffn-4

 總報酬率最大虧損CAGR年化報酬率(Daily)年化波動率(Daily)夏普值(Daily)
buy & hold281.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。這個主題很大,講下去沒完沒了不是幾篇文章就能解釋的,就先到此為止吧

總之網路上的話聽聽就好,還是要有獨立判斷的能力


加入fb粉絲團!第一時間取得網站更新訊息

版權聲明

,轉載請註明出處
本文連結: https://havocfuture.tw/blog/0050-kd-backtesting