【華泰金工林曉明團隊】偶然中的必然:重採樣技術檢驗過擬合——華泰人工智能系列之十九

摘要

Bootstrap是可行的構建「平行A股市場」的重採樣方法

Bootstrap是一種可行的構建「平行A股市場」的重採樣方法,能夠模擬機器學習不同環節的隨機性,從而檢驗在真實A股市場中得出的研究結論是否為過擬合。我們分別對樣本內數據、樣本外數據和回測時間進行Bootstrap重採樣,發現在「平行A股市場」中分組時序交叉驗證方法的模型性能和單因子回測指標均優於其它兩種方法,統計檢驗結果顯著。真實世界的研究結論能夠在平行世界中復現,表明該結論為過擬合的可能性較低。我們藉助「偶然」的工具,探尋出「必然」的規律。

Bootstrap重採樣的核心思想是有放回地抽樣

Bootstrap是一種統計學上的重採樣方法,又稱自舉法,主要用於研究統計量的統計特性。該方法的核心思想是有放回地抽樣。對原始數據集進行有放回地抽樣,得到N組Bootstrap數據集。每組Bootstrap數據集中,有的樣本可能被重複抽到,有的樣本沒有被抽到。計算每一組Bootstrap數據集的統計量,將得到N組Bootstrap數據集的該統計量的分佈,進而得到該統計量的統計量。

Bootstrap重採樣方法對機器學習量化研究體系的構建具有指導意義

Bootstrap重採樣對機器學習量化研究體系的構建具有指導意義。機器學習量化策略開發和傳統量化策略開發的重要區別在於,機器學習研究的複雜度、其所涉及的環節、超參數和參數數量遠超傳統量化研究,任何環節隨機性的引入,對最終整個系統都可能造成類似蝴蝶效應式的影響。本文採用Bootstrap模擬不同環節的隨機性,系統性地評估隨機性對機器學習結果的影響方向和影響程度。

機器學習不同環節隨機性對模型表現的影響各異

三種Bootstrap重採樣方案對同一組交叉驗證方法的影響方向和程度有區別。Bootstrap樣本內數據集相當於向訓練集因子值添加小幅的擾動,可能小幅削弱模型表現;Bootstrap樣本外數據集相當於向測試集因子值添加小幅的擾動,可能部分增強或削弱模型表現;Bootstrap回測時間即改變模型的回測時間段,可能大幅增強或削弱模型表現。上述結果對研究者的啟示是在開發過程中需要密切關注訓練數據的質量,同時應避免因回測時間選擇不當而造成的誤判。

Bootstrap提供刻畫隨機性的思路,使研究者能基於指標分佈進行決策

在以往的量化模型開發過程中,通常將歷史回測表現視作確定性的結果,而忽略隨機性對回測結果的影響。在面臨不同量化策略的取捨之時,往往只是簡單基於策略的年化收益率、夏普比率、收益回撤比等評價指標。Bootstrap重採樣方法提供了一種刻畫隨機性的思路,使研究者能夠基於評價指標的統計分佈、而非單個統計量,對模型優劣做出相對客觀的判斷和決策。本文從方法論的角度,對結合機器學習的多因子選股框架進行反思,針對模型比較環節和模型評價環節提出創新式的改造,希望對本領域的投資者有所啟發。

風險提示:人工智能選股方法是對歷史投資規律的挖掘,若未來市場投資環境發生變化,該方法存在失效的可能。機器學習選股模型隨機性的來源多樣,本研究只考慮有限的三種情況,存在忽略其它更重要隨機性來源的可能。Bootstrap重採樣方法是對隨機性的簡單模擬,存在過度簡化的可能。

本文研究導讀

世界上幾乎唯一可以確定的事情是不確定性。在自然科學領域,小到微觀世界裏粒子的高速運動,大到宏觀世界裏生物的漫長演化,無不受隨機性這雙看不見的手的擺布。在社會科學領域,無數遵從隨機性的個體經由隨機的連接和交互,構成一張複雜的巨型網絡,派生出種種紛繁多彩的社會現象。一代代人類窮盡心智,透過隨機性的迷霧試圖認識和理解世間萬象。

現代科學經過數百年的發展,已被公認為理解世界最有力的武器之一。科學的本質特徵是可證偽性。「所有天鵝是白色的」這一命題本身是錯誤的,但是其命題的表述是科學的,原因在於該命題可以通過「找出一隻黑天鵝」加以證偽。然而,由於隨機性的存在,大部分科學命題並不能簡單通過找反例的方式證偽。例如想證偽「吸煙者壽命更長」並不容易,吸煙對健康的影響機制過於複雜,該命題僅僅是一個模糊的、概率上的表述。單純找出一個壽命較短的煙民並沒有多大的說服力,人們需要藉助統計學的工具,透過「偶然」的外衣一窺「必然」的真相。

研究隨機性的統計學是現代科學的基石之一。統計學是如何解決上述問題的呢?首先定義「吸煙者壽命更長」為虛無假設,「吸煙者壽命不會更長」為備擇假設。其次對煙民和非煙民進行隨機抽樣,樣本量儘可能大,並且盡量控制其它影響壽命的因素。進而對兩類人群的壽命分佈進行定性比較和定量統計檢驗,計算虛無假設成立的概率(p值)。最終在一定顯著性水平下拒絕或接受虛無假設,作出相應推斷。以上例子只是相對簡化的表述,實際上可以通過更精巧的設計、更複雜的統計模型作出更準確的論斷。但無論其模型多麼繁複,本質仍是基於大量樣本結合統計模型,以推斷虛無假設成立的概率。儘管p值的使用近年來在學術界備受質疑,上述比較隨機變量分佈並進行統計檢驗的思路仍是目前人們從偶然中發現必然的幾乎是最有力的工具。

