COCO研究院

 找回密碼
 註冊
搜索
查看: 5816|回復: 12

[工具] 是否該用Back-Adjusted連續月與其優缺點

[複製鏈接]
發表於 21-10-30 12:51 | 顯示全部樓層 |閱讀模式
本帖最後由 萬年船 於 21-10-30 14:37 編輯

一直以來我都是以當沖交易為主,所以沒在使用Back-Adjusted連續月
但國外很多市場的日內波動相對小,買賣點差相對大,對當沖交易者很不友善
近期準備切入留倉的市場策略,所以開始研究了一下Back-Adjusted連續月

Back-Adjusted連續月優點:
如大家所知的,就是解決合約到期轉倉的遠近月缺口問題
這樣才不會在回測時,賺到不存在的缺口或賠到不存在的缺口(虛賺、虛賠)

Back-Adjusted連續月缺點:
1.依回測結束時間不同,每年的回測的結果也會不同(請參考下圖)
2.實際交易遇到轉倉時,要手動配合Back-Adjusted連續月調整上次留倉或訊號跑掉的價位(或程式化自動調整價位)
註:difference為業界主流的方式,但資料經過數年後的修正可能會導致價位變零或負值,ratio可避免此問題
  價位為零會有數學上除以零的問題,負值有些指標或函數可能沒考慮到此情況可能也會出問題
  (但仍應以difference為優先,只要回測期間不要太長的話,difference應不致於修正到零或負值的價位
   因為每年的回測結果會不同,太早期的資料修正太多次了,訊號不一致的情況容易變多
   所以Back-Adjusted的資料回測期間太長,意義也就不大了)
所以Back-Adjusted連續月不是只有優點,其實它也有它的缺點與麻煩

2021-10-29 上午 10-17-52.png

上圖的X軸為資料年度,Y軸為回測區間的結束年度
綠色框框為最接近真實交易的損益績效
隨著回測區間的結束年度不同,回測的損益績效也會飄來飄去
一般來說,較近期年度的資料飄的比較少,因為修正的次數比較少(如果每次修正的缺口都一樣大的話)


手動配合Back-Adjusted連續月調整上次留倉或訊號跑掉的價位,可用此SynchronizeMarketPosition訊號來達成

SynchronizeMarketPosition.zip (1.51 KB, 下載次數: 22, 售價: 1 金錢)

何時該用Back-Adjusted連續月:
1.當沖交易,可直接用未修正連續月即可,無須忍受Back-Adjusted的缺點與麻煩
2.留倉交易,如果交易次數不夠多,每年獲利不夠大,遠近月價差缺口幅度太大,則必須用Back-Adjusted連續月
第一點比較沒問題,第二點問題就大了,因為很抽象,量化交易還要靠感覺就不叫程式交易了
以下提供一個CalculateAnnualRolloverGapValueCI的指標以輔助第二點的判斷

CalculateAnnualRolloverGapValueCI.zip (2.56 KB, 下載次數: 19, 售價: 1 金錢)

此訊號前面的註解區塊是R程式原始碼,用來計算Binomial分布的信賴區間

2021-10-30 上午 11-45-07.png

在Multicharts圖裡使用此訊號時
data1請設定為該商品N年未修正連續月
data2請設定為該商品N年difference的Back-Adjusted連續月
此訊號會算出四個值
1.CI 100%:每年轉倉遠近月價差虛賺的金額
     (真實的最大金額)
2.CI 95%:每年轉倉遠近月價差虛賺的金額的95%信賴區間
     (理論上每20年有19年虛賺的金額會小於此值)
3.CI 75%:每年轉倉遠近月價差虛賺的金額的75%信賴區間
     (理論上每4年有3年虛賺的金額會小於此值)
4.Rollover Gap %:每次轉倉遠近月價差幅度百分比

以ZS(黃豆)為例,此訊號跑出來結果如下圖所示

2021-10-30 上午 11-21-36.png

