回測常會有各股異常失敗,導致每次回測結果都不同

  •   632 
  • 最後發表   FrankLi  2020 十月 27
FrankLi 發文於   2020/10/12

您好, 

發現策略回測較長區間時, 很容易出現異常錯誤,

有時選股策略會完全選不出東西, 而且有勾print,

卻也沒有Print Log出來, 完全無法查.

 

-------------------------

我寫一下我測試的歷程,

例如下圖, 我回測15年選不出股,

但只測這區間的前5年和後3年,

明明都有符合的標的, 沒道理完全沒選中: 

-------------------------

後來又持續測試了幾個範圍, 想試圖找出到底多長區間會出錯,

似乎超過10年就很容易出現這問題

回測期間還有出現過這錯誤:

-------------------------

這是由多個選股腳本組成的選股策略,

 

我逐一Review和測試過, 各個單一腳本, 都沒問題.

本來以為超過10年以上就一定會出錯, 

後來又多測了很多遍驗證, 好像也不一定,

如下圖, BCD三份腳本完全一模一樣, A基本上也相同, 就只多了1行Print,

(也有小懷疑Print是否有Bug)

不過BCD三份每次重跑結果失敗的各股數量都不同, 

 看過細項, 都只寫選股策略失敗,但也沒只出到底是哪個腳本錯了,

未掛牌的股票出錯可以理解, 但很多50成份股裡的老公司, 沒道理抓不到資料而出錯.

-------------------------

 

卡了一周, 看起來比較像是回測系統的問題,

這幾份回測我也有儲存下來, 

若能協助除錯的話, 也可以mail給你們,

Code不太想公開貼在論壇上

 

  • 按讚來自於
  • 李金穎
排序方式: 標準 | 最新
FrankLi 發文於   2020/10/12

在一篇文章中看到好像有5分鐘TimeOut問題, 

這有可能是個股執行逾時造成失敗嗎?

XQ小幫手 發文於   2020/10/13

FrankLi 您好

是的,目前我們的回測功能會設定時間限制

而我看您的圖片似乎就是因為這個問題

這限制主要的目的在於保護系統與您的電腦當機or卡死

時間限制大約為5分鐘

所以在使用回測時,如果發現回測時間超過該限制

請您考量是否分批類股回測或是精簡策略量 

感謝

XQ小幫手 發文於   2020/10/13

FrankLi 您好

如果您還是覺得有問題

請您提供以下資料給我們,

1. 選股策略(*.DSTX)匯出時記得勾選包含選股腳本。

2. 回測報告儲存檔(.BTReport)

並附上此討論串連結,最後 Mail 至 XQservice@XQ.com.tw

小幫手在幫您測試看看是否確實是此問題 感謝

FrankLi 發文於   2020/10/13

請問5分鐘的限制, 是回測的所有標的, 加起來只有5分鐘嗎?

這已經是精簡策略了, 我有沒有可能調長這個Timeout時間呢? 

 

 另外策略回測, 都是跑在本機嗎?

我還以為是跑在雲端, 看CPU好像沒有增加太多

XQ小幫手 發文於   2020/10/13

FrankLi 您好

A1;是所有的資料加起來5分鐘

A2:這個目前無法調整,因為我們要顧慮到並非所有用戶的電腦效能都非常好,

能讓大家都可以順暢使用下,才會有這樣的限制

A3:回測功能的構成分成兩個部分

腳本部分:會是在您的電腦計算

資料撈取:會是在我們的server運算

 

FrankLi 發文於   2020/10/13

 

類股分批回測, 這樣子算起來的TWR報酬率, 感覺誤差會很大.

覺得還是要至少能測到一個大的景氣循環, 才比較有參考價值,

且更正確的回測, 應該是連下市櫃的也要能測到XD

自己想到沒辦法中的辦法, 可能就只好分批Print => 進出場和持有時間的股價,  

再用Excel合併所有資料, 算出每日淨值, 再算TWR,

----------------

我自己先再試一下能不能改善Script的效能,

真的還是有問題的話, 再mail請你們幫忙了, 感謝

----------------------

不曉得我對策略回測的流程認知, 以下這樣對不對: 

  1. 偵測選股腳本 和 進/出場警示腳本,

      依SetTotalBar,SetBackBar範圍..,

      先到Server撈出所有要用到的資料 (這時回測進度條還不會動)

  2. Local依這些資料開始執行腳本,

      此時回測進度條才開始動 X/17XX... 

 

如果是流程上述這樣, 那請問Timeout參數, 未來有沒有可能拆成二個參數,

Server資料撈取和Local是不同的Timeout時間, 

你們一樣限制Server端Timeout, 

但Local端的Timeout讓用戶可以自行在XQ設定參數,

目前看起來卡的比較久的是在Server資料撈取(進度條都沒動), 

進度條開始跑後, 倒是很快就會完成.

 

 

FrankLi 發文於   2020/10/15

又回測了幾次, 的確還是有問題, 

且同樣回測區間, 甚至連測試的商品總數(失敗+成功)都可能不一致,

等下會寄出Mail, 再麻煩小幫手幫忙查看了.

  • 按讚來自於
  • b24524658
XQ小幫手 發文於   2020/10/19

FrankLi 您好 

小幫手有收到您的來信 

待確認過原因後會在跟您回報

感謝 

FrankLi 發文於   2020/10/19

好的, 謝謝您

XQ小幫手 發文於   2020/10/20

FrankLi 您好 

小幫手有檢視您的腳本並進行測試了

而不管時間拉多長,基本上都是這18檔股票會失敗,看起來是正常運行沒問題的

(我看了下大部分都是近一年內上市櫃的,所以資料不齊全導致ex 汎德 abc-ky  藏壽司)

因為回測功能會考慮到您電腦運算與網路速度,

使得如果接近5分鐘就會發生這樣的問題。

關於效能部分,我們公司內部會再討論如何加快速度

感謝您的提問

顯示更多回應 發表回覆
Close