令人稍感意外的是,在量化投資領域,研究者在優質量化策略的求索之路上,卻似乎遺忘了隨機性的存在,將歷史回測表現視作確定性的結果。在面臨不同量化策略的取捨之時,往往只是簡單基於策略的年化收益率、夏普比率、收益回撤比等評價指標。例如策略A的夏普比率比策略B更高,我們便捨棄策略B,選擇策略A。然而,金融市場是一個開放複雜的巨系統,只需要隨機性的手稍加擺弄(例如樣本內、外數據集的輕微改變),回測結果就可能大相徑庭。我們所有的觀測以及得到的結論,都是基於確定性的歷史,都是針對我們所生活的真實世界。如果這些結論在與真實世界相仿的「平行世界」里不成立,那麼我們就有理由認為,這些結論只是針對真實世界的過擬合。

更值得憂慮的是,上述問題在人工智能量化研究領域都會被放大。機器學習量化策略開發和傳統量化策略開發的重要區別在於,機器學習研究的複雜度、其所涉及的環節、超參數和參數數量遠超傳統量化研究,任何環節隨機性的引入,對最終整個系統都可能造成類似蝴蝶效應式的影響。然而不同環節隨機性對結果的影響程度,尚沒有被系統性的研究過。例如,我們觀測到的一切選股因子值都是信號和噪音的疊加。如果訓練集因子發生微小擾動,是否會大幅影響機器學習模型的訓練結果?如果測試集因子發生微小擾動,是否會大幅影響機器學習策略的回測表現?如果上述問題的回答均為「是」,那麼我們同樣有理由認為,機器學習模型存在較大的過擬合風險。

能否創造出和真實世界相仿的平行世界?能否將真實世界中的結論放在平行世界中加以驗證?能否借鑒統計檢驗的思路,測量基於真實世界開發的量化策略出現過擬合的概率?作為針對上述問題的初次探索,本文採用基礎的重採樣方法——Bootstrap,對多因子選股的月度截面數據進行重採樣,創造出和真實A股市場相仿的若干組「平行A股市場」,並且以華泰金工《人工智能16:再論時序交叉驗證對抗過擬合》中的三組機器學習策略為考察對象,利用定性比較和定量統計檢驗方法考察各策略在平行A股市場中的表現,最終評估該研究得到的最優策略為過擬合的可能性。本文從方法論的角度,對結合機器學習的多因子選股框架進行反思,針對模型比較和模型評價環節提出創新式的改造,希望對本領域的投資者有所啟發。

採用Bootstrap重採樣構建「平行世界」

問題的提出:回測過擬合的困境

量化策略開發的過程中,對多組策略進行取捨時,大多依據回測階段的業績表現。例如策略A的夏普比率為2,策略B的夏普比率為1.5,策略C的夏普比率為1,那麼我們一般認為策略A優於策略B、C。然而,回測階段的良好表現可能源於一些偶然因素,並非意味着該策略正確捕捉到了市場中的規律,回測階段的最優策略在實盤階段可能表現平平,如下圖所示,我們將這種現象稱為回測過擬合。

回測表現的差距究竟源於真實效果上的差異,還是源於一些偶然因素,我們很難做確切地歸因。非不為也,實不能也。真實金融市場不存在「平行世界」,無法通過多次測量進行統計檢驗的方式,確認研究結論的真實性。

Bootstrap方法為我們提供了一個窗口,能夠基於單個真實金融市場數據,模擬出眾多金融市場數據的「平行世界」。假設模擬出10000組A股數據集,那麼我們可以得到10000組A、B、C三組策略的夏普比率,基於三者的分佈進行統計檢驗,進而推斷「策略A優於策略B、C」的研究結論究竟是由於模型正確捕捉到了市場中的規律,還是由於模型陷入了回測過擬合。

Bootstrap重採樣方法

Bootstrap是一種統計學上的重採樣方法,又稱自舉法,主要用於研究統計量的統計特性,從而檢驗統計結果的穩定性。其基本思想如下圖所示。原始數據集的統計量(如均值)等能夠很方便地得到,那麼如何計算該統計量的統計量呢(如均值的標準差)?Bootstrap方法的核心思想是有放回地抽樣。對原始數據集進行有放回地抽樣,得到N組Bootstrap數據集,N通常需要大於1000。計算每一組Bootstrap數據集的統計量(如均值),將得到N組Bootstrap數據集的該統計量的分佈,進而得到該統計量的統計量(如標準差)。

下面以具體例子說明。我們希望研究2019年4月1日A股非停牌個股的平均漲跌幅,數據集D為2019年4月1日A股3569隻非停牌個股的漲跌幅,求均值得到x_p=3.6132%,那麼均值的均值和標準差應該如何計算?

首先對數據集進行有放回地抽樣,從數據集中隨機抽取一個樣本,然後放回,再抽取一個樣本,再放回,……,如此重複3569次,得到了一個包含3569隻股票的新數據集D1。注意到原始數據集D中有的股票可能被重複抽到,有的股票可能沒有被抽到。我們將新數據集D1稱為一組Bootstrap數據集,求均值得到x_D1 。重複上述步驟,我們可以得到N組Bootstrap數據集D2,D3,……,DN,以及每組數據集的均值。假設重採樣次數,可以求出這10000個平均漲跌幅的均值:

標準差:

藉助Bootstrap方法,我們從一個原始數據集衍生出了N個新的Bootstrap數據集。

有的讀者可能提出質疑:對原始數據集進行Bootstrap重採樣後,得到的Bootstrap數據集中有的股票可能被反覆抽到,有的股票沒有被抽到,針對這樣的「假數據集」計算均值有何意義?實際上,單個Bootstrap數據集的統計量確實沒有多大意義,然而眾多Bootstrap數據集統計量構成的分佈提供了有效的增量信息。以一個通俗的例子說明,一顆沙粒可能無足輕重,我們更關心聚沙成塔後那座塔的特性。

Bootstrap和機器學習的關係

作為一種統計學方法,Bootstrap和機器學習有何關係?我們試從兩個層面回答。

首先,從「術」的層面,Bootstrap對機器學習算法能起到優化作用。Bootstrap廣泛應用於弱學習器的集成,這種集成方法也稱為Bagging。隨機森林是經典的基於Bagging思想的集成學習模型之一,將大量決策樹通過並行的方式集成。在訓練每一棵決策樹時,首先對原始數據集進行行採樣和列採樣,列採樣即每一步分裂時僅從隨機抽取的一部分特徵中做出選擇,行採樣即對原始樣本進行有放回地抽樣,從而得到一個與原始數據集樣本量相同的Bootstrap數據集。最後將大量決策樹通過少數服從多數的原則集成起來,實現隨機森林的預測。這裡每一棵樹的訓練只是基於不完整的Bootstrap數據集,學習能力相對較弱,其判斷可能無足輕重,但是眾木成林後,隨機森林擁有更強的學習泛化能力。

其次,從「道」的層面,Bootstrap對機器學習量化研究體系的構建具有指導意義。機器學習量化策略開發和傳統量化策略開發的重要區別在於,機器學習研究的複雜度、其所涉及的環節、超參數和參數數量遠超傳統量化研究,任何環節隨機性的引入,對最終整個系統都可能造成類似蝴蝶效應式的影響。然而不同環節隨機性對結果的影響程度,尚沒有被系統性的研究過。例如,我們觀測到的一切選股因子值都是信號和噪音的疊加。如果訓練集因子發生微小擾動,是否會大幅影響機器學習模型的訓練結果?如果測試集因子發生微小擾動,是否會大幅影響機器學習策略的回測表現?我們需要藉助工具評估不同環節隨機性對結果的影響。本文將採用Bootstrap方法模擬這些隨機性,構建一系列「平行A股市場」,考察機器學習量化模型在這些平行世界中的表現,對不同策略進行比較和取捨,檢驗策略是否陷入回測過擬合。下面章節我們將詳細介紹構建平行A股市場的方法。

構建「平行A股市場」

機器學習選股模型隨機性的來源較為多樣,我們試列舉三種可能的來源,如下圖所示。

1. 我們觀測到的選股因子值是信號和噪音的疊加。假設個股的因子值是服從某個特定分佈的隨機變量,真實世界裏的觀測值是該隨機變量的採樣,那麼在另一些「平行A股市場」中,無論是樣本內還是樣本外數據集,相同個股的相同因子都可能取不同的值。樣本內數據集因子值的隨機噪音可能對模型訓練環節造成影響。我們不希望因子的隨機擾動使得訓練得到的機器學習模型發生大幅改變。

2. 和第1點類似,樣本外數據集因子值的隨機噪音可能對模型回測環節造成影響。我們不希望因子的隨機擾動使得機器學習策略的回測表現發生大幅改變。

3. 模型的回測表現和回測時間的選擇密切相關。回測區間是牛市還是熊市佔主導,是小市值風格還是從價值風格佔主導,表現都會大相徑庭。我們希望策略能夠穿越不同市場環境,不希望回測時間的選擇對結果造成大幅影響。

針對以上三種隨機性的來源,我們嘗試下列三種Bootstrap重採樣構建「平行A股市場」的方案。

1. 針對樣本內數據集的隨機性,我們對樣本內數據集進行Bootstrap重採樣,具體如下圖所示。對於樣本內的每個月底截面期,假設全A股票池有效個股數量(非停牌、非次新股、下月初非漲停)為3600隻,那麼我們對全A股票池進行有放回地抽樣,重複3600次,得到一個包含3600隻股票的Bootstrap股票池及其對應的截面期因子數據。相比於真實全A股票池,Bootstrap股票池中有的股票可能重複抽到,有的股票可能沒有被抽到。在隨後機器學習的訓練環節,該月底截面期的特徵即為這3600隻「新」股票的因子值。需要說明的是,Bootstrap的重採樣次數通常應大於1000。但是考慮到研究的時間開銷,本文將重採樣次數N設為100。我們發現N=100已經能夠觀察到分佈間的差異,並且得到具備一定統計效力的結果,細節請參考本文結果部分。

2. 針對樣本外數據集的隨機性,我們對樣本外數據集進行Bootstrap重採樣,具體如左下圖所示。對樣本外的每個月底截面期,對全A股票池做有放回地抽樣,得到Bootstrap股票池及對應的截面期因子數據。在隨後的回測環節,該月底截面期的特徵即為這些「新」股票的因子值。

3. 針對回測時間的隨機性,我們對回測時間進行Bootstrap重採樣,具體過程如右上圖所示。假設原始樣本外數據集包含從2011年1月~2018年12月共96個月底截面期對應的回測月份(最後一個月底截面期2018年12月對應的回測月份為2019年1月),我們對於這96個回測月份進行有放回地抽樣,並重複96次,得到一個包含新的96個回測月份的Bootstrap回測時間。相比於原始的96個回測月份,Bootstrap回測時間中有的月份可能被重複抽到,有的月份可能沒有被抽到。我們隨後基於這96個「新」回測月份進行機器學習模型的回測。需要指出的是,這96個新回測月份不存在嚴格的時序關係,即Bootstrap回測時間段中靠前的月份在真實市場中所對應的月份並不一定靠前。

方法

考察對象:三組交叉驗證調參方法

我們希望採用Bootstrap方法模擬金融市場中的隨機性,構建一系列「平行A股市場」,考察機器學習量化選股模型在這些平行世界中的表現,對不同策略進行比較和取捨,檢驗策略是否陷入回測過擬合。具體而言,本研究的考察對象是華泰金工《人工智能16:再論時序交叉驗證對抗過擬合》(20190218)中的三組交叉驗證調參方法,分別為:K折交叉驗證、亂序分組遞進式交叉驗證、分組時序交叉驗證。三組調參方法使用的基學習器相同,均為XGBoost模型,模型構建細節也相同,僅有的區別是通過調參最終選定的超參數不同。《人工智能16:再論時序交叉驗證對抗過擬合》的研究結論是:基於分組時序交叉驗調參方法得到的人工智能選股策略表現優於另外兩種方法。本研究將檢驗上述結論是否存在回測過擬合。

下面簡單介紹待檢驗的結論。對於三組交叉驗證方法,我們逐月計算模型性能(如AUC)以及單因子測試表現(如Rank IC)。為了突出方法間的差異,將亂序分組遞進式和分組時序的AUC或Rank IC減去K折的AUC或Rank IC,再對差值做累加。如果差的累積值穩定上升,那麼可認為該方法穩定優於K折;如果差的累積值維持在0軸,那麼可認為該方法和K折沒有差別。下圖結果顯示,分組時序表現優於亂序分組遞進式,說明時序交叉驗證帶來的提升源於時序信息的保留;同時亂序分組遞進式優於K折,說明使用更少樣本也能部分提升模型表現。