Rollover Gap %為1.82%,每次轉倉遠近月缺口竟高達1.82%,其實還蠻大的,但重點不是此值
主要是要看【CI 95%】這個值,此值為$4,936.53
如果每年一口單的平均獲利金額大於$4,936.53,表示轉倉的虛缺口有95%信心水準下影響不了你
此時用未修正的連續月應該已經可以了,但如果能遠大於此值,會更好
相反如果每年一口單的平均獲利金額小於$4,936.53,表示該採用Back-Adjusted連續月

以這個策略績效來看

2021-10-30 下午 12-25-23.png

2021-10-30 下午 12-28-02.png

每年一口單的平均獲利為 7,976.94 (= 110,879.5 / 13.9)
大於【CI 95%】的$4,936.53,理當可以直接用未修正的連續月
但如果再細看近年的表現,會發現近期好幾年獲利都小於此值
表示近期幾年仍容易受轉倉的虛缺口影響
所以此策略仍用Back-Adjusted連續月會比較妥當

2021-10-30 下午 12-33-54.png




 樓主| 發表於 21-11-2 16:33 | 顯示全部樓層
本文的CalculateAnnualRolloverGapValueCI的指標訊號有個bug,已經修復
修復版本如下

CalculateAnnualRolloverGapValueCI (corrected).zip (2.61 KB, 下載次數: 12, 售價: 1 金錢)

一般來說股票市場的指數期貨(例如台指期、道瓊...等等)的遠近月缺口都不大(小於0.5%)
直接用未修正的連續月轉倉應該也無所謂
但如有做海外期貨的,可能要小心商品期貨了
因為很多商品期貨轉倉的遠近月缺口都很大(1%~4%)
如下所示

2021-11-2 下午 04-10-23.png


發表於 21-11-2 11:08 | 顯示全部樓層
本帖最後由 liawfujin 於 21-11-2 11:09 編輯

我用連續月資料跑 4 分鐘, 5 分鐘 k 線, 短線買賣訊號很多, 所以每月結算, 結算後等新合約產生訊號後再進場, 沒有轉倉, 也沒計算因跨月後因跳空而產生的指標誤差.  

每月結算, 就沒有因跨月跳空而產生的虛贏跟虛虧問題.



 樓主| 發表於 21-11-2 11:39 | 顯示全部樓層
liawfujin 發表於 21-11-2 11:08
我用連續月資料跑 4 分鐘, 5 分鐘 k 線, 短線買賣訊號很多, 所以每月結算, 結算後等新合約產生訊號後再進場 ...

直接讓舊部位結算也是一種方式,不會有轉倉問題
但一個小缺點就是如果轉倉那次有大行情,有可能會錯失


發表於 21-11-3 15:37 | 顯示全部樓層
Back-Adjusted data不能用來做price action的,就算長週期的平均線都會有影響,其他指標更不在話下,用這種基因改造data來做交易簡直是開玩笑!
 樓主| 發表於 21-11-3 16:38 | 顯示全部樓層
本帖最後由 萬年船 於 21-11-3 16:42 編輯
JimmyHK 發表於 21-11-3 15:37
Back-Adjusted data不能用來做price action的,就算長週期的平均線都會有影響,其他指標更不在話下,用這種基 ...

2021-10-29 上午 10-17-52.png


最左邊綠色框框為幾乎接近真實交易的損益績效
但隨著回測區間的結束年度不同,回測的損益績效(訊號)確實會飄來飄去
這是Back-Adjusted data在回測上的缺點

由左邊綠色框框的績效,一直水平往右看,如果這種飄的程度,無法接受,那就不適合用
但如果還能接受,其實也就還好
這個策略也有用到移動平均(XAverage)

最近期的Back-Adjusted會最接近真實交易



發表於 21-11-3 23:54 | 顯示全部樓層
萬年船 發表於 21-11-2 11:39
直接讓舊部位結算也是一種方式,不會有轉倉問題
但一個小缺點就是如果轉倉那次有大行情,有可能會錯失

