剛剛在回測選股策略時
感覺怪怪的,似乎同一條件回測結果會不同
重新針對同一個策略,同時開了四個回測
執行時間大多10秒內,應該是沒有消耗太多服務器資源
結果真的每次結果都不同
我自己在猜,會不會因為回測區間我是設到20230612(今天的日子),而又是盤中才會這樣
請小幫手了解下,謝謝
回測報告跟檔案都已附上,下面是log檔
https://drive.google.com/file/d/1LUyYiSJHgMB3vl_EKGw68CeFCynvNMK-/view?usp=sharing
補充,晚上就正常了
但好像有其他人今天反而不正常了
Hello charlie1234,
相關人員確認過您的Log和伺服器上的紀錄,有找出可能的問題是因為 seednet 機房的資料有誤所導致。
目前已經修正此問題。
感謝。
小幫手好
回測數據不一致的情況,似乎是常發生,請看這邊網友回應
感覺系統問題,變成使用者要自己想辦法解決,反覆確認數據是否一致、避開資料更新時段
可否請貴公司人員深入了解問題所在,找出解決方式
如果是資料庫更新時,造成回測數據不一致,這是很不可思議的問題
明明就是有方法可以避免這種問題發生的
Hello charlie1234,
小幫手會將您的意見轉告相關人員。
感謝。
Hi 小幫手
想請問一下你們的雷達回測、選股回測、交易回測運作的架構是怎麼做的?
使用者編譯完腳本後,設置好回測條件並執行回測時,實際上你們直接在Server端(通用XQ Server?回測專用Server?)根據腳本條件與邏輯運算完,再根據選定的標的逐一返回每個標的的結果,並由使用者的Client端做數據統整並生成回報結果嗎?
還是其實你們只是根據回測條件設定的標的範圍與SetBackBar、SetTotalBar的筆數去撈取資料庫內的數據,從Server端把腳本運算需要的數據回傳給使用者的Client端,後續運算跟生成回報結果全數交由使用者的PC自己進行?
另外還想知道你上面回復 seednet 機房資料問題,是你們在同步備份相關資料到不同機房的伺服器上時有發生異常,導致回測有誤嗎?還是我們回測當下是你們伺服器過載之類的,導致每次送出回測的結果都會有誤差?
除了機房資料可能有異常的問題以外,送出回測當下使用者的PC硬體效能(例如CPU使用率過高、可用記憶體不足之類的)是否有可能影響最終的回測報告結果呢?
Hello iker,
上面的問題是seednet機房內有兩台電腦的還原資料不一致,導致運算出來的數值有誤。
就小幫手所知,回測的運算全都是在伺服器執行,運算完成後才將報表回傳給用戶端。
用戶端電腦的效能對回測運算應該不會有影響。
Hi 小幫手
回測運算跟生成報告全都是在伺服器進行的話,伺服器所生成的數據應該短期內會有備份,而且是由哪個用戶id送來回測請求、什麼時段送來在伺服器log都會有紀錄。
以本帖原始問題與回文內的討論串連結內容為例,在幾分鐘或幾小時內重複執行相同的回測,產出的回測報告內容卻有不小落差,這個用戶端應該沒有辦法提供更多的協助,如果貴方人員事後只能使用用戶提供的腳本跟參數嘗試復現問題來做確認,很可能是查不出問題的。因為即時運算時空背景不同的關係,不同時間點使用相同的腳本也不能保證能復現問題(甚至可能衍生其他問題)。
請問如果用戶有明確提供BUG發生的時間點跟對應腳本,你們是否能從伺服器上確認該期間的相關請求是否有發生任何腳本運算異常或是直接撈取對應timestamp的回測報告來確認伺服器生成給用戶的內容是否有誤呢?
如果是因為技術上的困難(例如伺服器資料沒有保留足夠長的時間或不一定存有相關的log),能否請你們給出一個更能有效協助你們排查問題的方案呢?因為看起來目前常態要求用戶提供回測腳本、回測報告、回測參數的做法並無法確實協助你們排查問題。
Hello iker,
就小幫手所知,伺服器這邊會記錄的是:
1.回測執行時間。
2.回測頻率、區間等設定。
3.執行所使用到的資料,運行時間、商品狀態正確/錯誤。
並不會記錄回傳的結果。
所以由伺服器上是無法確認些如腳本邏輯撰寫或取用資料錯誤導致的回測異常。
因此才會需要用戶提供相關的log與自動交易策略匯出檔等相關資訊交叉比對,看能否找出問題原因。
就小幫手所知,回測的運算全都是在伺服器執行,運算完成後才將報表回傳給用戶端。
用戶端電腦的效能對回測運算應該不會有影響。
Hi 小幫手
不好意思,因為您連假前回覆是「回測運算全都是在伺服器執行,用戶電腦效能應該不影響回測結果」,我才會預期伺服器應當有執行的備份資料。但看您今天的回覆,感覺跟連假前回覆內容有些出入,請問那一個版本才是對的呢?
按您今日回覆,伺服器上無法確認腳本邏輯撰寫或是取用資料是否有誤導致回測異常,這樣的話就更棘手了。因為就算用戶事後提供腳本,哪怕你們照著用戶觸發BUG的情況操作,再參考比對匯出的回測結果,比較容易判斷的也只有腳本邏輯問題,如果是伺服器當下運算或數據有問題,或是到了用戶電腦不同版本的用戶端導致生成的報告出錯,工程師也很難憑用戶提供的資料驗證。
假如事後發生問題再提供腳本或匯出檔不一定能協助你們定位問題,還有什麼方式能讓你們確認相關問題嗎?
(ex. 訂定一個標準規格的 print 寫法,並要求用戶一定要列出哪些參數資料,再一併回傳給你們之類的)
14 評論