關於三種交叉驗證調參方法的概念,本文不再贅述,感興趣的讀者請參考華泰金工《人工智能14:對抗過擬合:從時序交叉驗證談起》(20181128)和《人工智能16:再論時序交叉驗證對抗過擬合》(20190218)。簡單而言:

1. K折交叉驗證是經典的交叉驗證方法,適用於獨立同分佈的非時間序列數據,應用於金融領域的時間序列數據存在過擬合風險,是本文的基線模型。

2. 亂序分組遞進式交叉驗證相比於K折使用更少樣本,但是破壞時序信息,也是本文的基線模型。

3. 分組時序交叉驗證是針對時間序列數據提出的改進,能一定程度上減輕過擬合,是本文推薦使用的模型。

人工智能選股模型測試流程

本文選用XGBoost作為基學習器,測試流程包含如下步驟:

1.數據獲取:

a) 股票池:全A股。剔除ST股票,剔除每個截面期下一交易日停牌的股票,剔除上市3個月內的股票,每隻股票視作一個樣本。

b) 回測區間:2011年1月31日至2019年1月31日。

2.特徵和標籤提取:每個自然月的最後一個交易日,計算之前報告里的70個因子暴露度,作為樣本的原始特徵,因子池如下表所示。計算下一整個自然月的個股超額收益(以滬深300指數為基準),在每個月末截面期,選取下月收益排名前30%的股票作為正例(y = 1),後30%的股票作為負例(y = 0),作為樣本的標籤。

3.特徵預處理:

a) 中位數去極值:設第T期某因子在所有個股上的暴露度序列為D_i,D_M 為該序列中位數,D_M 1為序列 |D_i -D_M| 的中位數,則將序列D_i中所有大於D_M+5D_M1的數重設為D_M+5D_M1,將序列D_i中所有小於D_M-5D_M1的數重設為D_M-5D_M1;

b) 缺失值處理:得到新的因子暴露度序列後,將因子暴露度缺失的地方設為中信一級行業相同個股的平均值;

c) 行業市值中性化:將填充缺失值後的因子暴露度對行業啞變量和取對數後的市值做線性回歸,取殘差作為新的因子暴露度;

d) 標準化:將中性化處理後的因子暴露度序列減去其現在的均值、除以其標準差,得到一個新的近似服從N(0, 1)分佈的序列。

4.滾動訓練集和驗證集的劃分:本文採用年度滾動訓練方式,全體樣本內外數據共分為八個階段,如下圖所示。例如預測2011年時,將2005~2010年共72個月數據合併作為樣本內數據集;預測T年時,將T-6至T-1年的72個月合併作為樣本內數據。根據不同的交叉驗證方法劃分訓練集和驗證集,交叉驗證的折數均為12。對於分組時序交叉驗證,每次訓練集長度均為6個月的整數倍,驗證集長度均等於6個月。對於K折交叉驗證,驗證次數為12次;對於亂序分組遞進式和分組時序交叉驗證,驗證次數為11次。凡涉及將數據打亂的交叉驗證方法,隨機數種子點均相同,從而保證打亂的方式相同。

5.交叉驗證調參:對全部超參數組合進行網格搜索;針對每一組超參數組合,每次驗證使用XGBoost基學習器對訓練集進行訓練,並且記錄模型在驗證集的表現;選擇全部驗證集平均AUC最高的一組超參數作為模型最優超參數。不同交叉驗證方法可能得到不同的最優超參數。最終確定的最優超參數設置下表所示。

6.樣本內訓練:使用最優超參數設置下的XGBoost基學習器對完整的原始樣本內數據集進行訓練。採用Bootstrap方案1時,對100組Bootstrap樣本內數據集分別進行訓練,得到100組XGBoost模型。

7.樣本外測試:完成模型訓練後,以T月末截面期所有樣本預處理後的特徵作為模型的輸入,得到每個樣本的預測值。將預測值視作合成後的因子,採用回歸法、IC分析法和分層回測法進行單因子測試。採用Bootstrap方案2時,對100組Bootstrap樣本外數據集進行預測並回測。採用Bootstrap方案3時,將原始樣本外數據集後按照100組Bootstrap回測時間重新組織並回測。

8.模型評價:

a) (針對Bootstrap方案1)100組測試集正確率、AUC等衡量模型性能的指標分佈情況;

b) (針對Bootstrap方案1、2和3) 單因子測試得到的統計指標和回測績效的分佈情況。

單因子測試

回歸法和IC值分析法

測試模型構建方法如下:

1. 股票池:全A股,剔除ST股票,剔除每個截面期下一交易日停牌的股票,剔除上市3個月以內的股票。採用Bootstrap方案2時,股票池為Bootstrap樣本外數據集,同時需符合上述篩選條件。採用Bootstrap方案3時,股票池為Bootstrap回測時間確定的月末截面期所對應的、同時符合上述篩選條件的股票。

2. 回測區間:2011-01-31至2019-01-31。

3. 截面期:每個月月末,用當前截面期因子值、與當前截面期至下個截面期內的個股收益進行回歸,並計算其Rank IC值。

4. 數據處理方法:對於分類模型,將模型對股票下期上漲概率的預測值視作單因子。對於回歸模型,將回歸預測值視作單因子。因子值為空的股票不參與測試。

5. 回歸測試中採用加權最小二乘回歸(WLS),使用個股流通市值的平方根作為權重。IC測試時對單因子進行行業市值中性。

分層回測法

依照因子值對股票進行打分,構建投資組合回測,是最直觀的衡量因子優劣的手段。測試模型構建方法如下:

1. 股票池、回測區間、截面期均與回歸法相同。

2. 換倉:在每個自然月最後一個交易日核算因子值,在下個自然月首個交易日按當日收盤價換倉,交易費用以雙邊千分之四計。

3. 分層方法:因子先用中位數法去極值,然後進行市值、行業中性化處理(方法論詳見上一小節),將股票池內所有個股按因子從大到小進行排序,等分N層,每層內部的個股等權配置。當個股總數目無法被N整除時採用任一種近似方法處理均可,實際上對分層組合的回測結果影響很小。

