2019年3月5日 星期二

[量化狼]終結跳空惡夢:全日盤策略


如果你是個科學投資者,並且採用程序化交易替你來管理策略,那麼全日盤策略一定要是你策略組中的其中一個策略一定要擁有全日盤的策略,原因是擁有全日盤策略也是擁有優勢的一種。甚麼意思?
跟傳統交易者比起來,程序化交易是不會累的機器人,在夜晚無法進行盯盤交易時,為你提供策略避險與製造獲利機會的道路,因此相比於傳統交易者,擁有全日盤策略就是擁有優勢的一種
        在此,我們利用簡易技術指標來示範如何撰寫全日盤策略,通常說到乖離率(Bias ratio)都會認為是應用於逆勢交易的指標,在這裡提供不一樣的想法,以乖離率捕捉順勢行情。
        乖離率  =  ( 目前價 - 移動平均價 ) / 移動平均價
        為了判斷乖離率的大小,使用移動標準差;在統計學上,超過正負兩倍標準差通常被視為極端值,因此我們使用兩倍標準差來判斷是否出現極端行情。
    大部分的人認為,當乖離率越大時代表行情已偏離正確價格,因此逆勢做空,但以順勢的想法可以解讀為,當乖離率越大時代表行情異常強勁,因此進去追多;反之,在乖離率越小時進去追空,可以發現順勢的操作也能有不錯的表現。
        此策略為全日盤策略且交易頻率高,可有效對抗跳空風險。
策略基本設定:
策略名稱
全日盤策略
交易時段
08:45~05:00
交易層級
15min
交易成本
來回600
回測期間
2017/5-2019/2
權益曲線:

程式碼:

Input :
  len(30) ;
Var :
  MA(0) ,
  Bias(0) ,
  Std(0) ;
MA = Average(c,len) ;
Bias = (c - MA)/MA ;
Std = StdDev(Bias,len) ;
if marketposition<=0 and Bias>2*Std then
  buy 1 share at next bar market ;
if marketposition>=0 and Bias<-2*Std then
  sellshort 1 share at next bar market ; 
if marketposition>0 and Bias<-0.5*Std then
  sell all shares at next bar market ;
if marketposition<0 and Bias>0.5*Std then
  buytocover all shares at next bar market ; 
if dayofmonth(date)>14 and dayofmonth(date)<22 and dayofweek(date)=3 and time>=1330 and time<=1345 then  begin
  sell("CheckDay Sell") all shares at this bar close ;
  buytocover("CheckDay Buytocover") all shares at this bar close ; 

end ;

邏輯中文翻譯:

用乖離率做出移動標準差
當乖離率>2倍標準差時做多
當乖離率<-2倍標準差時時放空
當手上有多單且乖離率<-0.5倍標準差時多單平倉
當手上有空單且乖離率>0.5倍標準差時空單平倉
結算出場

回測績效檢視:

歷年損益分析: