張若雪:自動識別金融市場異常波動——機器學習的一個應用

张若雪:自动识别金融市场异常波动——机器学习的一个应用

金融市場一直處於波動之中。大部分時間市場波動都是正常的,但有一些波動,源於突然發生的外部衝擊或者未被預期的其它因素,從而表現出不同於正常模式的異常狀態。這些異常波動,有一部分市場可以很快消化,另一部分則可能引發正反饋放大效應,單靠市場無形之手難以自拔,實體經濟也將為此付出重大代價。近年來我國貨幣市場、股票市場都發生過類似情況。及時識別出異常波動,將其與正常波動區分開來,以在必要時迅速做出政策反應,是防範化解系統性金融風險的首要一步,在這方面機器學習可以發揮重要的作用。

本文以貨幣市場質押式回購交易為研究對象,利用IF(Isolation Forest)和LOD(Local OutlierFactor)兩種算法訓練機器學習模型,識別正常波動和異常波動。我們不主觀地設定“正常”、“異常”的標準,而是由計算機按照算法,從歷史數據中“學習”潛在的規律,判斷什麼是異常的波動。這樣做優點主要有:一是大幅降低判斷的主觀性,由算法自動擬合潛在的決策函數,發現潛在的數據模式;二是適合處理大數據和多維數據,面對此類問題人腦受制於有限的記憶,以及難以理解多維空間;三是時效性強,隨著時間的發展,數據分佈很可能發生改變,判斷標準也應隨之調整,算法能夠及時識別數據模式變化。

一、異常值識別的無監督學習算法

機器學習按照訓練數據有無目標值,可以分為有監督學習和無監督學習。無監督學習是適用於沒有目標值的訓練數據的算法,目的是從訓練集中學習“潛在”的決策函數,能夠幫助人們發現潛在的規律性。用於識別異常值的無監督機器學習算法主要有四種,分別是One-Class SVM,Elliptic Envelope,Isolation Forest,Local Outlier Factor。

考慮這樣一個問題:p維空間中有n個點,已知它們服從同一分佈,如果現在觀測到一個新的點,那麼新的觀測值與這n個點是來源於同一分佈嗎?針對此類問題,Schölkopf et al.(2001)提出了One-Class SVM算法,其思路是:對來源於同一分佈的初始觀測值,在p維空間中“畫出”其“緊邊界”(Close Frontier),如果新的點落在“緊邊界”的子空間中,就認為新的觀測值與初始值來自於同一分佈,否則認為新的觀測值是異常值。可以看出,這個算法的關鍵前提是訓練集必須是“純淨的”,不能含有異常值,否則計算結果將是有偏的。

當訓練集不純淨,或者不能確定訓練集是否純淨時,一個常用方法是對訓練集中正常值的分佈做出合理假設,比如假設正常值服從高斯分佈,從這個假設出發,一般可以確定正常值在p維空間中的分佈“區域”,離這個“區域”比較遠的觀測值,即認為是異常值,這就是Elliptic Envelope算法的基本思路(Rousseeuw and Van Driessen, 1999)。具體來說,首先計算每一個觀測值的魯棒協方差,以確定一個“橢圓”區域,並忽略區域以外的點;然後假設“橢圓”區域內部的觀測值服從高斯分佈,計算區域內部所有點的位置及其魯棒協方差,據此得到馬氏距離並算出“孤立度”標準。Elliptic Envelope只適合正常值為“單峰”分佈的情形,對“雙峰”或“多峰”分佈的擬合效果較差。

針對訓練集不純淨的情形,Liu et al.(2008)根據隨機森林(Random Forest)的基本思想,提出了Isolation Forest算法。IF算法首先隨機選擇訓練集的一個特徵,然後在這個特徵的最大值和最小值之間隨機選擇分叉值,重複這個過程,直至將一個樣本分離出來。上述遞歸分離過程能以“決策樹”的形式表示,分離一個樣本所需分叉的次數,即為從根節點到末節點的路徑長度,對隨機森林所有決策樹的路徑長度進行平均,就能得到正常值的決策函數。對異常值,根據決策函數計算的路徑會短於正常值,因此,如果一個樣本的路徑偏短,那麼就認為這個樣本是異常值。IF算法適用性好,能夠有效處理“雙峰”和“多峰”問題。

