半年回測和十年回測 選股不一樣

  •   112 
  • 最後發表   C.C.Gray  2023 九月 15
C.C.Gray 發文於   2023/08/28

您好 選股回測中 6個月和10年回測 同一策略 6個月回測出現東和鋼鐵  10年回測卻沒出現 想詢問原因

附加文件

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

Hello C.C.Gray,

 

建議您遇到問題時可以先將相關資訊 print 出來檢查。

這是因為您腳本的寫法 if ... then condition1 = ...; 會讓計算起點不同時 condition 會有不同的值。

參考附圖,小幫手這邊回測就沒有出現 2006,反而是 5880 不同。

將相關相關數值 (condition1 ~ condition5) 印出,很明顯可以看出在當天的數值有所不同。

如果您往前追尋的話,可以確認到在 202201125 時 condition4 轉為 True,20230202 時 condition4 轉為 True。

這兩個時間點都在回測半年的區間不會碰到的,故在回測半年時 condition4 和 condition5 在20230508 時是False,而回測1年時兩者則是True。

附加文件

C.C.Gray 發文於   2023/09/08

那要如何在選股階段發現問題,因為選股選出來不會知道有問題,回測之後才會發現半年區間跟10年區間不一樣

XQ小幫手 發文於   2023/09/15

 Hello C.C.Gray,

 

這是看您腳本的寫法,基本上只要每次條件判斷都是用固定區間的資料的話,那麼就不會有這樣的狀況發生。

 

要避開這樣的狀況,最簡單的方法是限定 condition1 可以為 True 的區間。

舉例來說:

if trueall(condition1, 10) then condition1 = False;

 

這樣condition1 只能夠持續10期為True,一旦超過的話就會改回 False,這樣只要資料讀取筆數有10筆以上就不會發生不同的狀況。

因為在運算相同Bar時所取得的資料都是相同的。

發表回覆
Close