XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;visibility:hidden">

精選專欄

交易濾網設計:利用季節特性

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

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

季節性分析與指數

有些季節性講法純屬江湖傳說,媒體充版面用,季節性分析的基礎在於統計以及數字背後可以解釋的成因,「史瓦格期貨基本分析」一書中有專章介紹如何統計與編制商品季節性指數。此外,MultiCharts的績效報表也提供週期性分析,如下圖所示,我們就可以歸納出策略的績效在進入第三季末至第四季開始變差,我們就可以加一道濾網,在這個期間減少操作,或是把進場的條件調更嚴格。

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

星期/ATR相較於近30ATR表現

2013~2017

星期一

115.26

星期二

92.91

星期三

105.45

星期四

109.08

星期五

98.17

讀數100表示ATR等於近30日平均ATR,越大代表波動越大,應用上,當沖策略就可以考慮在波動大的日子(星期一跟四)放大部位,波動小的日子減少操作。

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

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

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

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

Inputs: Ceil(30),Flr(10),S(30), DayToTest(0),StpLs (6000),PrfTg(4000);

Variables:X(0),ZDelta(0),N(0),vDayOfWeek(0),ValidDay(False);

  

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

   vDayOfWeek = DayOfWeek( Date ); 

   ValidDay = False;     

   If ( vDayOfWeek = Monday ) and ( DayToTest = 1 ) Then ValidDay = true

   Else If ( vDayOfWeek = Tuesday ) and ( DayToTest = 2 ) Then ValidDay = true

   Else If ( vDayOfWeek = Wednesday ) and ( DayToTest = 3 ) Then ValidDay = true

   Else If ( vDayOfWeek = Thursday ) and ( DayToTest = 4 ) Then ValidDay = true

   Else If ( vDayOfWeek = Friday ) and ( DayToTest = 5 ) Then ValidDay = true;

end;

 

X = Stddev(Close, S);

if X<>0 then ZDelta = (X - X[1]) / X; 

 

If CurrentBar=1 then N = (Ceil+Flr)/2;

If CurrentBar>1 then N = N [1]* (1 +ZDelta);

N = MaxList(N, Flr);

N = MinList(N, Ceil);

 

{Entry}

if marketposition<>1 and ValidDay = true then Buy next bar at Highest(High, N) Stop;

if marketposition<>-1 and ValidDay = true then sellshort next bar at Lowest(Low, N) Stop;

 

Setstoploss (StpLs);

Setprofittarget (PrfTg);

Setexitonclose;

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

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

 

結論

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

 

備註:

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

統一期貨分析師  莊舜傑

警語:本文提供之程式範例僅為教學之用,旨在闡述交易之精神與策略原理,非操作建議,亦不做任何保證。

 


期貨線上開戶 期貨營業員專區

/統一期貨相關連結/

統一期貨FB統一期貨YouTube統一期貨LINE統一期貨IG