有一些單純搞計算機、數學或者物理的人會問,究竟怎么樣應用 ML 在量化投資。他們能做些什么自己擅長的工作。雖然在很多平台或者自媒體有談及有關的問題,但是不夠全面和完整。從今日起,量化投資與機器學習公眾號將推出一個系列【機器學習該如何應用到】。
一、什么是機器學習
機械的定義避開不談,回答也不追求全面准確。明確一點,機器學習的主要目的在於發現規律或重現規律。(此處不談非監督學習、強化學習,也不談降維、集成算法)。什么是發現規律?譬如將決策樹應用於多因子模型,試圖從樣本數據中找出具有較高收益的因子組合。什么是重現規律?譬如,拿來一籃子股票的樣本(“訓練樣本”),假定當中y的值(連續值為回歸、離散值為分類)與x1,x2,...,xn之間一些規律,那么我們用一個模型去學習這個規律,目的是使得這個模型應用於訓練樣本時誤差最小,那么,當下一次出現一只新的股票,希望通過此模型預測這只股票未來的表現。而這個預測的原理是從訓練樣本中(過去的樣本)學習得到的。
二、為什么機器學習重要
在傳統的技術分析、量化投資中的具有業務背景的機理模型當中,舉兩個例子:
■ 例子1: 前段時間比較火的《跟蹤聰明錢-從分鍾線到選股因子》,作者認為聰明錢應該“訂單報價更激烈”,因此構造一個指標衡量聰明程度,利用這個指標的確定投資策略。


如上所示,首先對於30條樣本分鍾線計算S因子(上圖);其次以S因子由大到小的順序重新對這些分鍾線排序,並按此順序計算成交量累積占比(下圖),截取S因子最大的前20%成交量所包含的分鍾線(下圖中的紅色柱子)作為聰明錢。
如上划分找到聰明錢之后,我們就可以通過這些聰明錢的交易數據來構造聰明錢的情緒因子 Q:

Q越大,表明聰明錢的交易越傾向於出現在價格較高處,這是逢高出貨的表現,反映了聰明錢的悲觀態度;Q越小,則表明聰明錢的交易多出現在價格較低處,這是逢低吸籌的表現,是樂觀的情緒。

■ 例子2:
兩個例子的本質:對過去數據的分析,建立模型發現規律(例子(i)),或者重現規律(例子(ii)中,通過過去樣本中某因子與收益的關系,確定評分的梯度,並應用於以后的樣本,就是一種學習、重現規律的過程),從而對后面的投資產生建議。
但是,不難發現,上述兩個例子,發現規律和重現規律的過程是完全人為確定的。如例子1中是作者基於對“聰明錢”的理解,人為構造指標的,而例子2中的“重現規律”過程是從過去樣本中,因子與收益的關系(如Rank corrlelation)作定性分析,人為確定評分規則和梯度的。
那么問題來了,上述兩個例子的發現規律或重現規律過程能否用機器學習代替?
上述兩個例子本質也是分析過去的數據,從而發現規律或重現規律,這一過程與機器學習模型的本質是無異的。但是很遺憾,就目前的成果來看,若想在非監督情況下,利用機器學習模型來發現規律,這一點還是比較困難的(你就想象模型怎么找出例1研報中的“聰明程度”指標表達式),但是重現規律這一點,機器學習還是可以輕松做到的。
三、談談應用
既然已經說到,“量化投資領域中,所有需要重現規律的環節都可用機器學習模型代替”,就不用再問機器學習能應用在哪兒了。舉些例子,多因子模型本質是根據過去市場對某些因子或因子組合的青睞和偏好,判斷當前哪些股票值得投資。因此,就可使用機器學習模型(SVM、貝葉斯方法都是不錯的)學習過去的“偏好”,應用於現在。
■ 例子1:【國信證券——SVM 算法選股以及 Adaboost 增強】。以每個因子作為一層特征, 在 68 個因子的維度下,支持向量機算法能夠有效的對股票組合的標簽進行分類與預測。
SVM 算法的樣本數據的標准化采用排序法。 因此,計算每個股票按某因子的排序然后除以總股票數,這樣因子的值歸到(0,1]。
然后,對下一期收益率從大到小排序,取前 30%作為強勢股,后 30%作為弱勢股,強勢股划分類標為+1,弱勢股划分類標為-1;中間百分之 40%的股票排出訓練集,因為中間百分之 40%的股票收益並不強勢也不弱勢,相當於噪聲數據。為了充分利用數據,找出相對穩定有效的因子,確保算法的穩定性,用過去 12 個月的因子數據作為輸入樣本。從 SVM 理論推導可以知道, 在得到最優超平面的解之后, 樣本被划分為{-1,+1}兩類,而樣本距離超平面的距離,則可以代表樣本被正確分類的程度。 用公式表達為:

其中 x 為新的樣本點, w, b 為 SVM 求解超平面的輸出結果。根據距離結果, 同樣將股票組合分為 10 檔,選擇收尾兩檔分別作為強勢組合和弱勢組合,並觀察回測結果。

■ 例子2:你認為股指期貨Tick數據的盤口與成交與價格未來的走勢有關,就可以用機器學習模型(神經網絡、深度學習網絡)學習過去數據中盤口價量與之后的價格走勢的規律,再應用於當前;諸如此類。(此處沒有談及也較常用的聚類算法,如GMM等。)
三、談談機器學習的利弊
建立一個成功的機器學習模型,包含但不限於以下過程:
數據樣本的選取(因子變量的選取)、數據樣本的預處理(變量的預處理、樣本的平衡處理、極端樣本的處理等)、人為的處理(一些變換等)、模型的選取、模型算法的選取、模型參數的選取,對欠擬合、過擬合的避免等等……撇開這些不講,即使上述提及的過程合部處理恰當,訓練結果良好,哪怕是測試樣本效果也不錯,應用於實際投資效果也不能保證一定好。為什么呢?
第一,這是因為我們的樣本大多數時候是帶有時間維度的(即訓練樣本、測試樣本、實際投資所處的時間段都是不同的),它們並非截面數據,模型學習的市場“規律”或“偏好”,是會隨時間變化的。第二,我們的模型往往只是學習某一些因子反映的規律,而除去這些因子以外的因素,影響市場變化的因素有很多很多(匯率、政策等),這些都是模型沒有考慮的,一旦這些模型以外的因素成為主導市場“偏好”的時候,時間短還好說,最多也只是短期的一個回撤,如果時間較長,模型在此期間的效果就會大打折扣。
對於第二個問題,在股票多頭策略中使用對沖、在多空投機策略中設置止損和失效判斷(如連續n次投機連續失敗時,可考慮一段時間內不再開倉投機等)也許是個好方法,對於第一個問題,使用時間跨度更長的樣本進行訓練並不一定能解決問題。(例如市值因子,哪怕從3年的回測跨度變成5年、7年,在過去都是較為顯著的因子,但未來呢?)筆者認為這個問題需要具體分析。從數據的實際背景分析,模型所學習的規律是否可持續;如果擔心這種規律變化過快,可以縮短訓練樣本的長度,並且采用時間滾動的樣本作為訓練樣本。
PS
機器學習應用於量化投資的過程中仍有很多環節、細節尚未談及,重述筆者今天最想分享的觀點,就是量化投資中重現規律這一環節,可以考慮使用機器學習模型,或許會比主觀建立的模型更加簡單快捷、精細有效。