【XQ回測說明】回測成交價搓合

2022-12-05 10:22:38
上一篇我們提到了XQ回測中的報酬率算法在策略雷達、選股中心、自動交易上各產品的差異,若還沒看得朋友們可以點一下這裡。 而這篇我們主要會著重在"回測報告中"的進出場成交價是如何搓合的。    

現況

回測中的進出場成交價,對於回測績效有不小程度的影響,最主要的影響在於:「這筆交易,是會先到達停利條件,還是先停損條件」而決定這二者的先後順序,現階段採用了以下兩種作法,主要依執行頻率之下,是否有更細小的頻率來分類:
  1. 有更細小的資料時,使用更精確的資料決定 例如:執行的頻率是"日"頻率,而我們的歷史資料有最小"1分鐘K線"的資料,這時就用依據"1分K鐘"來確定股價變化的順序。
  2. 沒有更細小的資料時,使用K棒的相對關係決定 例如:執行頻率是1分K,而這已經是我們提供最小的資料頻率時,我們會利用收盤價和高/低價之間的關係,決定這根K棒是O-H-L-C還是O-L-H-C,我們稱這個為模擬逐筆洗價
然而這個模擬逐筆洗價的做法,可能會導致在回測時會出現一些不合理的交易,例如:買進時的成交價,可能買在當日的最低價。為什麼會發生這種情況呢? 前面提到,在模擬逐筆洗價時,我們會將一根K棒拆解成O,H,L,C四筆tick,也就是分四次洗價。這裡為了方便說明,我們以O-H-L-C(開盤-最高-最低-收盤)的洗價狀況來模擬:若你有注意到就會發現,當我們在H(最高價)洗價,並送出委託,之後就會成交在這根K棒的最低價L。    

改善

我們發現這個問題之後,也提供了一些改善的方式。在選股中心及策略雷達時,你可以選擇成交當期收盤價 在自動交易時,可以選擇觸發即判斷成交。啟用這些選項後,同樣的狀況,你的成交價會在H、而不是神奇的成交在最低價L。    

下一步

對於回測,我們的目標都是「盡量貼近市場成交的現況」。我們也持續思考怎麼讓回測能更真實。我們現在的改善計劃有二個: 1.調整撮合邏輯 目前的優化方向會是加入每次洗價間的價格連續性。所謂的價格連續性就是,雖然我們只看得到開高低收四個分開的價格,但其實在實戰中的價格變化,通常是連續的。比如說:當日高價100、低價90,這中間其實會有99~91等等的價格,目前的回測如果價格洗到高價100,送了單,直接讓你成交在下次洗價的低價90,顯然是不合理的。一旦加入價格連續性的假設之後,就應該依委託單的內容,成交在100~90間的價格,這樣子會更貼近實戰中成交的狀況。 2.提供更細的資料 雖然加上了價格連續性之後,回測成交價應該可以足夠真實反應實戰狀況,但我們也同步在規劃評估是否能提供更細、更精準的成交資料(如秒K)。延續上面的範例,加上更細的價格,就代表現在只撮合100和90,未來可能會撮合到100~90間的更多的價格,而這些資料是都是真實的成交價格。也就是說,如果配上了精密度更高的資料後,即使沒有價格連續性的假設,撮合成交的價格仍然會貼近市場真實成交價。     若您有任何的想法或是建議,歡迎可以mail到我們客服信箱:XQservice@XQ.com.tw