交易回測損益要如何設定才能接近選股回測

  •   512 
  • 最後發表   charlie1234  2023 七月 06
charlie1234 發文於   2023/06/25

小幫手好

我想知道交易回測要如何設定才能接近選股回測結果

我現在的交易回測,商品來源是選股,開盤進場,固定%的停損利,都跟選股回測設定一樣

我的選股回測會匯出excel,並用交易明細計算每次交易的實際損益

我記得交易明細的報酬是沒有用到時間加權報酬的

但這樣的算法,在比對交易回測總損益時,落差可以非常大,甚至達到幾倍都有可能

而且,採用不同的組合設定,本身損益的差異就很大了

  • 觸發即當判斷成交 + (市價、限價+0檔、限價+1檔)
  • 不勾選觸發即當判斷成交 + (市價、限價+0檔、限價+1檔)

而且有時候是這組的設定,總損益比較接近選股算出的總損益,

但有時又換另一組比較接近

真的搞的很混亂,到底哪個設定的回測結果才會是較為正確的,可以給個答案嗎? 

我想要交易回測結果能較為接近我用選股算出的實際損益較為接近,請問要如何設定

 

另外,第二個問題就是,當採用上面的組合設定做回測時

當回測結果落差很大時,到底我該選擇相信哪一組呢?

是否有些挑選經驗可以參考,ex: 當沖用怎樣的設定、波段用怎樣的設定....

 

謝謝

 

 

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

Hello charlie1234,

 

交易回測與選股回測的報酬率計算是不相同的,所以看%的話會不相同。

若您對兩邊報酬率計算方式有興趣的話,可以參考教學區文章

 

小幫手會建議您可以觀察每次商品的進出場時間與實際損益($)來比較,一般狀況下兩者的交易時間並不一定會相同。

舉例來說,選股的進場可以選當根收盤或下根開盤,在自動交易策略串接選股的狀況下,只有選股選擇下根開盤,且自動交易為一分鐘逐筆洗價並勾選觸發即判斷成交,兩者才會在相同時間進場。

而出場的話選股是使用1分鐘頻率的收盤價來計算是否有達到停損停利,且會將除權息納入考量。

自動交易的停損利則是看您是如何撰寫,常見的狀況下是只用進場價與當下的成交價做判斷。

 

至於哪個比較正確,這是要看您實際交易操作的方式來決定。

像上面提到的觸發即判斷成交 這個選項是提供給想要以觸發價當作進場價的用戶的,但在即時狀況下運行自動交易時並不會有觸發即成交的狀況。

 

舉例來說,若您都是使用自動交易串接選股在作交易的話,小幫手會覺得沒有不勾選觸發即判斷成交的自動交易回測會比較接近。

但如果您是會自行依據選股結果在開盤前就下單,開盤進場,然後出場時的停損停利會考量到除權息 (參考價) 的話,那麼選股回測或許就會比較接近。

charlie1234 發文於   2023/06/28

感謝小幫手的回應

改成分K觸價進場,的確可以用開盤價進場

不過,測試中遇到一個出場不一致的問題

如果沒搞錯,選股因為不會管成交量、收盤最後一檔的問題,所以比較有可能比交易回測早出場

但下面這個大立光,卻遇到交易比較早出場,而該出場日期(3/28)後幾天,29~31都有觸碰到停損價 (之後為清明連假)

但是選股都沒有出場,等到4/6才出場,不知是何原因?

交易設定為1分K,進場設定觸發即判斷成交,出場設定為市價,停損利10%

相關檔案已附上

請小幫手協助了解問題,謝謝

 

附加文件

charlie1234 發文於   2023/06/28

花了一整天,用不同的設定(用上面的程式碼),統計進出場情況,得出以下圖表來

頭真的很暈,完全看不太出來各種組合的規律在那? 有的更分辨不出進場或出場該在哪個位置

小幫手可以協助修正這個表嗎? 

另外,似乎紅黑K也會影響進出場點位,能一併考慮進去嗎,謝謝

以下有些問題,也請小幫手順便了解下,有點煩雜

這是其中一個組合的進場統計,看買進價位有出現在第一根跟第二根 k棒的那個位置,但結果完全無法判斷進場到底是用哪個位置?能解釋下嗎?

同一組設定的出場統計,也是無法確定到底是最高價還收盤價出場,且相同設定,同樣進場價的時候,一個用市價出場,一個用觸發價+0檔出場的時候,出場位置有時也會有差異,尤其是最後那一筆,用市價出場時,6/13 11:41就出場了,這又是為何(下下圖,綠色)

PS:9:16出場,應該改9:14

PS:相關統計檔案

https://drive.google.com/file/d/1McBbgWRw4KNnut6uX9PAt9BvTMm9UMj2/view?usp=sharing

跟上面做比對用

還有這張圖裡面的問題,也煩請協助說明

 

XQ小幫手 發文於   2023/07/04

Hello charlie1234,

 

如同小幫手上面所說的回覆,選股回測時會將除權息納入考量。

大立光在 2023/03/16 時有除息,是因此原因所造成兩者差異。

 

關於回測的進出場,主要觀念是 商品洗價 => 腳本運算 => 判斷成交。

 

選股的進場是每日洗一次價,腳本運算判斷是否有觸發,若有觸發的話則根據設定決定今日收盤進場還是隔日開盤進場。

選股出場若是設定持有期數的話,則在持有期數滿足時依據設定決定以今日收盤出場還是隔日開盤出場。

選股出場若是設定停損停利的話,腳本則會在進場後以每分鐘還原的高低來判斷是否停損停利,如果符合的話再判斷還原1分鐘Bar開盤是否符合,符合的話用1分鐘開盤價停損停利,不符合的話用1分鐘收盤價停損停利。

 

自動交易也是一樣的道理,商品洗價 => 腳本運算 => 判斷成交。

 

自動交易回測的洗價可以大略分成以下3種:

1. 1分鐘逐筆洗價 會以 1分鐘的OHLC4個價格來洗價。(1分鐘運算4次,會累積)

舉例來說,如果該跟Bar的順序是 O => H => L => C 的話,則4次洗價會是

OOOO

OHOH

OHLL

OHLC

2. 其他頻率逐筆洗價 會以 1分鐘Bar來洗價。(1分鐘Bar運算1次且會依使用頻率累積)

3. 非逐筆洗價 會以 執行頻率來洗價。(1根Bar洗1次)

 

系統在判斷委託是否成交時,則是使用以下資料:

1. 1分鐘逐筆洗價 會以 1分鐘的OHLC4個價格來判斷委託是否成交。

依照上面的例子,會依順序用 O => H => L => C 來判斷委託成交。

2. 其他頻率逐筆洗價 會以 1分鐘Bar來判斷委託是否成交。

3. 非逐筆洗價 會以 執行頻率Bar來判斷是否成交。

 

勾選觸發即成交的話,會以洗價運算當下的價格開始判斷是否成交。

沒有勾選觸發即成交的話,會以洗價運算後的下個價格來判斷是否有成交。

 

判斷成交的邏輯則是:

1.市價單,會成交在開始判斷當下的價格。

2.限價單,且優於開始判斷當下的價格,則成交在當下的價格。

3.限價單,劣於開始判斷當下的價格,且優於判斷資料Bar中的最低價時,則成交在委託價。

且委託成交的數量最多只能是該根判斷資料Bar的成交量,超過成交量的委託則要接著在下一根判斷資料Bar繼續判斷。

 

所以限價單並不一定是會成交在哪個價格,會隨價格和成交量變化而改變。

如果您希望用固定邏輯來判斷成交的話,請一律下市價單,這樣就會以 洗價當下 (勾選觸發即成交) 或 下一個價格 (沒有勾選觸發即成交) 來成交。

  • 按讚來自於
  • shui1014
charlie1234 發文於   2023/07/04

小幫手好

如同小幫手上面所說的回覆,選股回測時會將除權息納入考量。

大立光在 2023/03/16 時有除息,是因此原因所造成兩者差異。

想確認下

選股中心的原始值跟還原值兩個選項,在回測時的差異

用原始值回測時,遇到除權息,會先把除權息獲利的部分加入一起計算報酬,有碰到停損利就會判斷出場

用還原值回測時,遇到除權息,不會出現價格不連續,會忽略除權息的獲利,等碰到停損利之後再把除權息的部分加入 

 

交易回測的原始值跟還原值,在回測時跟選股回測又有怎樣的差異呢?

謝謝小幫手

 

 

XQ小幫手 發文於   2023/07/06

Hello charlie1234,

 

就小幫手所知,選股中心在回測時,若使用原始值來回測的話會是腳本用原始值計算進場,接著用還原值計算出場。

若使用還原值的話,則是腳本用還原值計算進場,接著一樣用還原值計算出場。

兩者在計算停損利皆是使用還原值在計算,差別在於腳本運算時使用的值 (ex. close) 是原始還是還原值。

 

自動交易則是依腳本的撰寫來作進出場判斷,所以設定為原始值和設定為還原值會導致運算時的差異。

至於回測串接的選股策略則不會受到交易回測設定 (原始/還原) 的影響,是依據選股策略本身的設定作運算。

發表回覆
Close