另一個適用性比較好的異常值識別算法是Local Outlier Factor(Breunig and Sander, 2000)。LOF算法通過計算每一個觀測值的“局部異常因子”,來衡量其異常程度。局部異常因子是給定觀測值對其近鄰值的“局部密度偏差”(Local Density Deviation),局部密度顯著低於近鄰的樣本即為異常值。在計算時,一個觀測值的局部異常因子,等於其k最近鄰(K-NearestNeighbors)的平均局部密度與它的局部密度的比值:正常值的局部密度與其k最近鄰均值接近,而異常值的局部密度會明顯低於其k最近鄰均值。局部密度是根據觀測值之間的距離計算出來的。LOF算法適用性最好,即使異常值來源於不同分佈,也能有效進行處理。

二、算法選擇和學習結果

質押式回購是銀行間市場的主要交易。這一部分以質押式回購交易為例,使用LOF和IF兩種算法,識別市場異常波動及其潛在規律。

(一)數據描述和算法選擇

採用銀行間市場質押式回購交易的日度數據,時間跨度從2004年7月13日至2018年7月9日,共3499個觀測值;每個觀測值包含三個維度:時間、加權平均利率和成交額。圖1為加權平均利率(Rate)和成交額(Volume)隨時間的變化,其中利率單位是百分數,成交額單位是億元。從圖1可以看出,觀測期內加權平均利率和成交額均表現出非平穩性,也就是說,數據分佈(包括正常值和異常值)隨時間發生了變化。因此,我們選擇比較“安全”的LOF和IF算法訓練機器學習模型。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

圖1:質押式回購加權平均利率和成交額(日度)

(二)學習過程和識別結果

在訓練機器學習模型之前,還要把數據集切分成訓練集和測試集:算法從訓練集中“學習”潛在的決策函數,用於測試集以觀察“學習”效果。這裡以2004年7月13日至2016年12月31日的觀測值為訓練集,以2017年1月1日至2018年7月9日的觀測值為測試集。

  1. LOF算法的學習結果


LOF算法中需要設定的參數是K最近鄰的個數n,一般取默認值n=20,如果異常值比例過高(超過10%),也可以把K最近鄰的個數向上調整。我們將K最近鄰個數設為默認值,以下為學習結果:

訓練集有3121個觀測值,即2004年7月13日至2016年12月31日的3121個交易日,LOF算法識別出異常波動交易日313天,佔比10.02%。測試集有378個觀測值,即2017年1月1日至2018年7月9日的378個交易日,LOF算法識別出異常波動交易日38天(表1),佔比10.05%。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

現在分析LOF算法自動識別出的異常波動是不是合理。我們把2018年年初至7月9日的19個異常值列出來(表2),其中異常值標識為-1。可以看出,異常交易日要麼表現為成交額大幅變化(如1月2日),要麼利率大幅變化(如4月25日),要麼成交額和利率均大幅變化(如7月2日)。其次,從時間上看,異常交易日表現出明顯的季節性,集中在月初月末、假期前後。特別是2月份和4月份的異常值相對集中,2月15日至21日是春節放假,4月5日-7日是清明節放假,4月29日是勞動節放假。這些特點與我們的經驗觀察相符,LOF算法對異常波動的判斷合乎邏輯。此外,我們還發現,異常交易日傾向於連續出現,有一定的趨勢性或者說是“慣性”。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

結合LOF算法對正常波動的判斷,進一步分析其合理性。這裡以2018年4月份的15個正常波動交易日為例(表3)。可以發現,LOF算法自動識別出的正常交易日,成交額以及利率的波動幅度普遍較小,與異常波動對比差異比較明顯。需要注意的是4月19日,這是一個算法標識為正常波動的交易日,與異常波動的4月25日相比,利率變化幅度相同,而成交額變化幅度更大。這就產生一個疑問:要麼對4月19日的判斷有誤,要麼對4月25日的判斷有誤?其實這是由LOF算法的特點決定的,在下文中可以看到,採用不同的算法學習結果會有差異,如IF算法將4月19日和4月25日均歸為異常波動。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