4. 多空組合收益計算方法:用Top組每天的收益減去Bottom組每天的收益,得到每日多空收益序列r_1,r_2,...,r_n,則多空組合在第n天的凈值等於(1+r_1)(1+r_2)...(1+r_n)。

5. 評價方法:全部N層組合年化收益率(觀察是否單調變化),多空組合的年化收益率、夏普比率、最大回撤等。

結果

方案1:對樣本內數據集進行Bootstrap重採樣

首先我們展示對樣本內數據集進行Bootstrap重採樣的結果。對於每一次重採樣,我們基於真實因子截面數據,構建一個「平行A股市場」;以平行世界中的因子截面數據為樣本內數據集,以不同交叉驗證方法得到的最優超參數作為模型的超參數,訓練XGBoost模型;模型訓練完成後,以真實A股市場的因子截面數據為樣本外數據集,進行預測和單因子回測,計算模型性能和各項回測指標。最後統計100次重採樣的模型性能和單因子回測指標,繪製分佈,比較三組交叉驗證方法的指標分佈情況。Bootstrap樣本內數據集的結果回答了如下問題:樣本內數據的小幅變動是否影響機器學習研究結論?

模型性能

三組交叉驗證方法樣本內正確率和AUC的分佈情況如下圖。兩項指標的分佈較為密集,例如全部分組時序交叉驗證的樣本內正確率集中在61%~62%的區間,樣本內AUC集中在0.66~0.67的區間。從三組交叉驗證方法的樣本內表現看,K折優於亂序分組遞進式,亂序分組遞進式優於分組時序。

三組交叉驗證方法樣本外正確率和AUC的分佈情況如下圖。和樣本內表現截然不同,三組交叉驗證方法的樣本外表現出現了逆轉,分組時序遠優於亂序分組遞進式,亂序分組遞進式優於K折。Bootstrap樣本內數據集構建的平行世界中得出的研究結論與真實世界中得出的研究結論一致(真實世界結論參考圖表8、9,下同)。

回歸法和IC值分析法

三組交叉驗證方法回歸法和IC值分析法各項指標的分佈情況如下圖。分組時序交叉驗證的|t|均值、t均值、因子收益率均值、Rank IC均值遠優於亂序分遞進式和K折。Bootstrap樣本內數據集構建的平行世界中得出的研究結論與真實世界中得出的研究結論一致。

分層回測法

三組交叉驗證方法分層回測法各項指標的分佈情況如下圖。分組時序交叉驗證的多空組合年化收益率、Top組合年化收益率、Top組合夏普比率均優於亂序分遞進式和K折;對於多空組合夏普比率,分組時序交叉驗證具有微弱優勢。Bootstrap樣本內數據集構建的平行世界中得出的研究結論與真實世界中得出的研究結論基本一致。

上圖展示了三組交叉驗證方法100次Bootstrap重採樣下收益最高、收益最低的兩條多空組合凈值以及真實A股市場下的多空組合凈值。首先,仍可以觀察到分組時序、亂序分組遞進式、K折收益從高到低的排序關係。其次,我們發現真實凈值(實線)和最優凈值(點線)接近,和最差凈值(短劃線)相差較大。換言之,大部分Bootstrap樣本內平行世界訓練得到的模型表現不如真實世界訓練得到的模型。這說明樣本內數據集的小幅擾動在多數情況下可能削弱模型表現。

方案2:對樣本外數據集進行Bootstrap重採樣

下面展示對樣本外數據集進行Bootstrap重採樣的結果。對於每一次重採樣,我們基於真實因子截面數據,構建一個「平行A股市場」;以真實世界中的因子截面數據為樣本內數據集,以不同交叉驗證方法得到的最優超參數作為模型的超參數,訓練XGBoost模型;模型訓練完成後,以平行A股市場的因子截面數據為樣本外數據集,進行單因子回測,計算各項回測指標。最後統計100次重採樣的單因子回測指標,繪製分佈,比較三組交叉驗證方法的指標分佈情況。Bootstrap樣本外數據集的結果回答了如下問題:樣本外數據的小幅變動是否影響機器學習研究結論?

回歸法和IC值分析法

三組交叉驗證方法回歸法和IC值分析法各項指標的分佈情況如下圖。分組時序交叉驗證的|t|均值、t均值、因子收益率均值、Rank IC均值遠優於亂序分遞進式和K折。Bootstrap樣本外數據集構建的平行世界中得出的研究結論與真實世界中得出的研究結論一致,也和Bootstrap樣本內數據集得出的結論一致。

分層回測法

三組交叉驗證方法分層回測法各項指標的分佈情況如下圖。分組時序交叉驗證的多空組合年化收益率優於亂序分遞進式和K折;對於多空組合夏普比率、Top組合年化收益率、Top組合夏普比率,分組時序交叉驗證具有微弱優勢。Bootstrap樣本外數據集構建的平行世界中得到的研究結論與真實世界中得到的研究結論基本一致,也和Bootstrap樣本內數據集得出的結論基本一致。

下圖展示了三組交叉驗證方法100次Bootstrap重採樣下收益最高、收益最低的兩條多空組合凈值以及真實A股市場下的多空組合凈值。首先,仍可以觀察到分組時序優於另外兩組方法,但是亂序分組遞進式和K折沒有明顯差異。其次,我們發現真實凈值(實線)位於最優凈值(點線)和最差凈值(短劃線)的中間位置。這說明樣本外數據集的小幅擾動對模型表現的影響整體為中性。

方案3:對回測時間進行Bootstrap重採樣

下面我們展示對回測時間進行Bootstrap重採樣的結果。對於每一次重採樣,我們基於原有的96個回測月份,構建一組新的包含96個回測月份的時間序列;以真實世界中的因子截面數據為樣本內數據集,以不同交叉驗證方法得到的最優超參數作為模型的超參數,訓練XGBoost模型;模型訓練完成後,以新的回測月份序列中真實A股市場的因子截面數據為樣本外數據集,進行單因子回測,計算各項回測指標。最後統計100次重採樣的單因子回測指標,繪製分佈,比較三組交叉驗證方法的指標分佈情況。Bootstrap回測時間的結果回答了如下問題:回測時間的改變是否影響機器學習研究結論?

回歸法和IC值分析法

三組交叉驗證方法回歸法和IC值分析法各項指標的分佈情況如下圖。分組時序交叉驗證的|t|均值、t均值、因子收益率均值、Rank IC均值略優於亂序分遞進式和K折,但是優勢不如前兩種Bootstrap方案明顯。Bootstrap回測時間構建的平行世界中得出的研究結論與真實世界中得出的研究結論一致。

分層回測法

三組交叉驗證方法分層回測法各項指標的分佈情況如下圖所示。分組時序交叉驗證的多空組合年化收益率優於亂序分遞進式和K折的年化收益率;對於多空組合夏普比率、Top組合年化收益率、Top組合夏普比率,如果僅從分佈形態看,分組時序交叉驗證沒有優勢。Bootstrap回測時間構建的平行世界中得到的研究結論與真實世界中得到的研究結論部分一致。

三種Bootstrap重採樣方案的橫向比較

除了針對同一種重採樣方案下的三組交叉驗證方法進行比較外,還可以對同一組交叉驗證方法下三種重採樣方案得到的指標分佈進行橫向比較。下面我們以分組時序交叉驗證為例展示橫向比較結果。橫向比較結果回答了如下問題:機器學習選股不同環節隨機性的引入,對研究結論的影響程度有何差異?

回歸法和IC值分析法

三種重採樣方案下的回歸法和IC值分析法各項指標的分佈情況如下圖所示。首先,從分佈的寬度看,Bootstrap樣本內數據集的分佈較窄,即變異程度低;Bootstrap樣本外數據集次之;Bootstrap回測時間的分佈較寬,即變異程度大。這說明,樣本內數據集的小幅變動對研究結論的影響程度不大;回測時間的改變對研究結論的影響程度相對較大,因而在量化策略的開發過程中,需要避免因回測時間選擇不當而造成的誤判。

其次,從分佈的位置看,Bootstrap樣本內數據集位於真實值的左側,Bootstrap樣本外數據集和Bootstrap回測時間的中心位置和真實值接近。這說明,樣本內數據集的小幅變動可能削弱模型表現,研究者在開發過程中需要密切關注訓練數據的質量;而當模型完成訓練後,樣本外數據集和回測時間的改變對單因子測試各項統計指標的影響方向整體為中性。

分層回測法

三種重採樣方案下的分層回測法多空組合年化收益和夏普比率的分佈情況如下圖所示。首先,從分佈的寬度看,仍然是Bootstrap樣本內對結果的影響程度較低,Bootstrap樣本則外次之,Bootstrap回測時間對結果的影響程度較高。其次,從分佈的位置看,Bootstrap樣本內和Bootstrap樣本外的多空組合夏普比率分佈整體位於真實值的左側,說明樣本內或樣本外數據集的小幅變動均可能降低多空組合的夏普比率。與上一小節結果對比可知,t值、因子收益率、Rank IC等統計指標對樣本外數據集的變動相對不敏感,但是類似多空組合夏普比率這樣的和交易密切相關的指標對樣本外數據集的變動較為敏感。

三種重採樣方案下的分層回測法的Top組合年化收益和夏普比率的分佈情況如下圖所示。Bootstrap回測時間的分佈寬度遠超另外兩種Bootstrap方案,說明Top組合表現對回測時間較為敏感。Top組合指標分佈的中心位置在真實值的右側,原因可能是Top組合的月度收益為正偏態分佈,長尾在右側的正收益部分,Bootstrap重採樣時高收益月份有較大概率被抽到,提升了Top組合在平行世界中的表現。

結果匯總以及回測過擬合風險的定量刻畫

將三組交叉驗證方法在三種Bootstrap方案下的回測表現進行匯總,結果如下表所示。總的來看,三種Bootstrap方案下得出的研究結論和真實A股市場得出的研究結論一致,即分組時序相對較好,亂序分組遞進式次之,K折相對較差。平行世界和真實世界能夠互相印證,表明基於真實數據所得出的「分組時序交叉驗證優於其餘兩組方法」的研究結論其回測過擬合風險較低。

通過平行世界和真實世界中模型不同表現的對比,我們得以定性描述基於真實數據得出研究結論的回測過擬合風險。那麼能否定量刻畫回測過擬合風險?下面我們嘗試兩種簡單方法。

1. 對於同一種Bootstrap方案下三組交叉驗證方法的回測指標分佈進行單因素重複測量方差分析(One-way Repeated Measures ANOVA)的統計檢驗。ANOVA的統計指標F值和P值用以衡量三組分佈的差異性,F值越大或對應的P值越小,說明三組分佈的差異越大,那麼「分組時序交叉驗證優於其餘兩組方法」研究結論其回測過擬合風險可能越小。觀察下表可知,除多空組合夏普比率和Top組合夏普比率外,大部分回測指標在三組交叉驗證方法之間均存在顯著差異,進一步驗證了之前的結論。

2. 對於每一次Bootstrap重採樣,判斷分組時序交叉驗證的回測指標是否優於其餘兩組的方法。統計全部100次重採樣下,分組時序交叉驗證表現最優的概率。概率值越接近1,說明分組時序交叉驗證在平行世界裏表現越好,那麼基於真實數據得出結論的過擬合風險就越小。觀察下表可知,多數指標的概率值等於或接近1,同樣印證了之前的結論。

總結

通過每種Bootstrap方案下三組交叉驗證方法比較,以及三種Bootstrap方案下同一組交叉驗證方法的橫向比較,我們得到下列結論:

1. Bootstrap是一種可行的構建「平行A股市場」的重採樣方法,能夠模擬機器學習不同環節的隨機性,從而檢驗在真實A股市場中得出的研究結論是否為過擬合。我們分別對樣本內數據、樣本外數據和回測時間進行Bootstrap重採樣,發現在「平行A股市場」中分組時序交叉驗證方法的模型性能和單因子回測指標均優於其它兩種方法,統計檢驗結果顯著。真實世界的研究結論能夠在平行世界中復現,表明該結論為過擬合的可能性較低。我們藉助「偶然」的工具,探尋出「必然」的規律。

2. 三種Bootstrap方案對同一組交叉驗證方法的影響方向和程度有區別。Bootstrap樣本內數據集相當於向訓練集因子值添加小幅擾動,可能小幅削弱模型表現;Bootstrap樣本外數據集相當於向測試集因子值添加小幅擾動,可能部分增強或削弱模型表現;Bootstrap回測時間即改變模型的回測時間段,可能大幅增強或削弱模型表現。上述結果對研究者的啟示是在開發過程中需要密切關注訓練數據的質量,同時應避免因回測時間選擇不當而造成的誤判。

3. 在以往的量化模型開發過程中,通常將歷史回測表現視作確定性的結果,而忽略隨機性對回測結果的影響。在面臨不同量化策略的取捨之時,往往只是簡單基於策略的年化收益率、夏普比率、收益回撤比等評價指標。Bootstrap重採樣方法提供了一種刻畫隨機性的思路,使研究者能夠基於評價指標的統計分佈、而非單個統計量,對模型優劣做出相對客觀的判斷和決策。本文從方法論的角度,對結合機器學習的多因子選股框架進行反思,針對模型比較和模型評價環節提出創新式的改造,希望對本領域的投資者有所啟發。

風險提示

人工智能選股方法是對歷史投資規律的挖掘,如若未來市場投資環境發生變化,該方法則存在失效的可能。機器學習選股模型隨機性的來源多樣,本研究只考慮了有限的三種情況,存在忽略其它更重要隨機性來源的可能。Bootstrap重採樣方法是對隨機性的簡單模擬,亦存在過度簡化的可能。

免責申明

本公眾平台不是華泰證券研究所官方訂閱平台。相關觀點或信息請以華泰證券官方公眾平台為準。根據《證券期貨投資者適當性管理辦法》的相關要求,本公眾號內容僅面向華泰證券客戶中的專業投資者,請勿對本公眾號內容進行任何形式的轉發。若您並非華泰證券客戶中的專業投資者,請取消關注本公眾號,不再訂閱、接收或使用本公眾號中的內容。因本公眾號難以設置訪問權限,若給您造成不便,煩請諒解!本公眾號旨在溝通研究信息,交流研究經驗,華泰證券不因任何訂閱本公眾號的行為而將訂閱者視為華泰證券的客戶。

本公眾號研究報告有關內容摘編自已經發佈的研究報告的,若因對報告的摘編而產生歧義,應以報告發佈當日的完整內容為準。如需了解詳細內容,請具體參見華泰證券所發佈的完整版報告。

本公眾號內容基於作者認為可靠的、已公開的信息編製,但作者對該等信息的準確性及完整性不作任何保證,也不對證券價格的漲跌或市場走勢作確定性判斷。本公眾號所載的意見、評估及預測僅反映發佈當日的觀點和判斷。在不同時期,華泰證券可能會發出與本公眾號所載意見、評估及預測不一致的研究報告。

在任何情況下,本公眾號中的信息或所表述的意見均不構成對客戶私人投資建議。訂閱人不應單獨依靠本訂閱號中的信息而取代自身獨立的判斷,應自主做出投資決策並自行承擔投資風險。普通投資者若使用本資料,有可能會因缺乏解讀服務而對內容產生理解上的歧義,進而造成投資損失。對依據或者使用本公眾號內容所造成的一切後果,華泰證券及作者均不承擔任何法律責任。

本公眾號版權僅為華泰證券股份有限公司所有,未經公司書面許可,任何機構或個人不得以翻版、複製、發表、引用或再次分發他人等任何形式侵犯本公眾號發佈的所有內容的版權。如因侵權行為給華泰證券造成任何直接或間接的損失,華泰證券保留追究一切法律責任的權利。本公司具有中國證監會核准的「證券投資諮詢」業務資格,經營許可證編號為:91320000704041011J。

林曉明

執業證書編號:S0570516010001

華泰金工深度報告一覽

金融周期系列研究(資產配置)

【華泰金工林曉明團隊】二十載昔日重現,三四年周期輪迴——2019年中國與全球市場量化資產配置年度觀點(下)

【華泰金工林曉明團隊】二十載昔日重現,三四年周期輪迴——2019年中國與全球市場量化資產配置年度觀點(上)

【華泰金工林曉明團隊】周期輪動下的BL資產配置策略

【華泰金工林曉明團隊】周期理論與機器學習資產收益預測——華泰金工市場周期與資產配置研究

【華泰金工林曉明團隊】市場拐點的判斷方法

【華泰金工林曉明團隊】2018中國與全球市場的機會、風險 · 年度策略報告(上)

【華泰金工林曉明團隊】基欽周期的量化測度與歷史規律 · 華泰金工周期系列研究

【華泰金工林曉明團隊】周期三因子定價與資產配置模型(四)——華泰金工周期系列研究

【華泰金工林曉明團隊】周期三因子定價與資產配置模型(三)——華泰金工周期系列研究

【華泰金工林曉明團隊】周期三因子定價與資產配置模型(二)——華泰金工周期系列研究

【華泰金工林曉明團隊】周期三因子定價與資產配置模型(一)——華泰金工周期系列研究

【華泰金工林曉明團隊】華泰金工周期研究系列 · 基於DDM模型的板塊輪動探索

【華泰金工林曉明團隊】市場周期的量化分解

【華泰金工林曉明團隊】周期研究對大類資產的預測觀點

【華泰金工林曉明團隊】金融經濟系統周期的確定(下)——華泰金工周期系列研究

【華泰金工林曉明團隊】金融經濟系統周期的確定(上)——華泰金工周期系列研究

【華泰金工林曉明團隊】全球多市場擇時配置初探——華泰周期擇時研究系列

行業指數頻譜分析及配置模型:市場的周期分析系列之三

【華泰金工林曉明團隊】市場的頻率——市場輪迴,周期重生

【華泰金工林曉明團隊】市場的輪迴——金融市場周期與經濟周期關係初探

FOF與金融創新產品

【華泰金工】生命周期基金Glide Path開發實例——華泰FOF與金融創新產品系列研究報告之一