觀察過每月結算後, 開始新合約的交易所產生的第一次訊號, 有時對, 有時錯! 我想相同的, 當有轉倉機制時, 有時轉倉對, 有時轉倉錯.

所以為了省事, 並減少回測時的虛贏和虛虧, 我是以每月結算的方式來測試程式的, 給大家參考!
 樓主| 發表於 21-11-4 07:38 | 顯示全部樓層
liawfujin 發表於 21-11-3 23:54
觀察過每月結算後, 開始新合約的交易所產生的第一次訊號, 有時對, 有時錯! 我想相同的, 當有轉倉機制時,  ...

你說【 開始新合約的交易所產生的第一次訊號, 有時對, 有時錯】,指的是上次實際交易時的訊號跑掉嗎?
發表於 21-11-4 11:49 | 顯示全部樓層
萬年船 發表於 21-11-4 07:38
你說【 開始新合約的交易所產生的第一次訊號, 有時對, 有時錯】,指的是上次實際交易時的訊號跑掉嗎?
...

訊號對賺錢, 訊號錯賠錢! 我的意思是, 即使用 Back-Adjusted 資料, 力求指標正確而跨月轉倉, 也會跟新合約後的交易所產生的第一次訊號一樣, 有時轉倉對, 有時轉倉錯!
 樓主| 發表於 21-11-4 14:25 | 顯示全部樓層
本帖最後由 萬年船 於 21-11-4 15:14 編輯
liawfujin 發表於 21-11-4 11:49
訊號對賺錢, 訊號錯賠錢! 我的意思是, 即使用 Back-Adjusted 資料, 力求指標正確而跨月轉倉, 也會跟新合約 ...

大概懂你的意思了,意思是說如果你的部位不是結算掉,而是轉倉繼續交易的話,有可能賺錢也有可能賠錢,機率一樣的意思,應該沒理解錯吧。

如果你的賺與賠是對稱的,的確如此
不過如果賺賠不對稱,例如最大一筆獲利金額遠大於最大一筆虧錢金額的話,那就有差別了

各種方式其實都有好有壞,只能各自取捨了


我的其中一個策略,賺與賠剛好就是這種不對稱的,如下所示
2021-11-4 下午 03-07-43.png






2021-11-4 下午 03-03-49.png
 樓主| 發表於 21-11-5 12:28 | 顯示全部樓層
本帖最後由 萬年船 於 21-11-5 14:01 編輯

前文提到back-adjusted連續月最大缺點就是【依回測結束時間不同,每年的回測的結果也會不同】
(註:用MC裡的back-adjusted自組連續月產生圖時
   會依該圖所設定的Data Range結束時間為基準點,由此時間開始進行向後調整作業
   所以結束時間不同,產生的資料就會不同)

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

所以如果策略是穩健的,其實是不用怕back-adjusted資料的
反倒這樣的資料還能幫你驗證策略是否有過度最佳化的跡象
如果連這樣的考驗都過不了的話,上架實際交易,虧錢的機率是很高的
當然此觀點並不是在合理化back-adjusted連續月在回測上不一致的缺點
這依舊back-adjusted連續月的缺點
但只有過度Curve Fitting的策略才會畏懼此缺點,穩健的策略不應懼怕此缺點

下圖是ZS(黃豆)用difference back-adjusted連續月回測的績效圖
垂直的Y軸為資料年度,水平的X軸為回測區間的結束年度
如果直接拿2007-2020的back-adjusted連續月回測,結果就是最右邊橘色垂直框框的損益績效
要產生由右到左的垂直資料,只要把資料範圍由2007-2020不斷遞減成
2007-2019
2007-2018
2007-2017
...
2007-2007
就可做成這張表
對角線的綠框,是幾乎接近真實線上交易的績效
由對角線的綠框一直水平往右看,查看鄰近兩格的損益是否出現劇烈變化

如果有,表示這個策略很可能有有過度最佳化的跡象,要上線真的要三思

2021-11-05 上午 11-59-59.png



 樓主| 發表於 21-11-6 14:38 | 顯示全部樓層
本帖最後由 萬年船 於 21-11-6 14:56 編輯

不做歷史資料換月價差調整(Back Adjusted Data)的結果其實很可怕

http://www.coco-in.net/forum.php?mod=viewthread&tid=153691&page=1#pid871244

在上面兩個連結的文章都提到未修正的連續月除了轉倉的遠近月缺口的虛賺、虛賠問題外
還有雜訊問題會導致績效變差
再針對此問題,來進行一下分析

2021-11-6 下午 12-50-42.png

上圖乍看之下,確實用back-adjusted資料的確有輾壓性的績效優勢,還具有顯著性
但其實這是一個存在偏差的比較
第一個問題是,這個黃豆策略是我用back-adjusted資料來開發的
績效會比較curve fit當時的back-adjusted資料也很正常
且一年只交易約100次,有某種程度的curve fitting相對容易
第二個問題是,這個黃豆策略是留倉策略
當套用在未修正的連續月時,轉倉時虛賺、虛賠何者影響較多也不曉得

所以要改用以下方式來消除這些偏差
如此才能說服(證明)back-adjusted資料的績效有顯著的比未修正的連續月的績效來的好
1.用一開始就用未修正的連續月開發的策略
2.用當沖策略,以免去虛賺虛賠的因素
3.一年更多的交易次數(200多次),讓curve fitting相對更難
下圖是布蘭特原油的當沖策略,一開始就用未修正的連續月開發的,一年交易約200多次

2021-11-6 下午 01-02-13.png

這次back-adjusted資料就沒有績效上壓倒性的勝利了
有的相同,有的未修正連續月比較好,有的back-adjusted連續月比較好

2021-11-6 下午 01-55-18.png

再改用視覺化的方式來比較兩者,左邊為未修正的連續月,右邊為back-adjusted連續月
未修正連續月的淨利比較高,但back-adjusted的MDD比較低
一眼看下去其實沒什麼顯著差異

或許back-adjusted連續月的績效在很小的程度上可能會高於未修正連續月的績效
但在這個比較嚴謹的實驗驗證下,並沒有達到【顯著性】

所以再思考是用哪種資料時,應該還是以虛賺、虛賠為主要考量
而虛賺、虛賠是否足以影響你的策略的可獲利性,主要的判斷依據仍舊是
1.交易次數是否夠多
2.每年獲利是否夠大
3.遠近月價差缺口幅度是否太大
特別是海外商品類,一定要考慮虛賺、虛賠的問題,不能省略

至於哪種方法,都各有優缺點,要自行取捨
1.未修正連續月直接交易(缺點是會產生虛賺、虛賠)
2.未修正連續月但讓交易結算掉提早結束交易(缺點是提早結束交易可能會錯過大行情,下面註解說明)
3.back-adjusted連續月(缺點是不同時間的回測會不一致)
註:大行情要來的時候通常是因為特殊事件
  而特殊事件是不會因為轉倉期間就刻意避開的
  大部分的策略會因為停損機制,造成最大獲利遠大於最大虧損的這種不對稱性
  所以對大部分策略來說,一筆交易通常寧可該賠就賠,也比較不願意錯過一次大行情的暴利

 樓主| 發表於 21-11-9 20:19 | 顯示全部樓層
延續上篇的測試
http://www.coco-in.net/forum.php?mod=redirect&goto=findpost&ptid=154930&pid=876800&fromuid=28364

再補上另一個線上交易的黃金(GC)當沖策略的比較結果
這個策略也是當初一開始就用未修正的連續月開發的,一年交易約200多次
一樣沒能證明back-adjusted連續月的績效【顯著的】贏過未調整連續月績效

2021-11-9 下午 07-56-13.png


2021-11-9 下午 08-00-42.png



您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-25 02:22

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |