昨天我們談到了如何檢驗平穩序列(使用ADF),之前我們談了平穩序列的重要性(越平穩,越好低買高賣)。在明天講解模型的邏輯之前,可以再加一個小的部分,來介紹Hurst指數,這個用于衡量平穩性的工具。
大家查閱資料可知,Hurst指數的名字來自,H.E.HURST(赫斯特),他是英國水文學家。可想而知他在水文工作中發現了一定運動規律,並總結出來,他發現用有偏的隨機遊走能夠更好地描述水庫的長期存貯能力。
水文知識如何被現在的人應用到金融領域?因為時間序列數據遵從隨機遊走還是有偏的隨機遊走過程,也可以用Hurst指標判定,並且可以判定隨機遊走和均值回復的強度。
Hurst指數體現了時間序列的自相關性,尤其反映了序列中隱藏的長期趨勢,統計學上稱為長期記憶(long-term memory)。從這一點入手,我們一定要清晰,hurst指數是用來衡量時間序列記憶性的工具,它告訴我們:你構造的這個序列,以多大的強度進行隨機遊走,或者以多大的強度進行均值回復。
通過圖片可以看出,上證指數存在長期記憶性,移動區間(我們常說的滑動窗)hurst指數長時間在0.5以上。所以hurst指數可以是一個數字,對全段數據做完分析得到的結果,也可以是一個時間序列,按滑動窗推進的結果。
所以我們並不贊成使用Hurst指數擇時,你之前看到的一切關於Hurst指數直接擇時的報告,我們都認為並不穩定。
這個檢測工具下載地址在:http://cn.mathworks.com/matlabcentral/fileexchange/30076-generalized-hurst-exponent 你也可以按照其代碼,翻譯成python或其他語言。
我們在檢測時,直接用這段代碼,其中y是你構造的序列,價差、價比、線性回歸殘差等等都可以。
% 具有hurst統計特性的系統(如價格序列),不需要通常概率統計學的獨立隨機事件假設。
% 它反映的是一長串相互聯繫事件的結果。今天發生的事將影響未來,過去的事也會影響現在。
% H=0.5,表明時間序列可以用隨機遊走來描述;
% 0.5<H<1,表明時間序列存在長期記憶性(長期趨勢);
% 0≤H<0.5,表明粉紅噪聲(反持續性)即均值回復過程。
% Hurst函數是三個輸入,三個輸出:[mH,sH]=genhurst(S,q,maxT)
% S是一個N*1序列
% q是常數,默認值是1
% maxT是窗口長度,默認是19
% mH是Hurst指數值
% sH是q的標準差的估計值,q值的確定,可以用統計實驗獲得
% q的取值範圍是大於0的自然數
plot(log(y)); % 繪製y
legend('log(y)');
H=genhurst(log(y), 1);
fprintf(1, '廣義Hurst指數H1 = %f\n', H);
我們測試了螺紋鋼2010年至今的1小時線數據,得到H1 = 0.526595
2017年8月1日~2017年9月29日,5分鐘線數據。
螺紋1801 1805跨期價差H1 = 0.381276
螺紋1801 1805跨期價比H1 = 0.360018
螺紋1801 1805跨期殘差H1 = 0.232863
我們當然是希望Hurst越來越趨近於0,這樣能夠獲得近似白噪聲的高度回復的數據。
移動hurst的測試代碼如下:
% 計算移動hurst指數,窗口期=1000個時間序列
span = 1000;
movhurst = [];
for i = 1:length(y)
try
movhurst(i,1)=genhurst(y(i:span+i));
catch
movhurst(i,1)=genhurst(y(i:end));
end
end
% 繪製移動hurst,加入H=0.5基準線,觀察數據在哪些階段內是hurst值低於0.5,有均值回復性質的
plot(movhurst,'r');
legend('movhurst');
hold on;
line([1,length(movhurst)],[0.5,0.5]);
movhurst(isnan(movhurst)',:) = [];
AvgMovHurst=mean(movhurst);
fprintf(1, 'AvgMovHurst=%f\n', H);
點擊底部【閱讀原文】
跳轉到我們發布的《打開量化交易大門 36節精選公開課》目錄。
或者去優酷,也可以看到完整的課程專輯。
http://list.youku.com/albumlist/show?id=27113684&ascending=1&page=1.html