張亞飛,王 晶,趙耀帥,武志昊,林友芳
(1.北京交通大學(xué) 計算機(jī)與信息技術(shù)學(xué)院,北京 100044;2.交通數(shù)據(jù)分析與挖掘北京市重點實驗室(北京交通大學(xué)),北京 100044;3.中國民用航空局 民航旅客服務(wù)智能化應(yīng)用技術(shù)重點實驗室,北京 101318;4.中國民航信息網(wǎng)絡(luò)股份有限公司,北京 101318)
股票市場是最大的金融市場之一,根據(jù)國家統(tǒng)計局最新統(tǒng)計數(shù)據(jù)顯示,截止到2020 年,境內(nèi)的上市公司已發(fā)展到了4 154 家,股票市價總值也達(dá)到了79.6 萬億元。并且,根據(jù)世界銀行最新的數(shù)據(jù)顯示,截止到2019 年,全球股票市值也已超過61.1 萬億美元。由于股票市場巨大的經(jīng)濟(jì)效益,預(yù)測股票市場的未來狀況一直是股市參與者最感興趣的事情之一。目前,針對股票的預(yù)測主要集中在股票的價格趨勢預(yù)測,即根據(jù)以股票價格特征為主的金融時間序列,預(yù)測股票價格是否會上漲/下跌,或者價格變化是否會超過一個閾值。
傳統(tǒng)的股票價格趨勢預(yù)測方法主要基于基本面分析(Fundamental Analysis,F(xiàn)A)、技術(shù)分析(Technical Analysis,TA)[1]和一些計量經(jīng)濟(jì)學(xué)模型,比如整合移動平均自回歸模型(AutoRegressive Integrated Moving Average model,ARIMA model)[2]、廣義自回歸條件異方差(Generalized Auto Regressive Conditional Heteroskedasticity,GARCH)模型[3]等。然而,這些方法要么要求投資者具有堅實的金融學(xué)基礎(chǔ)理論,要么僅能捕獲金融時間序列的簡單模式,且不適合處理非線性數(shù)據(jù),導(dǎo)致傳統(tǒng)方法在實際應(yīng)用中具有諸多限制。近年來,隨著人工智能技術(shù)的崛起和計算機(jī)性能的提升,深度學(xué)習(xí)模型在解決非線性問題方面表現(xiàn)出了強(qiáng)大的能力,其強(qiáng)大的特征自動學(xué)習(xí)能力也大幅降低了研究人員的研究門檻,在金融預(yù)測領(lǐng)域顯示出了廣闊的研究前景,越來越受到研究人員的青睞。
然而,股票價格的變動具有較強(qiáng)的波動性和非平穩(wěn)性,這給深度學(xué)習(xí)模型的泛化性能帶來了巨大的挑戰(zhàn)。有效市場假說理論指出,股票價格反映的是市場上存在的信息。由于股票市場結(jié)構(gòu)復(fù)雜,信息來源多樣,包括社會輿論情緒、公共新聞、國家政策、企業(yè)財務(wù)業(yè)績、行業(yè)信息[4-6]等,它們都會對股票的價格產(chǎn)生影響?;陟o態(tài)價格特征訓(xùn)練的模型很容易對這種復(fù)雜的波動性數(shù)據(jù)產(chǎn)生過擬合,從而降低模型的泛化性能。這也是股票價格預(yù)測一直以來面對的一大難題。不過,相對于單只股票價格來說,市場的宏觀趨勢則穩(wěn)定很多,如果能夠準(zhǔn)確地捕捉并結(jié)合市場的宏觀環(huán)境信息進(jìn)行預(yù)測,將有助于減輕股票波動性帶來的影響[7]。
除此之外,單一股票的價格變動,往往還和其他股票緊密相關(guān)[8-9]。比如,同一行業(yè)中的股票往往具有相似的變化趨勢,并且會產(chǎn)生一定的超前-滯后效應(yīng)(Lead-leg Effect)[4];不同行業(yè)的股票在同一個社會熱點事件的影響下,也可能會產(chǎn)生截然不同的變化趨勢[10-11]。因此,在進(jìn)行股票價格趨勢預(yù)測時,除了需要考慮股票自身的過往表現(xiàn)以外,還應(yīng)當(dāng)綜合考慮股票與股票、股票與行業(yè)、行業(yè)與行業(yè)之間多層次的相互影響,并且這些相互影響還會隨著時間動態(tài)變化。而現(xiàn)有的研究往往把每只股票當(dāng)作一個獨立的個體[12-14],或者根據(jù)簡單的先驗知識構(gòu)建起股票間的靜態(tài)關(guān)系[15-16],缺少對市場影響的層次性和動態(tài)性的考量。
本文提出了一種動態(tài)宏觀記憶網(wǎng)絡(luò)(Dynamic Macro Memory Network,DMMN),并基于DMMN 同時對多只股票進(jìn)行價格趨勢預(yù)測。該方法利用股票的行業(yè)信息動態(tài)地從全部股票中提取出不同層次的宏觀環(huán)境信息,然后將它們?nèi)谌朊恳粋€股票中,在動態(tài)層次性宏觀信息的輔助下減少單一股票價格波動性帶來的影響,從而提升模型的性能。本文的主要工作如下:
1)提出一種融合股票微觀特征信息和市場宏觀環(huán)境信息的記憶網(wǎng)絡(luò)架構(gòu)DMMN。這種網(wǎng)絡(luò)架構(gòu)既可以捕獲單只股票的變化趨勢,又能捕獲市場的宏觀變化趨勢,并在單只股票的表示中融入市場的宏觀環(huán)境信息,減少股票價格波動性帶來的影響。
2)提出一種分層多尺度的市場宏觀環(huán)境表示構(gòu)建方法。本文按照“股票-行業(yè)-市場”的層次來構(gòu)建市場的宏觀信息。首先考慮同一行業(yè)內(nèi)的所有股票,對每一個行業(yè)生成一個行業(yè)表示來代表市場的局部環(huán)境信息;然后考慮全市場內(nèi)所有的行業(yè),生成市場宏觀環(huán)境表示,用來表示全市場的宏觀信息。通過分層的結(jié)構(gòu),在捕獲全市場宏觀信息的同時,增強(qiáng)了模型的局部感知能力。
3)引入動態(tài)注意力機(jī)制,在每一個時間步根據(jù)捕獲到的趨勢性信息計算行業(yè)內(nèi)每只股票對生成行業(yè)表示的貢獻(xiàn)度,以此確保在每一個時間步都能融入最有價值的信息;同時,借助趨勢性信息,擴(kuò)大注意力模塊的感受野,增強(qiáng)它的記憶能力,以幫助增強(qiáng)模型對時序數(shù)據(jù)的處理能力。
為了從股市中獲得超額收益,自股市誕生之日起人們就希望可以準(zhǔn)確預(yù)測股票價格的趨勢,并在不斷的探索研究中形成了許多金融學(xué)理論和市場分析方法,也發(fā)展出許多計量經(jīng)濟(jì)學(xué)模型用于金融時序數(shù)據(jù)的預(yù)測。隨著人們對金融市場研究的不斷深入和人工智能技術(shù)的崛起,近年來涌現(xiàn)出了一批基于深度學(xué)習(xí)的股價趨勢預(yù)測方法,并且憑借它們出色的非線性擬合能力和特征自動學(xué)習(xí)能力,在股價趨勢預(yù)測上有著不俗的表現(xiàn)。
1)傳統(tǒng)的金融學(xué)分析方法?;久娣治觯‵A)和技術(shù)分析(TA)是最早最著名的股價趨勢預(yù)測方法。其中,F(xiàn)A 是指股票投資者根據(jù)金融學(xué)、財務(wù)管理學(xué)、經(jīng)濟(jì)學(xué)和證券投資學(xué)等學(xué)科的相關(guān)知識,通過對影響股票投資價值及價格的相關(guān)要素的探究,判定股票的投資價值,判斷股票的價位浮動,從而通過預(yù)測提出相關(guān)投資建議的一種分析方法。這種方法會比較全面地把握股票價格的基本趨勢,但是預(yù)測時間跨度相對較長,對短線投資來說時效性較差,且精度較低。TA 僅從股票的各個技術(shù)指標(biāo)來分析和預(yù)測股票價格的未來趨勢。TA 所依據(jù)的主要技術(shù)指標(biāo)包括K 線類、切線類、形態(tài)類、指標(biāo)類和波浪類,最常用的是K 線圖和指標(biāo)類的均線。和FA相比,TA 更接近市場的切實變化,能夠直觀地分析股價的漲跌幅度,但是考慮面有限,對于非常規(guī)交易不能作出及時判斷。同時,上述兩種方法都有一個共性的問題,那就是需要投資者具備專業(yè)的金融學(xué)知識和豐富的投資經(jīng)驗。
2)基于計量經(jīng)濟(jì)學(xué)模型的股價趨勢預(yù)測方法。與傳統(tǒng)的金融學(xué)分析方法不同,基于計量經(jīng)濟(jì)學(xué)模型的股價預(yù)測方法主要使用金融時間序列來預(yù)測股價趨勢,并不需要研究人員具備專業(yè)的金融學(xué)知識,比如ARIMA 模型和GARCH 模型等。雖然這些模型都具有較強(qiáng)的可解釋性,但是由于其自身線性結(jié)構(gòu)的約束,在面對金融時間序列這種非線性屬性很強(qiáng)的數(shù)據(jù)時,往往難以達(dá)到令人滿意的效果。
3)基于深度學(xué)習(xí)的股價趨勢預(yù)測方法。最近幾年,隨著人工智能技術(shù)的崛起和計算機(jī)性能的提升,深度學(xué)習(xí)在圖像識別、流量預(yù)測、語音識別、文本分析等各個領(lǐng)域都取得了不俗的成就,在金融領(lǐng)域,特別是股票價格趨勢預(yù)測方面也取得了大量的成果[17-19]。有許多研究[20-21]直接利用長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)[22]以金融時間序列作為輸入預(yù)測股價趨勢。這種方式簡單直觀,但是容易受到股價波動性的影響。為了應(yīng)對這種情況,F(xiàn)eng 等[13]提出一種對抗訓(xùn)練方案,在注意力長短期記憶(Attentive LSTM,ALSTM)網(wǎng)絡(luò)的基礎(chǔ)上引入對抗訓(xùn)練來模擬股票市場的隨機(jī)性,從而增強(qiáng)模型的泛化能力。而Ding 等[14]則從股價序列自身出發(fā),以金融時間序列的周期性和層次性為切入點進(jìn)行股價趨勢預(yù)測。然而,股價的變動與許多因素息息相關(guān),包括社會輿論、突發(fā)事件等,僅依靠單只股票歷史價格序列難以解釋其復(fù)雜的波動性,因此出現(xiàn)了很多融合公共新聞、社交媒體[12,23-25]等異質(zhì)信息的方法??紤]到市場宏觀趨勢相較于股票價格變動來說不確定性更低,Wang 等[7]嘗試?yán)檬袌龅暮暧^指標(biāo),從數(shù)據(jù)和模型的角度緩解股票價格波動性帶來的影響。還有人設(shè)計出新的市場指標(biāo)用于分析市場狀態(tài)[26]。除此之外,股票和股票之間也具有很強(qiáng)的依賴關(guān)系,一些對股票間相互影響進(jìn)行建模的研究[15-16]應(yīng)運而生。然而,現(xiàn)有研究缺少對于股票市場中股票間相互影響的層次性和動態(tài)性的考量,忽視了股票對股票、行業(yè)對股票、行業(yè)對行業(yè)這種層次性的影響,并且這種影響會隨著時間不斷變化。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[27]是一種以序列數(shù)據(jù)作為輸入,在序列演進(jìn)方向進(jìn)行遞歸且所有節(jié)點按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò),它出現(xiàn)的目的是解決全連接神經(jīng)網(wǎng)絡(luò)參數(shù)量過多、無法利用數(shù)據(jù)中的時間序列信息等問題。RNN 結(jié)構(gòu)的網(wǎng)絡(luò)以遞歸的方式處理一條序列數(shù)據(jù),且當(dāng)前時刻的輸出不僅取決于當(dāng)前時刻的輸入,還取決于上一時刻的輸出。通過這種結(jié)構(gòu),RNN 以有限的參數(shù)可以做到處理無限量的序列數(shù)據(jù),并且天然能夠捕捉到序列中元素的先后順序,非常擅長處理時序數(shù)據(jù)。但是,當(dāng)輸入序列過長時,在反向傳播的過程中,很容易出現(xiàn)梯度消失的問題。為此,人們提出了兩種循環(huán)神經(jīng)網(wǎng)絡(luò)的變體:LSTM 網(wǎng)絡(luò)和門控循環(huán)單元(Gated Recurrent Unit,GRU)[28]。然而現(xiàn)有的循環(huán)架構(gòu)的神經(jīng)網(wǎng)絡(luò)都是處理單一序列的模型,無法感知到不同股價序列之間的關(guān)系,也無法捕捉到市場宏觀趨勢。雖然有些研究在RNN 結(jié)構(gòu)的基礎(chǔ)上融入了圖卷積網(wǎng)絡(luò)(Graph Convolutional Network,GCN)去捕獲股票序列之間的關(guān)系[15],但是僅描述了股票之間的靜態(tài)關(guān)系,對股票間相互影響的層次性和動態(tài)性分析不足。并且,受限于模型深度,在這種融入GCN 的方法中,每個股票也只能感知到市場中一小部分環(huán)境的信息。
股票趨勢預(yù)測被定義為一個三分類問題,對于每一個股票,預(yù)測其股價趨勢。對于股價趨勢的定義如下:
其中:pt是調(diào)整后的收盤價;rt代表了給定股票s在目標(biāo)交易日t相較于前一日的價格變化率;l1和l2是兩個閾值,將股票的變化趨勢分成了3 類。因為不同的股票價格差距很大,所以使用價格變化率作為判斷股票漲跌的標(biāo)準(zhǔn)。
考慮股票與股票、股票與行業(yè)、行業(yè)與行業(yè)之間復(fù)雜的依賴關(guān)系,本文利用股票的行業(yè)信息同時對來自m個行業(yè)的n只股票進(jìn)行預(yù)測。輸入包括兩部分:第一部分是n只股票長度為T的特征序列,用來表示每一只股票;第二部分是n只股票的行業(yè)表示,用來描述行業(yè)信息。公式化描述如下:
其中:表示預(yù)測結(jié)果,是一個n維向量;Xt-T+i∈Rn×d是n只股票在第i個時間步的特征,d代表每個股票在該時間步的特征維度。本文中,每個時間步的股票都包括6 個維度,分別是:開盤價、收盤價、最高價、最低價、成交量、成交額。I∈Rn×m是行業(yè)矩陣,描述這n只股票屬于m個行業(yè)中的哪一類,若股票p屬于行業(yè)q,則Ip,q為1,反之為0。
RNN 的遞歸鏈?zhǔn)浇Y(jié)構(gòu)可以明確地感知到不同時間步的先后關(guān)系,因此該架構(gòu)的神經(jīng)網(wǎng)絡(luò)在處理時序數(shù)據(jù)上存在天然的優(yōu)勢。但股票市場受到多種因素的影響,股票變動往往具有很強(qiáng)的波動性,這導(dǎo)致單獨對一個股票進(jìn)行價格趨勢預(yù)測十分困難。而通過圖的形式同時對多個股票進(jìn)行預(yù)測時,又容易出現(xiàn)過于強(qiáng)調(diào)個別股票對目標(biāo)股票的影響這一問題。同時,不合適的圖結(jié)構(gòu)的構(gòu)建,也會給股價趨勢預(yù)測帶來不必要的噪聲。因此,本文提出一種動態(tài)宏觀記憶網(wǎng)絡(luò)DMMN,以n只股票的特征序列[X1,…,Xi,…,XT]和對應(yīng)的行業(yè)矩陣I作為輸入,動態(tài)地從所有的股票中提取出市場宏觀信息,同時對這n只股票進(jìn)行股價趨勢預(yù)測。其中,Xi∈Rn×d,I∈Rn×m,n是股票個數(shù),d是每一個股票在每一個時間步的維度,m是行業(yè)數(shù),Xi代表第i個時間步上n個股票的特征。DMMN 的架構(gòu)如圖1 所示,包括嵌入層、宏觀記憶層和預(yù)測層。其中嵌入層和預(yù)測層都是普通的全連接網(wǎng)絡(luò):嵌入層的作用是將原始的特征序列進(jìn)行特征交互,將它們映射到一個高維的特征空間中;預(yù)測層以宏觀記憶層的最后一步輸出作為輸入,最終得到n個股票的預(yù)測結(jié)果。
圖1 DMMN的架構(gòu)Fig.1 Architecture of DMMN
DMMN 模型的核心是宏觀記憶層,它采用了RNN 的架構(gòu),以嵌入后的n只股票的特征序列和行業(yè)矩陣作為輸入,進(jìn)行迭代處理。在每一個時間步,進(jìn)行數(shù)據(jù)處理的宏觀記憶單元如圖2 所示,公式化定義如下:
圖2 宏觀記憶單元Fig.2 Macro memory unit
其中:hi∈Rn×D,是在迭代進(jìn)行完第i步后得到n個股票的D維向量;而ei∈Rm×D,是m個行業(yè)的D維向量。和普通的RNN 不同,宏觀記憶層在迭代過程中會輸出兩個不同的隱層[h,e],分別代表n個股票的隱狀態(tài)和m個行業(yè)的隱狀態(tài)。通過這種迭代的形式,既捕獲到了每一個股票微觀層面的時序依賴信息,也能捕獲到股票市場中不同行業(yè)局部宏觀環(huán)境的時序依賴信息。
宏觀記憶單元通過門控單元來決定保留多少歷史信息以獲得長期的時序依賴,并和當(dāng)前時間步的信息融合得到每個股票的微觀表示∈Rn×D;然后通過宏觀信息提取模塊動態(tài)捕獲每只股票對應(yīng)的市場宏觀趨勢信息∈Rn×D;最后,將股票的微觀表示和宏觀趨勢信息進(jìn)行融合得到當(dāng)前時間步的股票表示hi。同時,宏觀信息提取模塊也會更新得到當(dāng)前時間步的行業(yè)表示ei。計算公式如下:
其中:Gate(*)和Macro(*)分別代表門控單元和宏觀信息提取模塊,將在下面的章節(jié)對這兩部分進(jìn)行詳細(xì)介紹;α是超參,用來平衡股票自身的特征信息和宏觀環(huán)境信息所占的比重,因為股票的自身信息和市場的宏觀信息同等重要,所以本文α=0.5。
同時,本文隨機(jī)初始化宏觀記憶層中包含h0和e0兩個參數(shù),并隨著訓(xùn)練的進(jìn)行而更新。
普通RNN 在訓(xùn)練的過程中很容易出現(xiàn)梯度爆炸和梯度消失的問題,這使得訓(xùn)練時梯度不能在較長的序列中一直傳遞下去,導(dǎo)致RNN 無法捕捉到長距離的影響。為了解決這些問題,人們利用門控機(jī)制提出了RNN 的一些改進(jìn)結(jié)構(gòu),其中最具有代表性的就是LSTM 和GRU。為了緩解梯度爆炸和梯度消失帶來的影響,使模型捕獲到序列的長期依賴,本文采用了一種簡單的門控機(jī)制,根據(jù)當(dāng)前時間步的輸入xi∈Rn×D和上一時刻的輸出hi∈Rn×D計算出歷史信息的記憶門MGate∈Rn×D,決定有多少歷史數(shù)據(jù)需要保留到當(dāng)前時刻;然后將xi和hi-1根據(jù)記憶門合并成當(dāng)前時刻門控單元的輸出。門控單元的結(jié)構(gòu)如圖3 所示,公式化描述如下:
圖3 門控單元Fig.3 Gated unit
其中:W∈R2D×D是待學(xué)習(xí)參數(shù);σ是sigmoid 激活函數(shù);運算符°表示按元素乘。
股票市場的眾多行業(yè)間存在著復(fù)雜的關(guān)系:有些行業(yè)處于同一產(chǎn)業(yè)鏈的上下游,比如采礦業(yè)和冶金業(yè),這類行業(yè)之間往往具有十分密切的關(guān)系,在股票市場中往往具有相似的變化趨勢;而有些行業(yè)在同一事件的影響下往往具有相反的變化趨勢,比如在互聯(lián)網(wǎng)的沖擊下,傳統(tǒng)線下零售業(yè)和線上零售業(yè)呈現(xiàn)出了完全不同的發(fā)展趨勢;此外,同一行業(yè)內(nèi)部,由于公司規(guī)模不同、對最新消息的反應(yīng)速度不同,它們的股價變動也會存在較為明顯的“超前-滯后”效應(yīng)。種種現(xiàn)象都表明,在股票市場中存在著股票與股票間、行業(yè)與行業(yè)間、股票與行業(yè)間等多種層次的復(fù)雜影響。同時,這種復(fù)雜的層次影響會隨著時間的推移而不斷變化。因此本文提出了針對股票市場的宏觀信息提取模塊,動態(tài)地從宏觀市場中捕捉到層次性的市場宏觀信息,結(jié)構(gòu)如圖4 所示。
圖4 針對股票市場的宏觀信息提取模塊Fig.4 Macro information extraction module for stock market
該模塊的輸入包括4 部分:n只股票當(dāng)前時間步的特征是股票k的特征向量;n只股票關(guān)于m個行業(yè)的行業(yè)矩陣I;上一時間步輸出的行業(yè)表示ei-1;上一時間步輸出的股票表示hi-1。輸出包括2 部分:當(dāng)前時刻的行業(yè)表示ei;當(dāng)前時刻得到的市場宏觀表示。考慮到市場中相互影響的層次性,宏觀信息提取模塊被設(shè)計成一種分層結(jié)構(gòu)。
其中:Kc是所有屬于行業(yè)c的股票編號集合;運算符⊙是求兩個向量的內(nèi)積。本文使用attention 機(jī)制計算在一個行業(yè)中每個股票所占的權(quán)重,從而得到行業(yè)的輸入表示。
接著是宏觀信息提取模塊中的門控單元。該門控單元和上一節(jié)介紹的門控單元結(jié)構(gòu)相同,不同的是這里的輸入是行業(yè)表示而非股票表示xi。同樣的,輸出也是如此。經(jīng)過門控單元得到了該模塊的第一個輸出,也就是當(dāng)前時刻輸出的股票表示ei。通過門控單元可以捕獲到行業(yè)信息的長期依賴,感知到行業(yè)的變化趨勢。
最后是全市場宏觀信息的提取。對于每一只股票來說,不同行業(yè)對它的影響程度不同,一般來說,股票所在的行業(yè)對它的影響最大。同樣地,同一個行業(yè),對不同的股票的影響也不同。因此針對每一只股票,從m個行業(yè)表示中聚合得到n個股票的特異性宏觀市場表示。計算公式如下:
這種動態(tài)分層提取市場宏觀信息的設(shè)計,既切合了股票市場的實際情況,又增強(qiáng)了對市場中的局部感知性。
本文將股價趨勢預(yù)測定義為一個三分類問題,因此,在訓(xùn)練模型時采用了交叉熵?fù)p失。
其中:C是類別數(shù),本文設(shè)置C=3;yic是符號函數(shù),如果樣本i的真實類別等于c,則取1,否則取0;pic是觀測樣本屬于類別c的概率,滿足pic≥0,并且
為了評估本文提出的方法,本文收集了CSI300 數(shù)據(jù)集,并進(jìn)行了大量的實驗;同時對模型進(jìn)行了消融實驗,以驗證動態(tài)層次提取市場宏觀信息的有效性。
本文在公共API 接口(Tushare)收集的CSI300 數(shù)據(jù)集由滬深股市上流動性良好的300 家大盤股上市公司組成,按照2021 年最新的公司列表,在刪除了已經(jīng)摘牌的股票后,共收集了295 家上市公司的數(shù)據(jù)。為了解決部分股票在某些交易日因為被臨時停牌而缺少交易數(shù)據(jù)的問題,所有股票的歷史交易日被對齊,并用最近一天的歷史交易數(shù)據(jù)填充缺失數(shù)據(jù)。
實驗中,數(shù)據(jù)集被分成5 段,在每一段上單獨進(jìn)行訓(xùn)練與測試。每一段都包含400 個交易日的樣本,其中前250 個交易日的數(shù)據(jù)用于訓(xùn)練,中間50 個交易日的數(shù)據(jù)用于驗證,最后100 個交易日的數(shù)據(jù)用于測試。同時,為了保證類部均衡,也為了避免過長的時間跨度給股票預(yù)測帶來干擾,本文在每一個數(shù)據(jù)段上單獨進(jìn)行標(biāo)簽標(biāo)記,統(tǒng)計所有樣本的收盤價變化率,確定其下三分位點和上三分位點,分別作為l1和l2,使標(biāo)記后的樣本達(dá)到類部均衡。具體描述見表1。
表1 數(shù)據(jù)描述Tab.1 Data description
對于這樣一個分類任務(wù),本文首先比較了不同方法的F1 分?jǐn)?shù)。F1 分?jǐn)?shù)常用來衡量多分類任務(wù)下模型的性能,兼顧模型的精準(zhǔn)率和召回率。
除此之外,為了評估模型的實際收益能力,本文參考了Sawhney 等[16]的做法,將訓(xùn)練好的模型在測試集上進(jìn)行了市場投資模擬,根據(jù)模型的預(yù)測結(jié)果構(gòu)造投資組合,計算投資組合的夏普比率來評價模型在現(xiàn)實市場的實際適用性。首先從預(yù)測為漲的股票中選擇5 個預(yù)測概率最高的股票進(jìn)行投資,即以當(dāng)前交易日的收盤價購入股票,然后以第二天的收盤價賣出股票。接著從預(yù)測為跌的股票中選擇5 個概率最高的股票進(jìn)行賣空,即在當(dāng)前交易日從證券機(jī)構(gòu)借入股票,以當(dāng)前交易日的收盤價售出,然后在第二天以收盤價購入并還給有關(guān)機(jī)構(gòu),賺取股票價格下跌的差價。在進(jìn)行投資和賣空時,每只股票投入的金額一致,因此收益率就是股價收盤價的變化率。夏普比率的計算公式如下:
其中:Ra是一個隨機(jī)變量,代表對每個股票投資的收益率;Rf是無風(fēng)險投資的收益率,這里選用的是國債投資的日收益率;std(Ra)代表Ra的標(biāo)準(zhǔn)差。
在進(jìn)行市場投資模擬時有以下幾點假設(shè):1)股票市場有足夠的流動性,股票總是可以順利地以收盤價及時買入賣出;2)投資金額足夠大,因此可以忽略交易成本,包括手續(xù)費等資金。夏普比率反映了在一定風(fēng)險下,投資組合能帶來多大的收益,如果夏普比率為正,代表收益為正,反之代表收益為負(fù);并且,夏普比率越大,代表該投資組合能在承擔(dān)更小風(fēng)險的情況下獲得更高的收益。
ARIMA[2]:一個差分整合移動平均自回歸模型,通過回歸預(yù)測股票收盤價的變化率,然后根據(jù)閾值判斷股票價格的漲跌形式。
多層感知機(jī)(Multi-Layer Perceptron,MLP)[17]:一個簡單的多層感知機(jī),包含3 個隱層,分別有64、32、16 個隱藏神經(jīng)元,每個樣本輸出為一個3 維的向量,表示3 分類的預(yù)測結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[18]:它包含兩層隱狀態(tài),每一層的通道數(shù)分別為64 和128。這里使用一維卷積,在時間方向上滑動卷積核,同時捕捉股票的時序依賴信息和特征交互信息。
LSTM[20]:一種循環(huán)神經(jīng)網(wǎng)絡(luò),隱層維度為128。實驗中只使用了一層循環(huán)單元。
GCN-LSTM[15]:添加了GCN 的LSTM 網(wǎng)絡(luò),依據(jù)行業(yè)關(guān)系構(gòu)造股票之間的圖結(jié)構(gòu),然后通過GCN 捕捉股票之間的關(guān)系,最后通過LSTM 捕獲股票間的時序依賴。
ALSTM[13]:添加了Attention 機(jī)制的LSTM 網(wǎng) 絡(luò),針 對LSTM 在不同時間步得到的隱狀態(tài)計算出對應(yīng)的權(quán)重,然后將各時間步的隱狀態(tài)匯聚在一起,增強(qiáng)了對不同時間步的感知能力。
在5 段數(shù)據(jù)集上對不同模型分類結(jié)果的F1 分?jǐn)?shù)和夏普比率進(jìn)行對比,結(jié)果如表2 所示,其中:最優(yōu)的結(jié)果被加粗標(biāo)注,次優(yōu)的結(jié)果標(biāo)注下劃線。
表2 CSI300數(shù)據(jù)集的5段數(shù)據(jù)上的F1分?jǐn)?shù)和夏普比率對比Tab.2 F1-score and Sharpe ratio comparison on 5 phase data of CSI-300 dataset
由表2 可知,DMMN 的F1 分?jǐn)?shù)除了在第3 段數(shù)據(jù)上取得了次優(yōu)的結(jié)果以外,在其他所有的數(shù)據(jù)段上都達(dá)到了最優(yōu)的效果;DMMN 在5 段數(shù)據(jù)上的平均F1 分?jǐn)?shù)也是最高的,與基準(zhǔn)模型中最優(yōu)的模型ALSTM 相比提升了4.87%。此外,通過比較不同模型在5 段數(shù)據(jù)集上F1 分?jǐn)?shù)的標(biāo)準(zhǔn)差可以發(fā)現(xiàn),DMMN 的穩(wěn)定性最好。雖然ALSTM 在第3 段數(shù)據(jù)集上的表現(xiàn)最優(yōu),但是它的標(biāo)準(zhǔn)差約為DMMN 的2.74 倍,其余方法的標(biāo)準(zhǔn)差也遠(yuǎn)高于DMMN。這也說明,引入市場動態(tài)層次宏觀信息確實可以降低股價變化波動性帶來的影響,提升模型的泛化能力。也正是由于其他方法受股價變化波動性的影響大,才使得像ALSTM 這樣的方法出現(xiàn)在某一數(shù)據(jù)段上取得很好的效果卻在其他數(shù)據(jù)段表現(xiàn)一般的情況。
從5 段數(shù)據(jù)上根據(jù)模型構(gòu)造的投資組合的夏普比率結(jié)果可知,DMMN 在大多數(shù)數(shù)據(jù)段上都取得了最優(yōu)或者次優(yōu)的結(jié)果,并且平均夏普比率也達(dá)到了最好的水平,相比ALSTM提升了31.90%。這表明在實際應(yīng)用時,本文方法可以在承擔(dān)更小的風(fēng)險的情況下取得更高的收益。
為了驗證宏觀記憶網(wǎng)絡(luò)架構(gòu)和動態(tài)層次提取宏觀市場環(huán)境信息的有效性,對模型作出一定的調(diào)整后進(jìn)行了多次消融實驗。
首先,為了驗證動態(tài)層次提取市場宏觀環(huán)境信息的有效性,同時驗證行業(yè)信息的作用,對宏觀信息提取模塊進(jìn)行修改得到宏觀記憶網(wǎng)絡(luò)(Macro Memory Network,MMN)。該網(wǎng)絡(luò)的宏觀記憶模塊不再分組得到每個行業(yè)的表示,而是直接得到全市場的表示。同時,DMMN 的輸出ei不再代表m個行業(yè)的行業(yè)表示,而是全市場的宏觀表示。即和DMMN 相比,MMN 不再具備動態(tài)層次地提取市場宏觀信息的能力。
接著,為了驗證宏觀記憶網(wǎng)絡(luò)架構(gòu)的有效性,在MMN 的基礎(chǔ)上,宏觀信息提取模塊的門控單元被刪除,得到宏觀網(wǎng)絡(luò)(Macro Network,MacroN)。這種改變直接使宏觀記憶單元不再有ei這一輸出,而是僅能根據(jù)當(dāng)前時間步的輸入去捕獲市場的宏觀信息,不具備對歷史宏觀信息的記憶能力。消融實驗的實驗結(jié)果如表3 所示。通過對比消融實驗的結(jié)果可以發(fā)現(xiàn),從MacroN 到MMN,再到DMMN,模型的性能依次提升,證明了宏觀記憶網(wǎng)絡(luò)架構(gòu)和動態(tài)層次提取宏觀市場環(huán)境信息的有效性。
表3 消融實驗結(jié)果Tab.3 Results of ablation experiment
針對股價變動波動性大這一挑戰(zhàn),本文提出一種動態(tài)宏觀記憶網(wǎng)絡(luò)DMMN,以股票的金融時序數(shù)據(jù)和行業(yè)標(biāo)識作為輸入,同時對多只股票進(jìn)行預(yù)測。該網(wǎng)絡(luò)架構(gòu)在迭代處理股票的金融時序數(shù)據(jù)時,不僅能夠捕捉到每只股票的長期趨勢,還能捕捉到行業(yè)的長期趨勢。并且,考慮到股票市場中相互影響的復(fù)雜性,本文提出了動態(tài)層次性提取市場宏觀信息的策略。首先從全體n個股票表示中動態(tài)得到股票市場中m個行業(yè)的行業(yè)表示,然后再針對每一個股票動態(tài)生成其特異性的市場表示以獲得對其有用的宏觀市場信息。這種分層的結(jié)構(gòu)提升了模型對全市場的局部感知能力。在Tushare 上收集了CSI300 數(shù)據(jù)集,將其分成5 段,再對這處于不同時期的5 段數(shù)據(jù)集分別進(jìn)行實驗,從分類性能和現(xiàn)實適用性兩個角度來對模型進(jìn)行評估。實驗結(jié)果表明,引入市場宏觀信息確實能夠緩解股價變化波動性帶來的影響;而且市場投資模擬結(jié)果也表明,本文提出的模型具有更好的市場適用性。通過消融實驗還可以看到,宏觀記憶網(wǎng)絡(luò)結(jié)構(gòu)和動態(tài)分層提取宏觀信息的設(shè)計都提升了模型的性能。
下一步將對股票自身微觀的特征序列之間的影響進(jìn)行研究,考慮同時引入市場宏觀環(huán)境信息和股票微觀特征信息進(jìn)行股價趨勢預(yù)測。