2019年2月9日

【MultiCharts】交易濾網:利用季節特性

何謂市場的「季節性特性」

台灣股市有所謂「五窮六絕七上吊」,此句話的意思是:一年十二月份中,資訊硬體的產製、代工訂單營收等方面,在五月、六月時會達最低迷,連帶影響股市跌多漲少。舉凡元月效應、聖誕節旺季、開紅盤行情、中秋節變盤等等,都是市場或商品的一種季節性分析與描述。利用季節性特性來設計濾網的原理即是:在偏漲的日子盡可能做多,在偏跌的日子則盡可能作空,在有波動的日子放大部位,在清淡的日子盡量做壁上觀。


季節性分析與指數

有些季節性講法純屬江湖傳說,媒體充版面用,季節性分析的基礎在於統計以及數字背後可以解釋的成因,「史瓦格期貨基本分析」一書中有專章介紹如何統計與編制商品季節性指數,可參考本篇:期貨交易與季節性分析運用


此外,MultiCharts的績效報表也提供週期性分析,如下圖所示,我們就可以歸納出策略的績效在進入第三季末至第四季開始變差,我們就可以加一道濾網,在這個期間減少操作,或是把進場的條件調更嚴格。


可惜MultiCharts的周期性分析沒有星期一~星期五的分析(也就是策略績效在禮拜一至禮拜五各自的績效表現),股市有所謂的「黑色星期一」,是否禮拜一的波動往往比較大(理應如此,因為要反應周末可能的突發事件),又,禮拜幾波動最小?其實不用臆測,用MultiCharts就可以跑出統計(請參考本篇:台指期波動研究:星期幾波動最大?),結果如下圖所示:


星期/ATR相較於近30ATR表現
2013~2017
星期一
115.26
星期二
92.91
星期三
105.45
星期四
109.08
星期五
98.17

 

應用上,當沖策略就可以考慮在波動大的日子(星期一跟四)放大部位,波動小的日子減少操作。



濾網範例:星期一~星期五,把績效不好的那天濾掉



另外來有一個作法是直接個別看禮拜一~禮拜五各自的績效表現(較適用當沖策略),從結果去回推,形成濾網,也就是例如統計顯示禮拜一的績效相對不好,就針對禮拜一設濾網減少操作,依此類推。以下是程式碼(備註1),範例是一個缺口填補當沖策略,加上一個參數(DaytoTest)讓使用者可以自行輸入1~5,各自限制策略只在禮拜一~禮拜五執行,就可以個別看績效:


===========================================
Inputs:
    DayToTest(0),
    TrendFilterPeriod(60),
    StpLs (6000),
    PrfTg (4000);

Variables:
    vDayOfWeek(0),
    Bullmarket(false),
    BearMarket(false),
    ShortSetup(false),
    LongSetup(false),
    RangeCheck(false),
    ValidGapDay(false),
    NewDay(false);

If ( Date <> Date[1] ) Then
Begin

   vDayOfWeek = DayOfWeek( Date );
   ValidGapDay = false;
  
   If ( vDayOfWeek = Monday ) and ( DayToTest = 1 ) Then ValidGapDay = true
   Else If ( vDayOfWeek = Tuesday ) and ( DayToTest = 2 ) Then ValidGapDay = true
   Else If ( vDayOfWeek = Wednesday ) and ( DayToTest = 3 ) Then ValidGapDay = true
   Else If ( vDayOfWeek = Thursday ) and ( DayToTest = 4 ) Then ValidGapDay = true
   Else If ( vDayOfWeek = Friday ) and ( DayToTest = 5 ) Then ValidGapDay = true;

   Bullmarket  = Close > Average( Close data2, TrendFilterPeriod );
   BearMarket  = Not Bullmarket;
   ShortSetup  = Open > Close[1];
   LongSetup   = Open < Close[1];
   RangeCheck  = Open < HighD(1) and Open > LowD(1);

   { Shorting Setup - Gap above yesterday's close }
  
   If ( ShortSetup and RangeCheck and BearMarket and ValidGapDay) Then
      sell short ("Gapfill I SE") next bar at market;
     
   { Long Setup - Gap below yesterday's close }
  
   If  ( LongSetup and RangeCheck and BullMarket and ValidGapDay)
      Then buy ("GapFill I LE") next bar at market;

End;

Setstoploss (StpLs);
Setprofittarget (PrfTg);
Setexitonclose;

===========================================

假設你得到一個禮拜五績效特爛的結果(可回頭觀察每個禮拜五的日內走勢,並能找出背後成因),那麼你再重新去調整程式碼,限制只在一~四進場,如此就可以優化績效。這也是一個利用季節性特行所設計出的濾網。

結論

一般交易策略的開發,參考的往往不脫價跟量,季節性特性如果呈現統計上的顯著結果,又能解釋背後成因,它會成為超越價跟量之外的濾網,對交易績效可能大有幫助,絕對值得投資人去好好觀察跟專研。

※範例程式pla檔下載

[備註]:
1. 程式碼與策略參考:http://systemtradersuccess.com/improve-simple-gap-strategy/。這個網站的討論相當完整與專業,推薦給讀者。




歡迎加入LINE@
加入好友
(點擊上方圖示)

沒有留言:

張貼留言

歡迎留言討論!