基於高頻limit order book數據的短程價格方向預測——via multi-class SVM
之前有朋友@明月隨波說想看一些高頻轉低頻的因子,知乎大V 五道口男子職業技術學院 優秀技工@董可人 董老師好這口,感興趣的朋友可以去跟董老師深入淺出進一步交流,記得先去@vczh輪子哥的關注里換個黏手的頭像~~~
之前專欄里也有發過一篇追蹤聰明錢 - A股市場交易的微觀結構初探 - 量化哥 - 知乎專欄
也是基於高頻的因子,而且是成交量雜訊較小。本篇是基於高頻用SVM模型做一個價格的預測。
作者:本是SIGGRAPH一粒子 原文鏈接:基於高頻limit order book數據的短程價格方向預測——via multi-class SVM
摘要:
下面的內容是基於文獻Modeling high-frequency limit order book dynamics with support vector machines的框架寫的,由於高頻數據粗粒度依然有限,只能實現了部分內容。若需要完整理解這個問題以及實現方法,請閱讀上述的文獻。下面會簡單介紹一下整個框架的內容。
模型構造
作者使用Message book以及Order book作為數據來源,優礦目前沒有前者的數據,因此後面的部分只涉及到level1買賣5檔的order book數據作為模型的輸入。這裡我只實現了通過order book數據預測mid price的方向,包括向上,向下,以及不變。對於bid-ask spread crossing的方法相似,我暫時就不放上來了。
特徵選擇
對order book數據做處理後,可以提取到我們需要的特徵向量。總的特徵分為三類:基本、時間不敏感和時間敏感三類,這裡我們能從數據中獲得全部的基本和時間不敏感特徵,以及部分時間敏感特徵,具體的見圖片,或者進一步閱讀文獻。
數據標註
選擇時間間隔為通聯能獲取的最小時間間隔(3s),
- 若下一個單位時刻mid price大於此時的mid price,則標註為向上,
- 若下一個單位時刻mid price小於此時的mid price,則標註為向下,
- 若下一個單位時刻mid price等於此時的mid price,則標註為不變,
分類模型
基於one vs all的multi-class SVM,這裡我沒有對參數做過多調整,因此看到的模型事實上非常簡陋。有興趣的話也可以用forest tree等ML方法嘗試。
結果
我這裡拿了11月30日的萬科A作為數據來源來預測。之所以拿萬科A,是因為從11月上旬就開始看好這隻股票,結果在中旬的時候沒有拿住,低位沒有補進,誰知道月底就起飛了,讓我又愛又恨。我在最後畫出了預測結果,藍線是測試集中的mid price時間序列,紅點表示模型預測下一時刻方向向上,綠點表示模型預測下一時刻方向向下,沒有畫點表示預測方向不變。
坦白
現在看到的是一個極為粗糙的東西,原論文的框架遠遠比這個複雜,包括對訓練集的交叉驗證,以及數據的更新替代,bid-ask spread crossing,以及基於此的toy策略(這麼高頻的操作只能等專業版的並行計算了)等都沒有實現。這裡只是選取了前1200個數據作了normalization和rebalance後來預測後500個數據。
接下來會做一個更加精細的版本,歡迎各位大拿多多指教。
歡迎到優礦社區交流探討,最後分享一下最近的心路歷程
推薦閱讀:
※這也許是全知乎唯一一篇關於融資融券的文章
※民生銀行20年的明爭暗鬥又起波瀾,東方系和泛海系意欲何為?
※華泰證券廈門廈禾路是誰的席位?
※2017.03.31 本輪迴調的回顧與預期