由於這邊不能打code所以放到github了
當我們自訂常見的雙均線策略,選擇
短期均線:10 天
長期均線:35 天
偏離度閾值:0.5%,區間寬度
買入信號:短期均線高於長期日均線,並且超過0.5%
賣出信號: 不滿足買入信號的所有情況
會發現這個策略在台積電,時間區間 2017/10/04 ~ 2018/10/04 的獲利比什麼都不做還差
買著不動 1.079832
策略進出 1.062731
為了改善這個策略,當我們用常見的最佳化技術,優化天數選擇後,使用長期63天、短期8天後,獲利驚人
買著不動 1.079832
策略進出 1.139511
但優化過的參數在2019/06/20~ 2020/06/12 的獲利卻又比什麼都不做還差,可見這個天數調整在這支股票不是一直有用的
網路上有些程式交易的教學都是overfitting後的結果,因為股市資料隨時間改變,所以這個問題本身就不太能分析,如果發現網路上太樂觀的文章滿有可能是行銷手段,或是驗證手法有問題,至於怎樣的驗證手法才是對的呢?最基本的就是用適合時間序列的交叉驗證,然後驗證的結果最好要是很差,請努力找讓策略在不同股票或區間效果越差越好。通常在錯誤分析這個時候會讓你收穫很多,更能想到如何改善策略。(例如最近做的策略都會發現因為在疫情下全球V型反轉而效果很好)
在有這個概念後,持續研究合理的特徵我是覺得有機會的
連結有hyperopt 的教學,如果發現合理特徵可以使用這個自動選出最佳值,連結中是一個完整的股票回測方法,未來會加入更多指標,不只看獲利還看風險...
另外用hyperopt最佳化的時候,需要做交叉驗證比較好,只要改一下hyperopt_model_score裡面內容放入時間序列的交叉驗證即可
這邊有個驗證黃金交叉這個指標的文章
程式資料可以用這個之前文章有介紹的
hyperopt教學