以統一超與全家為例,談均值回復交易策略

By | 2016-11-14

今年黑天鵝特別多,一下子英國脫歐,一下子川普當選美國總統,單純的作多作空的交易策略,很容易曝露在系統風險中而被迫停損,程式交易手法裡,除了趨勢策略之外,另外有一種方法叫作均值回復,這種手法的概念是,有些價格關係基於各種原因,它的均值是很穩定的,當短期波動把股價帶離這個均值時,早晚會回到均值,我們可以利用這種價格會回到均值的慣性,作空被高估的商品,作多被低估的商品,構成一個一多一空的組合交易,這麼一來,就不用怕系統性風險了,不管外頭颳風下雨,只要這個均值回復的力量依然存在,我們一樣可以賺到錢。

容我舉個一例子,台灣便利商店業裡有兩大霸主,一個是統一超,一個是全家,這兩家公司幾乎壟斷了台灣的便利商店市場,長期以來,這兩家公司的總市值,一直維持一個很穩定的比值,以去年的營業額來看,統一超的營業額約2000億左右,而全家是577億,本業獲利統一超近百億,全家則是接近14億,在這樣規模對比之下,統一超的總市值平均大約是全家的五倍到六倍之間,如果跌破五倍算是超跌,超過六倍算是超漲,我寫了一個腳本把這兩家的總市值相除,

value1=GetSymbolField("5903.TW","總市值","D");
value2=GetSymbolField("2912.TW","總市值","D");
if value1<>0
then begin
value3=value2/value1;
end
else
value3=0;

plot1(value3);
plot2(5);
plot3(6);

畫出來的線圖如下:

2016111401

各位可以看到基本上這個比值就如上述所說的情況,有時超漲,有時超跌,但均值一直是在5到6之間。

我們可以把這樣的關係寫成一交易策略,例如我們可以在這個均值從五以下向上突破五的時候進場作多統一超。

例如我寫了一個統一超專屬的腳本如下

value1=GetSymbolField("5903.TW","總市值","D");
value2=GetSymbolField("2912.TW","總市值","D");
if value1<>0
then begin
value3=value2/value1;
end
else
value3=0;

if trueall(value3[1]<5,10) and value3 crosses over 5
then ret=1;

我拿這腳本去回測,過去三年出現五次交易的機會,其中有四次會賺錢。

2016111402

透過大量數據的分析,找出金融市場裡長期維持的均勢,在短期價格偏離均勢時,進場反向操作,等待價格回到均勢,這是一個量化交易者常用的操作技巧,是我等有志走上量化交易這一條路的朋友,可以不斷尋找發掘交易策略的一個方向。