(已回覆,待解決)為什麼交易回測台積電的買進持有策略的最大持倉報酬,跟回測報告裡的買進持有報酬,以及疊加參考指標出來結果都不相同?

  •   351 
  • 最後發表   Sadless  2021 十月 01
Sadless 發文於   2021/09/10

我在研究交易回測報告裡面的參數,買進持有報酬。

我讀了下面這篇文章

http://www.xq.com.tw/lesson/xsat/backtest/

寫了一個測試交易腳本如下:

{交易 台積電_2330_Buy_and_Hold}


if  Symbol = "2330.TW"
and Filled = 0 
and Position = 0 
then begin

    SetPosition(1, Market);
end;

回測條件如下:



回測結果如下:

"疊加參考指標 台積電 2330.TW" 如下:

 

"最大持倉報酬率' 是 91.39%

回測系統自己產生的 "買進持有報酬" 是 91.97%

回測系統右下+號裡面提供的 "疊加參考指標" 提供的"台積電2330.TW報酬率" 是82.6%

依照我的理解,這三個數字應該要是相同的。

請問這三個數字的定義是甚麼?為什麼會不相同?

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/09/14

Hello Sadless,

 

三者的計算方式略有不同。

最大持倉報酬率: 淨利/最大持倉金額。

買進持有報酬率: 回測起點進場,終點出場,包含手續費。

疊加指標報酬率: 每天進出場。昨日買今日賣,不計算手續費。

所以三者出來的數值會有些差別。

Sadless 發文於   2021/09/14

"疊加指標報酬率: 每天進出場。昨日買今日賣,不計算手續費。"

這句話很重要,這個應該要寫在回測報告的提示說明裡面。

 

昨日買今日賣,那麼是昨天幾點買,今天幾點賣呢?

 

另外,疊加指標報酬率,我覺得應該要用買進持有報酬率,而不應該用每天進出場,這種隔日沖的策略。

因為,每日進出場的隔日沖策略的報酬率,手續費占比太高,而這個指標又不計算手續費,所以完全不符合實際。不如改用買進持有報酬率,因為只交易一次,手續費就可以忽略不計。

這個線圖設計成可以對比很好,可惜對比的圖不對,使得對比完全沒有用。

XQ小幫手 發文於   2021/09/16

Hello Sadless,

 

昨日買今日賣,買賣都是以日頻率的收盤價計算。

且會依據是否使用還原值決定所抓的資訊。

 

關於疊加指標報酬率換成買進持有報酬率的部分小幫手會轉告相關人士作參考。

感謝您的建議。

Sadless 發文於   2021/09/25

我建議,最好是應該使用最大投入現金持有報酬率,也就是說去算投入的現金總共有多少,有點類似最大持倉報酬率,可是又不一樣。

如果只算交易一次的報酬率,最大投入現金持有報酬率 = 最大持倉報酬率。

但如果是多次進出,兩者就會差非常多。

我下面舉個例子。

 

 

假設有一個波段:100 --(+1)-> 150--(0)-> 50--(+1)-> 150--(0)-> 200--(+1)->300

方法是:只買一張,做多,(+1) 是買進持有,(0) 是平倉。

 

最大現金持有報酬率,是指我如果買一張100元的股票,漲到150元,此時我的最大投入現金是100元,。

我平倉後,獲利150元,淨利50。

當股票跌到50元,我可以再買進1張時,現金剩下100元,此時我的最大投入現金仍然是100元。

然後到漲150元,我平倉後,現金獲得150,加上原來的現金100,此時現金共250元,目前淨利50+100=250。

股票漲到200元,我又買進一張,此時現金剩下50元,此時我的最大投入現金仍然是100元。

股票再度漲到300元,我又平倉出場,那麼我的現金變成300+50 = 350,此時我的最大投入現金仍然是100元,總淨利250+100=350。

所以最大現金投入其實從頭到尾都只有100元,總淨利為350。

波段的淨利是350,而長期持有的淨利是300-100=250。

 

在計算報酬率的時候,就會跟最大持倉報酬率有很大的不同,因為如果用最大持倉當作分母,上述過程的最大持倉成本會是300元,因為當股票漲得越高,最大持倉成本就會上升。

 

最大投入現金報酬率是波段淨利/100=350/100=3.5,而最大持倉報酬率是350/300=1.17,報酬率差了3倍。

 

為什麼會提這個的原因是因為,如果要拿波段策略跟買入持有策略比較時,用最大持倉報酬率比較,永遠贏不了買入持有策略。

因為買入持有策略的最大持倉現金是100元,而波段策略的最大持倉現金是300元。

因此長期持有的最大持倉報酬率是(300-100)/100 = 200/100=2,而波段策略的最大持倉報酬是350/300=1.17,報酬率差了1.7倍。

 

但事實上,波段操作是比較好的,只是用最大持倉報酬會比較出錯誤的結果。

但如果用最大投入現金報酬率,就可以解決這個問題。

因為長期持有的最大持倉報酬率是(300-100)/100 = 200/100=2,而波段策略的最大投入現金報酬是350/100=3.5,報酬率好了1.7倍。

所以,我才會建議應該拿掉最大持倉報酬率,改用最大投入現金報酬率,這樣子比較出來的策略才會是正確的。

另外,也應該提供,最大投入現金日均報酬率,也就是最大投入現金報酬率/持倉天數。

 

例如上述的波段區間是100天。

100 --(20天)-> 150--(20天)-> 50--(20天)-> 150--(20天)-> 200--(20天)->300

只有+1會持有

100 --(+1)-> 150--(0)-> 50--(+1)-> 150--(0)-> 200--(+1)->300

 

所以持有天數是3 * 20 = 60天

100 --(+1_20天)-> 150--(0_20天)-> 50--(+1_20天)-> 150--(0_20天)-> 200--(+1_20天)->300

 

買進後持有的最大投入現金日均報酬率是2/100 = 2%,一天賺2%。

波段操作的最大投入現金日均報酬率是3.5/60 = 5.83%,一天賺5.83%。

波段比買進後持有,好了2.915倍。

 

而使用最大持倉報酬率日均,波段比買進後持有差了1.7倍。

波段操作的最大持倉報酬率報酬率是1.17/60 = 1.95%,一天賺1.95%。

使用最大持倉報酬率日均,波段比買進後持有差了1.026倍。

 

這個結果是完全不能接受的,用錯誤的方法比較, 出來的結果就是錯誤的。

前面回測寫得再多再正確都沒用,後面比較出來,反而去使用買進並且持有。

 

我會注意到這件事情,就是因為有客戶跟我要回測報告,但是我用XQ的回測報告再跟他報告的時候,直接被電翻。

所以回來之後,重新研究了XQ報告的細節,才能夠說出這個問題。

 

所以小編請趕快考慮看看,轉告相關人士參考看看,趕快提供正確的報酬率。

然後,疊加的報酬率,也是要用一樣的算法。

報告裡面每個報酬率的算法都不一樣,這樣子怎麼拿來比較?

客戶看到這個報告都直接丟垃圾桶。

這樣實在很可惜。

  • 按讚來自於
  • ikerlo
XQ小幫手 發文於   2021/10/01

 Hello Sadless,

 

感謝您的建議,小幫手會彙整後向相關人士報告。

發表回覆
Close