<tr id="vhtpr"><code id="vhtpr"></code></tr>

    <ins id="vhtpr"></ins>
      <output id="vhtpr"><nobr id="vhtpr"></nobr></output><output id="vhtpr"></output>

      <menuitem id="vhtpr"></menuitem>

      <tr id="vhtpr"></tr>
        <tr id="vhtpr"><nobr id="vhtpr"><delect id="vhtpr"></delect></nobr></tr>
        <kbd id="vhtpr"><video id="vhtpr"></video></kbd>
      1. 北京物流信息聯盟

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

        華泰金融工程 2022-08-20 14:46:36

        摘要

        循環神經網絡選股信息比率優于線性回歸,其中LSTM模型表現最好

        ? ? ? ?神經網絡是近年來迅猛發展的人工智能的核心技術,本篇報告選取具有時間序列預測能力的循環神經網絡作為研究對象,對傳統RNN、LSTM、GRU三種循環神經網絡模型進行系統性的測試。在月頻的多因子選股方面,循環神經網絡具有出色的樣本外預測平均正確率,但是樣本外平均AUC值表現一般。神經網絡在年化超額收益率、信息比率上優于線性回歸算法,但是最大回撤普遍大于線性回歸算法。在目前測試的所有神經網絡模型中,LSTM表現最好,GRU的表現和LSTM相近。


        循環神經網絡模型具有較好的預測能力

        ? ? ? ??我們在2011-01-31 至 2017-10-31的回測區間中分7個階段訓練并測試模型,傳統RNN、LSTM以及GRU三種模型樣本外平均AUC分別為0.5410,0. 5429,0. 5576,樣本外平均正確率分別為56.85%,58.57%,57.61%??梢钥闯?,循環神經網絡具有出色的樣本外平均正確率,但是樣本外平均AUC值表現一般。

        ?

        LSTM模型超額收益和信息比率的表現優于線性回歸

          在2011-01-31 至 2017-10-31的回測區間中,對于全A選股的行業中性策略(每個行業分別選股數目為2,5,10,15,20),LSTM模型相對于中證500的超額收益在20.36%~25.05%之間,超額收益最大回撤在13.13% ~16.84%之間,信息比率在2.95~3.76之間,除了最大回撤,表現優于線性回歸??偟膩砜?,LSTM模型在年化超額收益率、信息比率上優于線性回歸算法,但是最大回撤普遍大于線性回歸算法。在目前測試的所有神經網絡模型中,LSTM表現最好。另一種循環神經網絡模型GRU的表現和LSTM相近。


        通過分析神經網絡訓練時的權值更新過程使得神經網絡具有可解釋性

          一直以來,神經網絡一類模型都在模型可解釋性上受到詬病,我們通過分析LSTM網絡訓練過程中神經元的權重更新過程以及權重值分布情況,打開了神經網絡這個“黑箱”,使得模型具有可解釋性。


        在月頻多因子選股中,神經網絡模型綜合表現不如XGBoost

        目前看來,以LSTM為代表的神經網絡在月頻的多因子選股上表現并不突出,綜合表現不如XGBoost。我們認為這是因為月頻的多因子數據量較小,并不利于神經網絡模型發揮其優勢。之后我們將嘗試在更加高頻、數據量更大的場景中繼續研究神經網絡模型。

        ????????????????????????????????????????????????????????????????????????????????

        風險提示:通過循環神經網絡模型構建選股策略面臨市場風險,是歷史經驗的總結,存在失效的可能。


        本文研究導讀

        ????????就在華泰金工人工智能選股系列報告陸續推出的過程中,全球人工智能的研究進展也一刻從未停下,從AlphaGo到Master再到AlphaGo Zero,人工智能已經在特定領域具備了戰勝人類以及戰勝自我,不斷進化的能力。日常生活中,從手寫數字的自動識別,到電腦手機上的指紋解鎖功能、語音識別系統,再到無人駕駛、智能醫療、智能投顧等熱門領域,處處都有人工智能的身影。神經網絡作為當前人工智能的核心技術,應用到多因子選股領域效果到底如何?本文挑選了具有時間序列預測能力的循環神經網絡,并將主要關注如下幾方面的問題:

        ?

        1.???? 循環神經網絡模型相比傳統神經網絡模型有何區別與聯系?循環神經網絡模型包含哪些模型,關鍵參數都有哪些?

        ?

        2.???? LSTM網絡和GRU網絡相比傳統RNN的優勢在哪里?

        ?

        3.???? 循環神經網絡模型如何構建,參數如何選取,如何解釋模型的訓練過程?

        ?

        4.???? 最后是組合構建的問題。在衡量過不同模型的表現之后,應如何利用模型的預測結果構建策略組合進行回測?全部A股票池內選股效果(超額收益、最大回撤、信息比率等)的異同是什么?

        ?

        我們將圍繞以上問題進行系統性的測試,希望為讀者提供一些扎實的證據,并尋找到有效的分類方法,能夠對本領域的投資者產生參考價值。


        循環神經網絡簡介


          當我們對新事物進行思考時,其實并不每次都是從零開始,過往的經驗總會給我們一些啟發。對于一段連續的語音、一篇連續的文章,我們可以根據句子的開頭去猜測結尾,但傳統的神經網絡卻很難做到這一點。循環神經網絡(Recurrent Neural Networks)正是處理這一系列問題的專家。RNN的前身是1982年由John Hopfield 提出的Hopfield模型,由于實現困難外加沒有合適的應用領域,一直沒有得到學界重視,近年來由于自然語言處理的需求,RNN得以深度發展。


        循環神經網絡與傳統神經網絡(ANN)的區別

        ????????循環神經網絡與傳統神經網絡模型最大不同之處是加入了對時序數據的處理。以股票多因子為例,ANN將某支股票某一時間截面的因子數據作為輸入值,下期超額收益作為輸出值;而RNN是將某支股票的長期因子數據作為時間序列,取過去一段時間內的數據作為輸入值。這樣做最大的好處便是保持了信息的持久化,這和我們的直觀感受也是相符的,正如古希臘哲學家修昔底德所說的一樣,“歷史會重演”。

        循環神經網絡RNN

        RNN概述

        顧名思義,RNN是包含循環的網絡,如圖表1左側所示,神經網絡的模塊正在讀取某個輸入x,并輸出一個值o,循環可以使得信息從當前步傳遞到下一步。從表面看,這樣的網絡結構較難理解,因此將其展開為圖表1右側。對于從序列索引1到T的時間序列數據,如果關注t時刻附近的網絡結構, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 代表了在序列索引號t時刻訓練樣本的輸入,同理和代表了在序列索引號t-1時刻和t+1時刻訓練樣本的輸入;代表在t時刻模型的隱藏狀態,與ANN不同的是,不僅由決定,也受到的影響;代表在t時刻模型的輸出,只由模型當前的隱藏狀態決定;是t時刻樣本序列的真實值;是t時刻模型的損失函數,通過和計算得出;U、V、W這三個矩陣是模型的參數,它們在整個模型中是共享的,這和傳統的ANN模型不太一樣,同時也體現了RNN模型循環反饋的思想。



        RNN的使用形式

        ????????使用RNN時的主要形式有4種,如圖表2所示。

        1.????? Many to many,每一個輸入都有相對應的輸出,例如給視頻的每一幀貼標簽;

        2.????? Many to one,整個序列只有一個輸出,例如文本的情感分析;

        3.????? One to many,通過一個輸入產生一個序列,例如給一張圖片加上一串解說詞;

        4.????? Many to many,并不一一對應,典型應用是翻譯領域。

        ?

        ????????本文的目的是希望通過RNN模型來對股票進行分類,因此選用Many to one這種形式。



        RNN分類算法基本步驟

        我們先關注RNN的前向傳播算法,對于任意t時刻,隱藏狀態ht可由xt和xt-1得到

        ? ? ? ? 其中,? ?σ為RNN的激活函數,此處一般為tanh,b為線性關系的偏倚。模型的輸出的表達式比較簡單


        最終,t時刻的預測輸出為

        ? ? ? ? 注意由于我們的RNN是分類模型,所以此處的激活函數一般是softmax。

        ????????有了前向傳播算法的基礎,下面進行反向傳播算法的推導。與傳統神經網絡模型一致,RNN也是通過梯度下降的方法來尋找U、V、W這三個參數的最優解,此處我們考慮較復雜的Many to Many形式,損失函數暫定為對數損失函數,由于序列的每個位置都有損失函數,因此最終損失為

        ????????其中,V、c的梯度計算比較簡單

        ????????由于t時刻的梯度損失為當前位置輸出對應的梯度損失和t+1時刻的梯度損失兩部分之和,我們定義t時刻隱藏狀態的梯度為


        ? ? ? ? 再根據δt求得W、U、b的梯度表達式

        ????????接下來的步驟與ANN類似,初始化權值,迭代更新權值至小于閾值或超出預定次數為止,在此就不再贅述了。需要注意的是,本文所涉及的股票分類問題屬于上文所述的RNN使用形式2(Many to one),梯度表達式實際與ANN并無區別,本部分所做推導只是RNN的一般形式。


        RNN主要參數

        ????????圖表3中列出了RNN的主要參數,參數分兩大類,一類是神經單元參數,一類是訓練模型參數。


        RNN存在的問題

        ? ? ??相對于傳統ANN,深度神經網絡的頭號問題就是梯度消失,RNN作為模型復雜度較高的神經網絡模型,使得問題更加棘手,本文從兩個角度展開探討。

        ?

        1.???? 具體表現

        ????????通過下面這個例子我們可以看出,RNN作為專門處理信息持久化的一種模型,也會遇到從長期記憶退化到短期記憶的窘境,嘗試處理下面這段文字:

        小明是小剛的朋友。小明今年15歲,小剛今年25歲。小明是一名學生,認真刻苦,成績優異,小剛是一名教師,盡心盡力,誨人不倦。小明借給小剛五元錢,小明是小剛的______?

        ?

        2.???? 數學推導

        ????????Yoshua Bengio在1994年給出了RNN梯度消失的數學解釋.在每個時刻,RNN的隱層輸出可以表示為:

        ????????在反向傳播時, 我們需要將RNN沿時間維度展開, 隱層梯度在沿時間維度反向傳播時需要反復乘以系數,因此,盡管理論上RNN可以捕獲長距離依賴,但實際應用中,由于譜半徑(spectral radius)的不同,RNN將會面臨兩個挑戰:梯度爆炸(gradient explosion)和梯度消失(vanishing gradient)。梯度爆炸會影響訓練的收斂,甚至導致網絡不收斂;而梯度消失會使梯度趨向于0,導致模型收斂速度非常慢,網絡學習長距離依賴的難度增加。這兩者相比,梯度爆炸相對比較好處理,可以用梯度裁剪(gradient clipping)來解決,而如何緩解梯度消失是RNN及幾乎其他所有深度學習方法研究的關鍵所在。



        長短期記憶網絡LSTM

        LSTM概述

        傳統RNN模型容易產生梯度消失的問題,難以處理長序列的數據。而造成梯度消失的原因,本質上是因為隱藏層狀態??的計算方式導致梯度被表示為連乘積的形式,因此Hochreater和Schmidhuber在1997年提出了長短期記憶網絡LSTM,通過精心設計的隱藏層神經元緩解了傳統RNN的梯度消失問題。

        ?

        LSTM與RNN的區別

        ????????在RNN 模型中,在每個序列索引位置都有一個隱藏狀態??,如果我們略去每層都有的??,??和 ??,那么模型可以簡化為如圖表4 的形式,通過線條指示的路徑可以清晰地看出隱藏狀態??由???1和??共同決定。??將一方面用于計算當前層模型的損失,另一方面用于計算下一層的??+1。



        ????????與RNN不同的是,LSTM被設計擁有了更為精巧的隱藏狀態網絡模型結構,如圖表5,可以看到對比RNN較為簡單的結構,LSTM要復雜的多,為了能夠清晰的表達出LSTM設計的獨到之處,我們將對其隱藏狀態結構進行分析。



        LSTM隱藏狀態結構

        ????????LSTM 模型中,每個序列索引位置t 時刻被向前傳播的,除了和RNN 一樣的隱藏狀態??,還多了另一個隱藏狀態,如圖表6 中的標黑橫線。這個隱藏狀態被我們稱為細胞狀態??(Cell State),??在LSTM 中實質上起到了RNN 中隱層狀態??的作用。除了細胞狀態,圖中還有其他許多結構,這些結構一般稱之為門控結構(Gate)。LSTM 模型在每個序列索引位置t 的門控結構一般包括遺忘門,輸入門和輸出門三種,下面我們將對門控結構和細胞狀態一一分析。



        ????????圖表7 是LSTM 模型的遺忘門部分,遺忘門負責以一定的概率控制是否遺忘上一層的隱藏細胞狀態,數學表達式為:

        ? ? ? ???為sigmoid 激活函數。由于??的值在[0,1]之間,因此代表了遺忘上一層細胞狀態的概率。語言模型角度看,當遇到新的主語??并希望對下一個詞進行預測時,我們希望能夠忘記舊主語???1的一些特征。



        ????????圖表8 是LSTM模型的輸入門部分,輸入門負責控制是否將當前時刻輸入??融入細胞狀態,數學表達式為:

        ? ? ? ? ?為sigmoid 激活函數。由于??的值在[0,1]之間,因此代表了記住這一層輸入信息的概率。通過??和????兩者相乘獲得當前細胞狀態需要添加的信息。從語言模型角度看,即當遇到新主語??時,我們希望在細胞狀態????中添加新主語??的屬性信息。


        ????????圖表9 是LSTM 模型的細胞狀態更新部分,在研究輸出門之前,我們先關注細胞狀態是如何更新的。遺忘門和輸入門的結果都會作用于當前細胞狀態??,數學表達式為:

        ?????????是矩陣的Hadamard 積(兩個矩陣相同位置元素的乘積)。新狀態即為舊狀態乘以需要忘記的概率,加上新的候選值乘以需要更新的比率。從語言模型角度看,這里就是我們實際丟棄舊主語屬性信息,并根據之前步驟添加新信息的地方。


        ????????圖表10 是LSTM 模型的輸出門部分,輸出門是對當前細胞狀態的過濾,目的是從細胞狀態??產生隱藏狀態??,數學表達式為:

        ?????????為sigmoid 激活函數。由于??的值在[0,1]之間,決定了細胞狀態中哪些部分需要輸出。然后將細胞狀態輸入到tanh 函數中,乘以輸出門限值,最終只輸出我們想要輸出的那部分。從語言模型角度看,模型可能輸出主語的單復數信息,那么我們就能確定到底是“他”還是“他們”。



        LSTM如何緩解梯度消失問題

        ????????為了方便分析,我們把上一節中介紹LSTM隱藏狀態結構的所有公式都羅列如下:

        ????????聯立上面的式子可得:

        ? ??

        ????????由以上兩式可以看出,??不僅要由???1計算得到,還要由??計算得到,??的計算本身不依賴于系數??,當遺忘門??被打開時,??的梯度可以有效地反向傳遞給???1。而系數??正是造成傳統RNN 模型梯度消失的根源所在,所以通過引入另一個隱藏狀態??和3 個門控結

        構,LSTM 緩解了神經網絡訓練中的梯度消失問題。



        門控循環單元GRU

        ????????門控循環單元(Gated Recurrent Units)由 Cho 在2014 年提出,是LSTM 模型的一類常見變種。與LSTM 不同的是,GRU 將遺忘門和輸入門合成為單一的更新門。如圖表11,GRU將輸入門??和遺忘門??融合成單一的更新門??,并且融合了細胞狀態??和隱藏狀態??。

        ?



        GRU 隱藏狀態結構

        ????????圖表11 中??是GRU 模型的重置門部分,用于控制前一時刻隱藏狀態???1對當前狀態的影響。若???1不重要,從語言模型角度看,即從當前開始表達新的意思,與上文無關,則重置門關閉,數學表達式為:


        ? ? ? ? 圖表11 中??是GRU 模型的更新門部分,用于決定是否忽略當前輸入??,類似LSTM 中的輸入門??。從語言模型角度看,即判斷當前詞??對整體意思的表達是否重要,數學表達式為:


        ????????定義完GRU 的重置門和更新門之后,我們再來看GRU 的細胞更新。當更新門打開時,??由???1和??決定;當更新門被關閉時,??將僅由???1決定,幫助梯度反向傳播,與LSTM相同,這種機制有效地緩解了梯度消失現象。數學表達式為:


        GRU對比LSTM

        Greff在2015年比較了LSTM常見的變種,發現它們的學習效果相差無幾;GRU的主要優勢在于其構造簡單,相比LSTM減少了一個門控結構,少了很多矩陣乘法運算,因此在訓練數據量很大的情況下,GRU相比LSTM能節省很多時間。


        循環神經網絡模型測試流程


        測試流程


        ????????本文將要測試的循環神經網絡模型有3種:傳統RNN,LSTM,GRU,為了保證三種模型的一致性和可比性,對它們采用完全相同的測試流程。循環神經網絡模型的構建方法包含下列步驟:

        1.? 數據獲?。?/p>

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

        b)?????? 回測區間:2011-01-31 至 2017-10-31。分7個階段回測,如圖表14所示。

        2.? 特征和標簽提?。好總€自然月的最后一個交易日,計算之前報告里的70個因子暴露度,作為樣本的原始特征;計算下一整個自然月的個股超額收益(以滬深300指數為基準),作為樣本的標簽。因子池如圖表13所示。

        3.? 特征預處理:

        a)?????? 中位數去極值:設第T期某因子在所有個股上的暴露度序列為 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,為該序列中位數,為序列的中位數,則將序列中所有大于的數重設為,將序列中所有小于的數重設為;

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

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

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

        4.? 訓練集和交叉驗證集的合成:在每個月末截面期,選取下月收益排名前30%的股票作為正例(),后30%的股票作為負例()。將訓練樣本合并,隨機選取90%的樣本作為訓練集,余下10%的樣本作為交叉驗證集。

        5.? 樣本內訓練:使用RNN模型對訓練集進行訓練,考慮到我們將回測區間按年份劃分為7個子區間,因此需要對每個子回測的不同訓練集重復訓練。

        6.? 交叉驗證調參:模型訓練過程中,觀察交叉驗證集loss的變化,當交叉驗證集的loss在連續10輪迭代后都沒有提升時,停止模型訓練。選取交叉驗證集loss最低的一組參數作為模型的最優參數。

        7.? 樣本外測試:確定最優參數后,以T月月末截面期所有樣本預處理后的特征作為模型的輸入,得到每個樣本的預測值,將預測值視作合成后的因子。進行單因子分層回測?;販y方法和之前的單因子測試報告相同,具體步驟參考下一小節。

        8.? 模型評價:我們以分層回測的結果作為模型評價指標。我們還將給出測試集的正確率、AUC等衡量模型性能的指標。



        循環神經網絡參數選擇和網絡結構

        ????????LSTM緩解了傳統RNN的梯度消失問題,近年來在文本分析、時間序列預測方面有廣泛的用途。因此本文以LSTM模型為例,對模型的參數選擇和測試結果進行說明,其他模型與之類似。

        ?

        ????????由于神經網絡模型訓練緩慢且參數眾多,難以借助本系列之前報告中所提到的網格搜索進行參數尋優。因此LSTM的參數設置中加入了一些經驗選擇的方法。具體參數選擇如下:

        1.?????? 輸入維度(input_shape):70,對應70個因子。

        2.?????? 輸出維度(units):2,對應二分類。

        3.?????? 輸入序列數目(time_steps):5。這是循環神經網絡獨有的參數,即預測當前時點輸出所使用的歷史輸入序列數目。在月頻的多因子選股中,該參數太大會使得滿足要求的樣本太少(因為股票停牌造成因子缺失),太小又難以發揮循環神經網絡的特性,因此設定為5,即預測下個月股票的漲跌使用過去5個月的因子為輸入。

        4.?????? 隱藏層數:2層。在測試中,我們發現1層隱藏層的LSTM預測能力有限,而2層以上的LSTM具有了不錯的預測能力,因此把隱藏層數目定為2層,這兼顧了模型的預測能力和低復雜度。

        5.?????? 隱藏層神經元數(units):每層都為100個??紤]到因子數目為70個,選擇100個隱藏層神經元數顧了模型的預測能力和低復雜度。

        6.?????? 隨機斷開輸入神經元比率(dropout):0.2。該參數主要用來避免過擬合。

        7.?????? 初始化權值方法(kernel_initializer):RandomUniform。使用正態分布初始化權值。

        8.?????? 神經元激活函數(activation):tanh。這是LSTM中最常用的激活函數。

        9.?????? 單個訓練批次樣本數(batch_size):1000。

        10.??? 優化器(optimizer):RMSProp。該優化函數相比隨機梯度下降(SGD)收斂速度快很多,可以大大節省訓練時間。

        11.??? 學習速率(learning_rate):0.001。該速率兼顧了收斂速度和收斂穩定性。

        12.??? 損失函數(loss function):categorical_crossentropy。該損失函數適合二分類情景。

        ?

        ????????在設置了以上參數后,LSTM網絡的結構如圖15所示??梢钥吹?,該模型的輸入是一個5*70的向量,兩個LSTM隱藏層都有100個神經元,每個隱藏層之后都有一次dropout,最后通過一個全連接層(Dense)輸出,輸出維度是2,對應二分類。Num代表輸入模型的樣本數量。




        循環神經網絡模型測試結果

        循環神經網絡正確率與AUC分析

        ????????圖16和圖17展示了LSTM、GRU、傳統RNN每一期樣本外的正確率和AUC值隨時間的變化情況。我們在2011-01-31 至 2017-10-31 的回測區間中分7 個階段訓練并測試模

        型,三種模型樣本外平均AUC分別為0.5429,0.5576,0.5410,樣本外平均正確率分別為58.57%,57.61%,56.85%。


        ????????圖表18和圖表19展示了LSTM模型訓練過程中訓練集和驗證集正確率和loss的變化情況,可以看到,當迭代次數超過1000次以后,驗證集的正確率和loss不再變得更優,LSTM模型可以停止訓練了。



        LSTM模型訓練過程分析

        ????????一直以來,神經網絡一類模型都在模型可解釋性上受到詬病,模型結構的復雜使人們對于模型的分析難以下手,人們普遍認為神經網絡是一個黑箱。但是實際上隨著實現工具的完善,分析神經網絡的內部結構逐漸變得可行,我們借助Python Keras包中相關功能,初步對LSTM模型訓練過程進行了分析。

        ?

        ? ? ? ?為了讓讀者能夠更好地理解LSTM 模型的迭代優化過程,我們在這里以模型權重為例展開討論。第一層LSTM 有四類權重矩陣,包括輸入部分、遺忘部分、細胞狀態部分以及輸出部分,為了能直觀的展示權重變化的過程,我們截取第一層LSTM 連接當前輸入??和當前狀態??的輸入部分權重,即上文中的??。圖表20 是In_capital 因子所對應的權重,由于全部顯示In_capital 因子連接的100 個隱藏狀態需要的空間較大,因此我們截取了前15 個隱藏狀態。圖中縱坐標為迭代次數,數值為當前權重值,可以看到隨著迭代的加深,部分權重值的漸變過程很明顯(例如第1、3、4、7、15 列),即這部分權重被訓練的越來越好,對預測下期收益率的重要性越來越大。



        ????????圖表21是assetturnover_ttm因子對應的權重變化過程,可以看到隨著迭代的進行,權重值的漸變過程并不明顯,即模型誤差的反向傳播并沒有對這部分參數進行過多的修正,代表著assetturnover_ttm因子可能對下月收益率的解釋性弱于In_capital因子。


        ????????圖表22是對LSTM第一層參數總體的描述,橫坐標代表權重值,縱坐標為迭代次數,可以發現迭代越深,參數總體描述曲線越扁平,參數分布的范圍越廣;即隨著模型的訓練,各參數的權重被區分得越來越好。


        ????????第二層LSTM的100個神經元與第一層的100個神經元相連接,為了直觀顯示變化過程,我們選取第二層LSTM的第一個神經元連接的權重值。圖表23是其與第一層前15個神經元對應的權重值,可以看到部分列的顏色漸變比較明顯,這說明模型的訓練是有效的。

        ????????與第一層類似,圖表24是對第二層LSTM參數總體的描述,隨著模型的訓練,各參數被區分得越來越好。


        LSTM模型分層回測分析

        ????????循環神經網絡模型,最終在每個月底可以產生對全部個股下月上漲或下跌的預測值。因此可以將其看作一個因子合成模型,即在每個月底將因子池中所有因子合成為一個“因子”。接下來,我們對該模型合成的這個“因子”(即個股下期收益預測值)進行分層回測,從各方面考察該模型的效果。仿照華泰單因子測試系列報告中的思路,分層回測模型構建方法如下:

        ?

        1.????? 股票池:全A股,剔除ST股票,剔除每個截面期下一交易日停牌的股票,剔除上市3個月以內的股票。

        2.????? 回測區間:2011-01-31至2017-10-31(按年度分為7個子區間)。

        3.????? 換倉期:在每個自然月最后一個交易日核算因子值,在下個自然月首個交易日按當日收盤價換倉。

        4.????? 數據處理方法:將LSTM模型的預測值視作單因子,因子值為空的股票不參與分層。

        5.????? 分層方法:在每個一級行業內部對所有個股按因子大小進行排序,每個行業內均分成N個分層組合。如圖表25所示,黃色方塊代表各行業內個股初始權重,可以相等也可以不等(我們直接取相等權重進行測試),分層具體操作方法為N等分行業內個股權重累加值,例如圖示行業1中,5只個股初始權重相等(不妨設每只個股權重為0.2),假設我們欲分成3層,則分層組合1在權重累加值1/3處截斷,即分層組合1包含個股1和個股2,它們的權重配比為0.2:(1/3-0.2)=3:2,同樣推理,分層組合2包含個股2、3、4,配比為(0.4-1/3):0.2:(2/3-0.6)=1:3:1,分層組合4包含個股4、5,配比為2:3。以上方法是用來計算各個一級行業內部個股權重配比的,行業間權重配比與基準組合(我們使用滬深300)相同,也即行業中性。

        6.????? 評價方法:回測年化收益率、夏普比率、信息比率、最大回撤、勝率等。

        ????????這里我們將展示LSTM模型的分層測試結果。

        ?

        ????????下圖是分五層組合回測績效分析表(20110131~20171031)。其中組合1~組合5為

        按LSTM 模型打分從大到小排序構造的行業中性的分層組合?;鶞式M合為行業中性的等權組合,具體來說就是將組合1~組合5合并,一級行業內部個股等權配置,行業權重按當期滬深300行業權重配置。多空組合是在假設所有個股可以賣空的基礎上,每月調倉時買入組合1,賣空組合5?;販y模型在每個自然月最后一個交易日核算因子值,在下個自然月首個交易日按當日收盤價調倉。


        ????????下面四個圖依次為:

        1.? ? ? 分五層組合回測凈值圖。按前面說明的回測方法計算組合1~組合5、基準組合的凈值,與滬深300、中證500凈值對比作圖。

        2.? ? ? 分五層組合回測,用組合1~組合5的凈值除以基準組合凈值的示意圖??梢愿逦卣故靖鲗咏M合在不同時期的效果。

        3.? ? ? 組合1相對滬深300月超額收益分布直方圖。該直方圖以[-0.5%,0.5%]為中心區間,向正負無窮方向保持組距為1%延伸,在正負兩個方向上均延伸到最后一個頻數不為零的組為止(即維持組距一致,組數是根據樣本情況自適應調整的)。

        4.? ? ?分五層時的多空組合收益圖。再重復一下,多空組合是買入組合1、賣空組合5(月度調倉)的一個資產組合。多空組合收益率是由組合1的凈值除以組合5的凈值近似核算的。


        ????????下圖為分十層組合回測時,各層組合在不同年份間的收益率及排名表。每個單元格的內容為在指定年度某層組合的收益率(均為整年收益率),以及某層組合在全部十層組合中的收益率排名。最后一列是分層組合在2011~2017的排名的均值。


        ????????下圖是不同市值區間分層組合回測績效指標對比圖(分十層)。我們將全市場股票按市值排名前1/3,1/3~2/3,后1/3分成三個大類,在這三類股票中分別進行分層測試,基準組合構成方法同前面所述(注意每個大類對應的基準組合并不相同)。


        ????????下圖是不同行業間分層組合回測績效分析表(分五層)。我們在不同一級行業內部都做了分層測試,基準組合為各行業內該因子非空值的個股等權組合(注意每個行業對應的基準組合并不相同)。




        循環神經網絡選股指標比較

        ????????我們比較了傳統RNN、LSTM、GRU三種不同模型。并設置統一對照組:7階段線性回歸模型。

        ?

        ????????我們構建了全A選股策略并進行回測,各項指標詳見圖表34和圖表35。選股策略分為兩類:一類是行業中性策略,策略組合的行業配置與基準(滬深300、中證500、中證全指)保持一致,各一級行業中選N個股票等權配置(N=2,5,10,15,20);另一類是個股等權策略,直接在票池內不區分行業選N個股票等權配置(N=20,50,100,150,200),比較基準取為300等權、500等權、中證全指指數。三類策略均為月頻調倉,個股入選順序為它們在被測模型中的當月的預測值順序。

        ?

        ????????從圖表34和圖表35中可以看出,對于行業中性和個股等權的全A選股,LSTM模型和GRU模型在年化超額收益率、信息比率整體上優于其他模型,但是最大回撤要大于線性回歸模型。

        ?

        ????????我們沒有構建滬深300和中證500成分內選股策略,這是因為神經網絡模型適合于數據量較大的場景,而滬深300和中證500成分股組成的月頻多因子數據偏少,不適合應用在神經網絡模型中。


        LSTM選股策略詳細分析

        ????????下面我們對策略組合的詳細回測情況加以展示。因為篇幅有限,我們根據上面的比較測試結果,選擇展示LSTM模型選股策略。下圖中,我們展示了全A選股(基準:中證500)策略的各種詳細評價指標。

        ?

        ????????觀察下面的圖表可知,對于LSTM模型的行業中性策略來說,隨著每個行業入選個股數目增多,年化收益率在下降、信息比率和Calmar比率先升后降,最優每個行業入選個股數目在14個左右。


        我們有選擇性地展示LSTM和線性回歸的月度超額收益對比圖:


        各種循環神經網絡策略詳細分析

        為了方便比較,我們在圖表38和圖表39中比較了傳統RNN、LSTM、GRU的月度超額收益,我們同時加入了XGBoost、ANN和線性回歸進行比較。從圖表38和圖表39中可以看出,在行業中性的全A選股方面,XGBoost在年化收益率、信息比率和Calmer比率都表現最好。LSTM和GRU相比其他神經網絡模型在年化收益率、信息比率上有一定的優勢。


        總結和展望



        ????????以上我們對包括傳統RNN、LSTM以及GRU在內的三種循環神經網絡模型進行了系統的測試,并且利用三種方法構建了全A選股策略,初步得到以下幾個結論:

        ?

        一、我們在2011-01-31 至 2017-10-31的回測區間中分7個階段訓練并測試模型,傳統RNN、LSTM以及GRU三種模型樣本外平均AUC分別為0.5410,0. 5429,0. 5576,樣本外平均正確率分別為56.85%,58.57%,57.61%??梢钥闯?,循環神經網絡具有出色的樣本外平均正確率,但是樣本外平均AUC值表現一般。

        ?

        二、我們以全A股為股票池,利用循環神經網絡構建選股策略。在2011-01-31 至 2017-10-31的回測區間中,對于全A選股的行業中性策略(每個行業分別選股數目為2,5,10,15,20),LSTM模型相對于中證500的超額收益在20.36%~25.05%之間,超額收益最大回撤在13.13%~16.84%之間,信息比率在2.95~3.76之間,除了最大回撤,表現優于線性回歸??偟膩砜?,LSTM模型在年化超額收益率、信息比率上優于線性回歸算法,但是最大回撤普遍大于線性回歸算法。在目前測試的所有神經網絡模型中,LSTM表現最好,GRU與之相近,但是LSTM在全A選股的表現仍然不如XGBoost。

        ?

        三、循環神經網絡的參數較多,且模型訓練速度緩慢,調參較為困難,需要人工輔助確定參數。我們通過分析LSTM網絡訓練過程中神經元的權重更新過程,打開了神經網絡這個“黑箱”,使得模型具有可解釋性。

        ?

        四、目前看來,以LSTM為代表的神經網絡在月頻的多因子選股上表現并不突出。我們認為這是因為月頻的多因子數據量較小,并不利于神經網絡模型發揮其優勢。之后我們將嘗試在更加高頻、數據量更大的場景中繼續研究神經網絡模型。

        ?

        ????????通過以上的測試和討論,我們初步理解了循環神經網絡模型應用于月頻多因子選股的一些規律。接下來我們的人工智能系列研究將進一步研究各種人工智能算法的特性,尋找它們最適合的應用場景,敬請期待。


        風險提示

        ????????????

        ????????風險提示:通過循環神經網絡模型構建選股策略面臨市場風險,是歷史經驗的總結,存在失效的可能。

        ?


        免責聲明




        本報告僅供華泰證券股份有限公司(以下簡稱“本公司”)客戶使用。本公司不因接收人收到本報告而視其為客戶。


        ????????本報告基于本公司認為可靠的、已公開的信息編制,但本公司對該等信息的準確性及完整性不作任何保證。本報告所載的意見、評估及預測僅反映報告發布當日的觀點和判斷。在不同時期,本公司可能會發出與本報告所載意見、評估及預測不一致的研究報告。同時,本報告所指的證券或投資標的的價格、價值及投資收入可能會波動。本公司不保證本報告所含信息保持在最新狀態。本公司對本報告所含信息可在不發出通知的情形下做出修改,投資者應當自行關注相應的更新或修改。


        ????????本公司力求報告內容客觀、公正,但本報告所載的觀點、結論和建議僅供參考,不構成所述證券的買賣出價或征價。該等觀點、建議并未考慮到個別投資者的具體投資目的、財務狀況以及特定需求,在任何時候均不構成對客戶私人投資建議。投資者應當充分考慮自身特定狀況,并完整理解和使用本報告內容,不應視本報告為做出投資決策的唯一因素。對依據或者使用本報告所造成的一切后果,本公司及作者均不承擔任何法律責任。任何形式的分享證券投資收益或者分擔證券投資損失的書面或口頭承諾均為無效。

        ????????

        ????? ?本公司及作者在自身所知情的范圍內,與本報告所指的證券或投資標的不存在法律禁止的利害關系。在法律許可的情況下,本公司及其所屬關聯機構可能會持有報告中提到的公司所發行的證券頭寸并進行交易,也可能為之提供或者爭取提供投資銀行、財務顧問或者金融產品等相關服務。本公司的資產管理部門、自營部門以及其他投資業務部門可能獨立做出與本報告中的意見或建議不一致的投資決策。


        ????? ?本報告版權僅為本公司所有。未經本公司書面許可,任何機構或個人不得以翻版、復制、發表、引用或再次分發他人等任何形式侵犯本公司版權。如征得本公司同意進行引用、刊發的,需在允許的范圍內使用,并注明出處為“華泰證券研究所”,且不得對本報告進行任何有悖原意的引用、刪節和修改。本公司保留追究相關責任的權力。所有本報告中使用的商標、服務標記及標記均為本公司的商標、服務標記及標記。


        ????????本公司具有中國證監會核準的“證券投資咨詢”業務資格,經營許可證編號為:Z23032000。

        全資子公司華泰金融控股(香港)有限公司具有香港證監會核準的“就證券提供意見”業務資格,經營許可證編號為:AOK809

        ?????????版權所有2017年華泰證券股份有限公司

        林曉明

        執業證書編號:S0570516010001



        友情鏈接