2022-04-12

Back-Adjusted連續月延伸探討

股票市場的指數期貨(台指期、道瓊...等等)的遠近月缺口都不大(小於0.5%)
直接用未修正的連續月回測,可能影響不是那麼顯著
但對於有做海外期貨的人,可能要特別小心商品期貨類了

因為很多商品期貨換月缺口都很大(1%~4%)
如下紅框所示


另外,Back-Adjusted連續月的歷史資料變來變去的,剛接觸的人會有疑問:
(1) 這種資料真的適合用來研發策略嗎?
(2) 真得可以用來交易嗎?

簡單的答案:
(1) 適合,除非策略經不起過度Curve Fitting檢驗
(2) 可以,但需配合陽春或進階處理


詳細的解釋如下

(1) 這種資料真的適合用來研發策略嗎?

back-adjusted連續月最大缺點就是【依回測結束時間不同,每年的回測的結果也會不同
(註:用MultiCharts(MC)裡的back-adjusted來自組連續月時
   會以圖表所設定的Data Range結束時間為基準點,由此時間開始進行向後調整作業
   所以結束時間不同,產生的資料就會不同
   同樣的,第三方取得的back-adjusted資料,合約換月前後取的資料也會不同

這裡提出另一個觀點,供大家來檢視這個缺點
一個策略,如果參數稍微調整後,就整個走樣,暗示很可能有過度最佳化的可能性
同樣道理,經過back-adjusted調整的資料,只是整個向上或向下平移而已,走勢依舊沒變
如果經過這樣輕微的資料調整,策略的獲利能力竟然就整個走樣或大幅變化
也是暗示這個策略很可能有過度最佳化的可能性

所以如果策略是穩健的,其實是不用怕back-adjusted資料的
反倒這樣的資料還能幫你驗證策略是否有過度最佳化的跡象
如果連這樣的考驗都過不了的話,上架實際交易,虧錢的機率是很高的

舉個例子

上圖是ZS(黃豆)用difference back-adjusted連續月回測的績效圖
(垂直的Y軸為資料年度,水平的X軸為回測區間的結束年度)
MC用2007-2020的back-adjusted連續月回測,結果就是最右邊橘色垂直框框的損益績效
剩下的右到左的垂直資料,只要把資料範圍由2007-2020不斷遞減成
2007-2019
2007-2018
2007-2017
...
2007-2007
就可做成這張表
對角線的綠框,是幾乎接近真實交易的績效
(a) 檢查是否有過度最佳化的情況
由對角線的綠框一直水平往右看,查看鄰近兩格的損益是否出現劇烈變化
如果有,表示這個策略很可能有有過度最佳化的跡象,要上線真的要三思
(b) 檢查回測績效與實際交易的出入情況
最右邊橘色垂直框框為回測績效
而每一格回測績效所對應的真實績效為
水平最左邊的那格績效(對角線)
比較這兩格即可得知出入情況
當然,如果策略沒有過度最佳化的情況,這兩種檢查,其實可以省略
這裡作出這張表只是讓大家對back-adjusted資料回測有信心而已


(2) 真得可以用來交易嗎?

實際線上交易時,在合約換月的時候,資料會經過調整
使得最後一個訊號可能會跑掉
(其實MC重新載入圖時,就算是使用一般的資料,訊號也可能會跑掉)

陽春手動處理:把上個訊號的最後價位換算回調整後的價位後,用下面這個【SynchronizeMarketPosition】訊號手動調整回來

SynchronizeMarketPosition.pla

進階自動處理:要寫程式把交易時期最後訊號的成交價與該根K棒的close價存檔,重新載入圖時,如果發現訊號有出入,以存檔的close價與調整後的那根K棒的close價為back-adjusted依據,換算回新的成交價,最後把該訊號同步上去

而我個人實際上線用的是進階自動處理的方式,但程式碼不適合分享,因為有用到自己的函數


延伸閱讀

2 則留言:

  1. 請問萬年大:

    (1) 請問是否是使用連續月作為圖表價格資訊? 是的話請問連續月是否用的是Back-Adjusted 還是Non-Back-Adjusted?

    (2)請問連續月的rollover date是用CME建議的日期嗎?
    https://www.cmegroup.com/trading/equity-index/rolldates.html

    像是股指期貨NQ/ES等, CME建議的rollover date是在settlement date的五個交易日(如一週前的星期五收盤後rollover).

    我同時觀察到像是Thinkorswim的Continuous NQ也是用Non-Back-Adjusted和rollover在settlement date的五個交易日前.

    謝謝萬年大!

    回覆刪除
    回覆
    1. 我當沖沒有使用BA,只有留倉策略才用BA,轉倉日我是用自己的日期(歷史量大的那一天)

      刪除

(僅顯示與本文切題的留言)

注意:只有此網誌的成員可以留言。