因子周期(因子擇時)

【華泰金工林曉明團隊】市值因子收益與經濟結構的關係——華泰因子周期研究系列之三

【華泰金工林曉明團隊】周期視角下的因子投資時鐘--華泰因子周期研究系列之二

【華泰金工林曉明團隊】因子收益率的周期性研究初探

擇時

【華泰金工林曉明團隊】華泰風險收益一致性擇時模型

【華泰金工林曉明團隊】技術指標與周期量價擇時模型的結合

【華泰金工林曉明團隊】華泰價量擇時模型——市場周期在擇時領域的應用

行業輪動

【華泰金工林曉明團隊】行業輪動系列之六:「華泰周期輪動」基金組合構建20190312

【華泰金工林曉明團隊】估值因子在行業配置中的應用——華泰行業輪動系列報告之五

【華泰金工林曉明團隊】動量增強因子在行業配置中的應用--華泰行業輪動系列報告之四

【華泰金工林曉明團隊】財務質量因子在行業配置中的應用--華泰行業輪動系列報告之三

【華泰金工林曉明團隊】周期視角下的行業輪動實證分析·華泰行業輪動系列之二

【華泰金工林曉明團隊】基於通用回歸模型的行業輪動策略 · 華泰行業輪動系列之一

Smartbeta

【華泰金工林曉明團隊】Smart Beta:乘風破浪趁此時——華泰Smart Beta系列之一

【華泰金工林曉明團隊】Smartbeta在資產配置中的優勢——華泰金工Smartbeta專題研究之一

多因子選股

【華泰金工林曉明團隊】因子合成方法實證分析 ——華泰多因子系列之十

【華泰金工林曉明團隊】華泰單因子測試之一致預期因子 ——華泰多因子系列之九

【華泰金工林曉明團隊】華泰單因子測試之財務質量因子——華泰多因子系列之八

【華泰金工林曉明團隊】華泰單因子測試之資金流向因子——華泰多因子系列之七

【華泰金工林曉明團隊】華泰單因子測試之波動率類因子——華泰多因子系列之六

【華泰金工林曉明團隊】華泰單因子測試之換手率類因子——華泰多因子系列之五

【華泰金工林曉明團隊】華泰單因子測試之動量類因子——華泰多因子系列之四

【華泰金工林曉明團隊】華泰單因子測試之成長類因子——華泰多因子系列之三

【華泰金工林曉明團隊】華泰單因子測試之估值類因子——華泰多因子系列之二

【華泰金工林曉明團隊】華泰多因子模型體系初探——華泰多因子系列之一

【華泰金工林曉明團隊】五因子模型A股實證研究

【華泰金工林曉明團隊】紅利因子的有效性研究——華泰紅利指數與紅利因子系列研究報告之二

人工智能

【華泰金工林曉明團隊】機器學習選股模型的調倉頻率實證——華泰人工智能系列之十八

【華泰金工林曉明團隊】人工智能選股之數據標註方法實證——華泰人工智能系列之十七

【華泰金工林曉明團隊】再論時序交叉驗證對抗過擬合——華泰人工智能系列之十六

【華泰金工林曉明團隊】人工智能選股之卷積神經網絡——華泰人工智能系列之十五

【華泰金工林曉明團隊】對抗過擬合:從時序交叉驗證談起

【華泰金工林曉明團隊】人工智能選股之損失函數的改進——華泰人工智能系列之十三

【華泰金工林曉明團隊】人工智能選股之特徵選擇——華泰人工智能系列之十二

【華泰金工林曉明團隊】人工智能選股之Stacking集成學習——華泰人工智能系列之十一

【華泰金工林曉明團隊】宏觀周期指標應用於隨機森林選股——華泰人工智能系列之十

【華泰金工林曉明團隊】人工智能選股之循環神經網絡——華泰人工智能系列之九

【華泰金工林曉明團隊】人工智能選股之全連接神經網絡——華泰人工智能系列之八

【華泰金工林曉明團隊】人工智能選股之Python實戰——華泰人工智能系列之七

【華泰金工林曉明團隊】人工智能選股之Boosting模型——華泰人工智能系列之六

【華泰金工林曉明團隊】人工智能選股之隨機森林模型——華泰人工智能系列之五

【華泰金工林曉明團隊】人工智能選股之樸素貝葉斯模型——華泰人工智能系列之四

【華泰金工林曉明團隊】人工智能選股之支持向量機模型— —華泰人工智能系列之三

【華泰金工林曉明團隊】人工智能選股之廣義線性模型——華泰人工智能系列之二

指數增強基金分析

【華泰金工林曉明團隊】再探回歸法測算基金持股倉位——華泰基金倉位分析專題報告

【華泰金工林曉明團隊】酌古御今:指數增強基金收益分析

【華泰金工林曉明團隊】基於回歸法的基金持股倉位測算

【華泰金工林曉明團隊】指數增強方法匯總及實例——量化多因子指數增強策略實證

基本面選股

【華泰金工林曉明團隊】華泰價值選股之相對市盈率港股模型——相對市盈率港股通模型實證研究

【華泰金工林曉明團隊】華泰價值選股之FFScore模型

【華泰金工林曉明團隊】相對市盈率選股模型A股市場實證研究

【華泰金工林曉明團隊】華泰價值選股之現金流因子研究——現金流因子選股策略實證研究

【華泰金工林曉明團隊】華泰基本面選股之低市收率模型——小費雪選股法 A 股實證研究

【華泰金工林曉明團隊】華泰基本面選股之高股息率模型之奧軒尼斯選股法A股實證研究

基金定投

【華泰金工林曉明團隊】大成旗下基金2018定投策略研究

【華泰金工林曉明團隊】布林帶與股息率擇時定投模型——基金定投系列專題研究報告之四

【華泰金工林曉明團隊】基金定投3—馬科維茨有效性檢驗

【華泰金工林曉明團隊】基金定投2—投資標的與時機的選擇方法

【華泰金工林曉明團隊】基金定投1—分析方法與理論基礎

其它

【華泰金工林曉明團隊】A股市場及行業的農曆月份效應——月份效應之二

A股市場及行業的月份效應——詳解歷史數據中的隱藏法則