如何做到每月輪動或每季輪動

0Shares
Image

這應該是個有趣的議題,但比較少人去研究的,但是在很多的ETF或是投資組合都是很常見的,就是固定要每季重新篩選股票,淘汰前陣子表現不好的,挑出未來可能表現好的股票,至於要怎麼挑,市場上有很多種作法,這邊先不討論,之後會有股票輪動的策略分享,這篇先介紹怎麼做到輪動這件事

這邊用每季輪動選出某條件下排名前20名的股票來舉例,這該如何做呢? 這邊一樣採用選股+交易來說明

選股要負責兩件事

  1. 每季開始的時候做選股動作
    要做到這件事要能辨別何時為每季開始的第一天,就可以實現第一天執行選股,下面的選股範例程式碼,可以切換是要月選股還是季選股,請自己在XS的選股新建一個策略//每季第一天的隔天進場
    input: freqswitch(1,”採用季輪動(1)或月輪動(2)”);if freqswitch=1 then begin
    if month(date) <> month(date)[1] and (month(date)=1 or month(date)=4 or month(date)=7 or month(date)=10) then ret=1;
    end;if freqswitch=2 then begin
    if month(date) <> month(date)[1] then ret=1;
    end;
  2. 選出排名前20的股票
    這個就需要用到選股裡面的排行功能,可以用裡面預設好的條件,也可以用自訂條件,甚至是自己撰寫條件函數
    XQ的自訂排行條件,是寫在函數裡面,系統有內建一些了,也可以自己寫排行函數,點選自訂排行之後,挑選策略,就可以將自訂的排行條件加入了,XQ有滿詳細的說明,可以參考
    自訂排行在加入的時候,如有input值可以在這調整,另外,也要設定排行是由大到小或由小到大
  3. 選股回測
    XQ的選股回測無法做到固定每季出場,但可以做到固定天數出場,如果想要快速測試輪動的效果,可以設定持股60天出場,這樣就類似於每季出場,如果你想要精確一點的,那就要使用交易模組了

如何搭配交易模組
使用交易模組時,會需要分成回測跟模擬交易,操作上會不一樣,主要受限於XQ功能尚不完善,只能分開來做

  • 交易回測
    要使用交易模組做回測,第一步驟就是執行商品要選擇輪動的那個選股策略,由選股策略來通知交易策略何時進場,之後在根據進場月份來計算出場以下面程式碼為例,
    15行在控制進場,只要選股有選出股票,就近進場,而在輪動策略中,我們是固定每月或每季的第一天會選出股票,所以最快進場會是每月或每季的第二天開盤就進場17~21行則是在控制出場,運用month(filledRecordDate(filledRecordCount))去抓到進場的月份,然後根據是越輪動來季輪動來計算出場的月份,只要一到出場的月份,一開盤就出場


    下圖為季輪動回測結果,可以看到都是同一天進場,三個月後出場,出場時間會有所不同,主要跟該股票是否有人交易有關,如果沒有交易,成交的時間就會往後,但基本多是到期就出場了
  • 模擬交易
    上面的回測,如果想要全自動的模擬交易,是做不到的,主要原因在這篇有說到,因此,比較好的方式會是把進場跟出場都分開寫,進場的腳本很簡單,就是只要上面的第15行即可,至於出場,用下面的程式碼就可以了
    記得在模擬交易設定時,將進場的商品加入,並且選擇自訂策略部位,
    如果想要省點麻煩,也可以只設定自動進場就好了,只要當天剛好有輪動進場,手動把上一輪的股票都出掉也是另一種作法,反正一個月或一季才做一次,全部都人工也是可以的,但就是要記得就是了

0Shares


發佈留言

最近發文

加入我們

Categories

最新留言