Finlab的價格意圖因子一文提到,其中提到股價穩定上漲的股票,有可能是公司或主力有意為之,而這樣的股票,未來繼續上漲的可能性也較高,而Finlab的回測也證明了這樣的策略是可以打敗大盤的,而本文嘗試將Finlab用到的條件,變成XQ策略,看看能否得到相同的結果。
1. 策略說明
這個策略主要概念是認為穩定上漲的股票,可能是公司或主力刻意營造的趨勢,而這樣的的股票在未來持續上漲的機會會較大,而要如何評估穩定上漲,finlab的概念很簡單,採用過去60天的報酬率與股價變動率來做評估,在同樣的報酬率前提下,如果變動率越小,這個價格就越穩定,每季選出價格意圖因子前50名的股票進場交易,策略的詳細說明,可以看Finlab原文,以下列出文章內的三個主要指標跟條件
三個指標:
報酬率:計算股票過去 60 天的總報酬率。
變動率:計算過去 60 天每日報酬的絕對值總和,這樣可以衡量股票價格變化的速度。
價格意圖因子:報酬率 / 變動率,這就是所謂的價格意圖因子,在同樣的報酬下,我們希望變動率越小越好,代表股票是「直線方向上漲」。
三個條件:
收益率上限:過去 60 天的收益率需小於 20%,這樣避免挑選近期漲幅過大的股票,減少追高風險。
最低交易量:日成交量需大於 200,000 股,確保有足夠的市場流動性。
有基本面數據:必須有營收資料支持,增加投資的可靠性。
2. 運用chatGPT解讀Python程式碼
雖然Finlab文章已經將策略差不多都說明了,但實際邏輯還是要看程式碼最為準確,如果看不懂程式碼,這邊提供一個不錯的方式,就是請ChatGPT來跟你說


我覺得這個方式還滿棒的,ChatGPT一條一條的跟你說明程式碼,也同時讓自己可以學習認識Python程式碼,以下為ChatGPT全部的回應,可以看看這樣的說明是不是讓自己對Python又多了一些認識呢?






3. XS程式碼說明
根據ChatGPT的說明,要將程式碼改寫成XS程式碼就超間單的了,由於這個策略需要選出價格意圖因子排名前50的股票,所以必須寫成函數,才能運用選股中心的排行條件,程式碼如下
//計算60天總報酬率
value1 = (close[0] - open[59])/open[59]*100;
//計算過去 60 天每日報酬的絕對值總和
value2 = summation(absValue(getfield("漲跌幅", "D")),60);
//價格意圖因子
value3 = value1 / value2 ;
//遇到近期報酬過大、成交量過小或月營收為負的股票,價格意圖因子直接為0
if value1 > 20 or volume < 200 or getField("月營收", "M")<0 then linearfactor = 0 else
linearfactor = value3;
另外,這個策略還有每季輪動的條件,所以另外寫了一個每季第二個交易日進場的條件,之所以用第二個交易日是因為XQ無法抓到每季的最後一個交易日,所以改用每季的第一個交易日開盤出場,為避免混亂,進場就用每季第二個交易日了,以下為進場的程式碼
//1、4、7、10月的第二個交易日進場
value1 = month(date);
condition1 = value1 = 1 and value1[1]=1 and value1[2] = 12;
condition2 = value1 = 4 and value1[1]=4 and value1[2] = 3;
condition3 = value1 = 7 and value1[1]=7 and value1[2] = 6;
condition4 = value1 = 10 and value1[1]=10 and value1[2] = 9;
if condition1 or condition2 or condition3 or condition4 then ret=1;
4. XQ選股回測
選股策略,將價格意圖因子跟進場日的條件放入,這樣就可以每季的第二個交易進場了


而在回測上,由於選股無法在特定時間出場,一個比較簡單的方式就是設定約55天出場,這樣應該可以確保在下一季開始前,就都出場了,以下為選股回測結果,勝率不算高,有六成,但報酬率似乎是不斷向上的,而且績效有打敗0050


用朋友最近提供的交易紀錄分析工具,設定每檔投入相同金額10萬元,每次輪動就是50檔股票,最大投入資金為500萬,九年獲利約650萬,一年約72萬,大約一年是14%報酬率,已經不錯了,而且只有2018年是虧損的




4. XQ雷達回測
如果想要精準在每次季報進出場,就需要用到雷達回測,因為雷達可以自己撰寫程式碼決定出場的日期,回測結果跟選股的回測差異不大,勝率都在58%


而在每年獲利的統計上,正確依照每季輪動進出的方式,獲利比選股的差一點,但差異不大(651萬 vs 628萬),但在每年獲利統計,這組回測出現兩年虧損。




5. XQ雷達回測設定
有關雷達設定,可以參照下圖,進場請選選股進場,出場選14710月出場腳本,商品則用選股,找到價格意圖因子策略,及可以回測
PS: 如果你沒有訂閱雷達模組,請從XS編輯器的雷達找到選股進場,打開點回測,然後依照圖片做設定,就可以做回測了


6. 結語
這個策略幾乎是個可以年年獲利了,接下來就是優化這個策略,讀者可以嘗試增加一些濾網,像是價格、成交量之類的去做回測,也可以去調整下排行選取的數量、試試雷達用輪動的效果,甚至改能半年、一年進場一次,這個策略,用到很多策略比較少用到的功能,是很值得了解學習的。
至於這篇的優化,就請等下一篇囉
發佈留言
很抱歉,必須登入網站才能發佈留言。