您好 選股回測中 6個月和10年回測 同一策略 6個月回測出現東和鋼鐵 10年回測卻沒出現 想詢問原因
半年回測和十年回測 選股不一樣
- 112
- 最後發表 C.C.Gray 2023 九月 15
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時所取得的資料都是相同的。
3 評論