選股有選出,但回測沒看到

  •   307 
  • 最後發表   charlie1234  2023 六月 29
charlie1234 發文於   2022/08/19

小幫手好

最近有個選股策略,看到選股有選出,但回測卻沒看到,其他策略沒這問題

看了下程式碼,推測是因為用了周資料所造成的,所以這一周進場的股票,回測沒出現

value1=Getfield("大戶持股比例","W",param:=1000);   //篩選出本週超過1,000張的大戶人數。
if value1>0 then
value2=(value1-value1[1])*100/value1;  //周千張大戶持股比例增減%
value3=GetField("收盤價","W");
value4=bb_width(GetField("收盤價","W"),20,2);
value5=StandardDev(value2,20,1); //持股比例增減%標準差;
if value5>0 then
value6=value2/value5; //持股比例增減百分比標準差倍數
value8=GetField("成交量","W");

比對了下回測數據,上面的寫法,回測出來是正確的,我都是用下期開盤價,但就是這周被選出的回測不出來

想問下如何修改才能讓回測時,這周進場的股票也出現,謝謝

 

排序方式: 標準 | 最新
charlie1234 發文於   2022/08/20

另外,記錄這星期每天的選股選出的標的,發現,在8/20(六)新的周數據出來後,再用回溯去看之前的選股數據,發現跟我每天觀察的又不一樣,但是

1. 8/16 (星期二)、(8/17) 三每天記錄的跟8/20回溯的不同 (四五沒截圖到,但確定是不同的)

2. 8/15以前,都是用回溯的,兩邊又都一樣,不受到新數據的影響,這樣到底是對還是不對?

想請教小幫手

1. 程式碼要如何修改,才能實際跟回測是相同的,我是用日線回測

2. 是否有那個地方有比較詳細說明這個問題

PS:除了附上的程式碼,我在選股還有加上其他日條件,像是成交量,所以是搭配前一周的千張大戶周數據+日條件,符合就會被選出

感謝

 

附加文件

XQ小幫手 發文於   2022/08/24

Hello charlie1234,

 

小幫手認為應該是因為 大戶持股比例 所造成。

因為在回測/回朔中中您會取到當週的資料 (若該週的資料已經存在),但在最新一週的時候會取得上週的資料。

這是因為選股的資料對位會抓最近的資料。

您可以將

outputField1(Getfield("大戶持股比例","W",param:=1000));

outputField2(Getfielddate("大戶持股比例","W",param:=1000));

這兩行加入選股腳本中 (或是print),實際觀看回朔就可得知。

像今天是8/24,Getfield("大戶持股比例","W",param:=1000) 抓到的會是 8/15 那週的資料,但用回朔到 8/15 那週的話,會取得當週 (8/15) 的資料。

如果您使用 Getfield("大戶持股比例","W",param:=1000)[1] 的話,抓到也會是 8/15 的資料,但用回朔到 8/15 那週的時候,會變成取得 8/8 那週的資料。

 

所以在您星期六 (8/20) 的時候新的資訊出來再用回朔去看,就會是最新一週 (8/15) 的資料,跟星期一到星期五取到的前週 (8/8) 資料不同。

要讓兩者行為一致,小幫手會建議您在腳本使用 Getfield("大戶持股比例","W",param:=1000)[1]。

charlie1234 發文於   2022/08/24

小幫手好

策略的邏輯應該是要取"上周"的周資料來做運算

如照您說的用Getfield("大戶持股比例","W",param:=1000)[1]

這周8/20的一到五就會取到上上周8/8的周資料

這不是我想要的

這樣的需求,要如何解決實際執行跟回測上的不一致呢? 

 

另外,在回測時,讓人取到了未來值,應該也是有問題的

我去看了財報相關的季資料,似乎都是在個別公司發布的日期之後才會出現發布的數據,並不會因為財報出現了,就把該季的財報數據放在該季的時間內,所以,這個周大戶數據,卻會提前出現,實在有點怪

 

 

XQ小幫手 發文於   2022/08/31

Hello charlie1234,

 

並不會發生您所說的取到上上週狀況,因為選股對位是依照資料日期對位。

所以在本週的時候只會取到上週的資料。

 

關於 這是因為選股的資料對位會抓最近的資料。 這句有誤小幫手要訂正,正確來說應該是會試著拉執行頻率上一期的資料。

所以這兩行

outputField1(Getfield("大戶持股比例","W",param:=1000));

outputField2(Getfielddate("大戶持股比例","W",param:=1000));

選股執行在日頻率下 週末資料更新後 和 星期一 時可以運作,但星期二到星期五的時候會出錯。

如果您運作在星期一的時候,他回的會是上週的資訊。(參考附圖)

 

關於回測取到未來值的部分,小幫手會和相關人員確認回測欄位的運作邏輯。

待確認後再回覆您。

附加文件

阿建 發文於   2023/06/03

 小幫手您好
今日回測我也有發現同樣的問題,請問目前回測欄位的運作邏輯,目前有確認了嗎?

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

 Hello 阿建,

 

您可以參考內建的選股腳本中關於大戶的腳本 (ex.千張大戶暴增),裡面有個sameweek的判斷,就小幫手所知使用那種邏輯就可以在本週大戶散戶集保資料尚未更新,用上週資料代替本週。

另外關於這些集保資料的對位,相關人員有在規劃安排調整,未來應該就不需要使用sameweek這種方式來做判斷。

charlie1234 發文於   2023/06/27

將近一年,終於看到要修正這個問題了

想問下,七月的修訂版,是會一次解決所有未來值的問題嗎

剛剛跟朋友討論才發現原來日的盤後資料也會有這種問題

以法人資料買超來說,如果選股條件是法人買超隔天就做多

實單會隔天才進場,但是回測是當天就進場了

等於提早一天進場

請小幫手協助了解,謝謝

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

Hello charlie1234,

 

就小幫手所知,此次修改只有針對集保欄位 (ex.大戶持股人數) 的修改。

並沒有包含盤後更新的日頻率資料。

小幫手會將您的意見轉告相關人員作參考。

發表回覆
Close