根據LOF算法學習結果,還能發現異常值的其它一些運行規律(圖2)。第一, 2008年到2016年,異常波動出現的次數呈下降趨勢,2011年(36個)、2013年(21個)有所上升,2016年僅錄得14個異常值;此後異常波動有所增加,2017年出現19個異常波動交易日,2018年上半年就有19個異常波動交易日。第二,異常值出現的頻率與貨幣政策鬆緊存在負相關關係,貨幣政策放鬆的階段異常值出現的次數明顯下降,比如2009年、2013年、2015年;2017年以來去槓桿、強監管的大背景下,異常波動交易日明顯增加,但仍低於2013年之前。第三,異常波動交易日大部分出現在上半年,尤其集中在2月份和4月份。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

圖2:LOF算法識別出的異常值數量隨時間的變化

2. IF算法的學習結果

IF算法需要設定決策樹的數量n,以及訓練每棵決策樹所需的樣本數量b。這裡設定n=200、b=200,以下為學習結果:

IF算法從3121個觀測值中識別出異常波動交易日313天,佔比10.02%;測試集中378個觀測值,IF算法識別出異常波動交易日39天,佔比10.32%。就識別出的異常值的個數看,IF算法與LOF算法高度一致。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

現在分析IF算法的判斷是否合理,並與LOF算法的學習結果進行比較。我們把2018年年初至7月9日的異常值列出來(表5),IF算法識別出19個異常波動交易日,數量與LOF算法相等。異常波動交易日成交額或利率的變化幅度普遍較大,且有明顯的季節性和趨勢性,這些特點與LOF一致。在IF算法識別出的異常值中,有14個與LOF相同,佔大部分;有5個交易日IF算法認為是異常的,而LOF算法認為是正常的,用灰色底紋突出顯示。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

分析IF算法與LOF算法判斷不一致的結果,可以看出兩種算法的差異。IF算法隨機選取特徵以及特徵閥值,從根節點到末節點“垂直”遞歸分類,它對不同維度給予相同權重。而LOF算法通過計算多維空間中的局部密度進行分類,對於方差較大的維度,它賦予更多的權重。本文研究的例子中,成交額變動幅度更大,因此LOF算法更“重視”成交額,而IF算法對成交額和加權平均利率一視同仁。此外,IF算法的學習結果顯示,異常值數量隨時間的變化趨勢,與LOF算法一致(圖3)。

张若雪:自动识别金融市场异常波动——机器学习的一个应用

圖3:IF算法識別出的異常值數量隨時間的變化

三、結論

利用無監督機器學習方法,摒除主觀標準,讓計算機通過“學習”歷史數據,獲取對數據潛在模式的“認知”,以識別貨幣市場異常波動,得到的結果相當合理。算法自動識別出的異常波動有以下特點:成交額或利率的變化普遍較大(LOF算法更偏重成交額的變化,IF算法平等對待成交額和利率的變化);具有明顯的季節性和趨勢性;與貨幣環境的鬆緊存在負相關關係。那麼,就本文要研究的問題而言,應該以哪一種算法的結果為準呢?這也可以用機器學習的思路解決,比如藉助集成學習(Ensemble Learning)的理念,把LOF和IF分別作為獨立的學習模塊,組裝進一個集成學習器,最終判斷以集成學習器的結果為準。

金融領域不斷產生著海量數據,機器學習特別適合處理大數據和高維數據,用無監督算法自動識別貨幣市場異常波動,只是它在金融市場的一個初步應用。我們碰到的金融問題,基本上可以歸結為兩類:分類和預測。本文研究的就是一個分類問題:把正常波動歸為一類,剩下的就是異常波動;而預測出未來的異常波動,更是市場以及監管各方汲汲以求的夢想。目前,機器學習在分類方面的算法相對成熟,應用非常廣泛,預測由於更困難提升空間更大,但無疑為我們打開了一個思路。如果將機器學習算法和傳統的時間序列分析技術集合起來,很可能大大提高預測準確度。

歡 迎 訂 閱

深刻|思想|前瞻|實踐

專注於經濟金融政策解讀與建言的

智庫型全媒體平臺

张若雪:自动识别金融市场异常波动——机器学习的一个应用


分享到:


相關文章: