- 中國期貨市場量化交易(R與C++版)
- 李尉
- 1519字
- 2019-12-06 13:58:56
3.3 高頻因子
高頻因子指基于分筆數據的因子,國內是指基于500毫秒截面數據的因子,這類因子一般會用到買賣價格和掛單量,即盤口信息。一般來說,可以分為三種因子:基于買賣掛單量的因子、基于成交量和基于價格變化的因子。另外,如果有5檔行情,還可以開發基于深度行情的因子。
我們拿螺紋鋼2016年11月17日至2017年6月30日一共150個交易日的日內分筆數據作為例子來分析。高頻因子分析的一個特點是計算量和存儲量都特別巨大,耗時比較長。簡單起見,我們只選取了少數幾個因子來分析。
我們先選取前面40天的數據,一共11個因子,加上因變量y,一共12個。

足足有160多萬個樣本,由此可見分筆數據的訓練量是非常大的。我們可以挑選其中幾個因子來看。
3.3.1 基于買賣掛單量的因子
這是高頻數據比較獨特的地方,它對買賣盤口比較依賴,因此很多時候可以考慮用掛單量來構造因子。比如:

由于數據龐大,我們按照每10萬數據量一組,計算各組的指標與因變量的相關系數,如圖3-8所示。


圖3-8 掛單量因子相關性
由圖3-8可見,相關系數在5%~11%,基本保持正相關性,還是非常穩定的。
3.3.2 基于成交量的因子
第二類是基于成交量的因子,我們也選取了其中一個:

這是衡量主動買量與主動賣量對比的因子,我們可以看看它的表現,如圖3-9所示。


圖3-9 成交量因子相關性
由圖3-9可知該因子在最近的行情中略有上升,整體也是正相關,但沒有基于掛單量的因子表現好。一般來說基于掛單量的因子有最強的預測力,但預測出來的波動并不大。
3.3.3 基于價格變化的因子
對于中低頻來說最常見的因子都是基于價格變化的,高頻也可以用這類因子,比如最簡單的基于指數加權平均線的因子。

可以看看這個因子的效果,如圖3-10所示。


圖3-10 價格因子相關性
由圖3-10可見這是一個負相關的因子,其實無論是正相關還是負相關對結果并沒有什么影響,加入一個負號即可改變。
3.3.4 多因子預測模型
現在,我們給出一個多因子的預測模型。我們用40天的數據進行交叉驗證來建模——即每10天的數據為一組,一共4組,每次預留一組作為驗證集,然后其他3組作為訓練集,這樣一來我們可以獲得40天的交叉驗證結果,如圖3-11所示。

圖3-11 高頻模型擬合優度

由圖3-11可以看出,最佳的是第66個模型。下面我們用這個模型來預測第41~100天:

系數的數目還是11個,由此可見所有因子都得以保留,我們可以考查一下樣本內外的擬合優度:

可見樣本內是0.017左右,樣本外是0.011左右,樣本外會比樣本內差一些。事實上,很多時候并不一定選樣本內交叉驗證最好的模型,也可以選一些次優模型,這樣的話在樣本外或許會有更佳的表現,比如我們隨機抽取一個次優的模型best=40:

這時樣本內降低為0.015 1,但樣本外提高至0.013 8,這樣就比較接近了,而注意到此時模型因子的數目為9,比之前少了一些,同時起到了篩選因子的作用。進一步地,如果我們選擇best=35的模型,則有:

這時樣本內數據是0.0139,樣本外數據是0.0141(平均值),樣本外數據甚至比樣本內數據還好,這說明降低模型復雜度之后,模型在樣本內的擬合程度下降了,但是在樣本外的預測能力提升了。
3.3.5 對R2的理解
如果是這類分筆數據建模,預測時間也只有未來幾十個tick的話,那么R2一般都會是正數。R2取值較低的原因一般是行情急劇暴漲暴跌,其實也不難理解,這種情況下人工也無法判斷,或者是由于“烏龍指”使然,完全在模型預料之外,因此預測值會很低。
其它情況下,對于價格低位震蕩時,R2會比較高,因為此時價格波動一跳都比較困難,整體y的取值變化不大,因此也更容易預測。但要注意的是哪怕預測得十分準確也無法賺錢,因為價格波動實在太小,無法覆蓋手續費和滑點等成本。對于價格波動幅度稍大的情況,R2會略低一些,但是由于波動幅度可以覆蓋手續費和滑點,因此這時候盈利也是可能的。
由此可見,現實中R2高不一定就盈利高,只能說在同一段行情下,樣本外的R2是越高越好。