白迪
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
在金融市場(chǎng)中,資產(chǎn)的價(jià)格和回報(bào)的預(yù)測(cè)一直是金融從業(yè)者和學(xué)者們最具挑戰(zhàn)和激動(dòng)人心的問題之一[1-2]。研究估計(jì),機(jī)器學(xué)習(xí)應(yīng)用于銀行和金融部門的年潛在價(jià)值占全球收入的5.2%,約為3000 億美元[3]。與傳統(tǒng)的財(cái)務(wù)模型相比,機(jī)器學(xué)習(xí)提出利用以前未使用的新數(shù)據(jù)源進(jìn)行準(zhǔn)確預(yù)測(cè)的希望。近年來,有許多使用基本面數(shù)據(jù)進(jìn)行股票價(jià)格和回報(bào)預(yù)測(cè)的研究,并且取得了良好的效果,并且證明了機(jī)器學(xué)習(xí)在基本面數(shù)據(jù)對(duì)股票價(jià)格和回報(bào)預(yù)測(cè)的有效性[5]。
人類的注意力機(jī)制是從直覺中得到,他是利用有限的注意力資源從大量信息中快速篩選出高價(jià)值信息的手段。深度學(xué)習(xí)中的注意力機(jī)制借鑒了人類的注意力思維方式[6],并被廣泛應(yīng)用到計(jì)算機(jī)視覺和自然語言處理中。而在進(jìn)行基本面數(shù)據(jù)進(jìn)行資產(chǎn)價(jià)格和回報(bào)預(yù)測(cè)時(shí),由于基本面的數(shù)據(jù)量較大,每個(gè)基本面指標(biāo)對(duì)于預(yù)測(cè)結(jié)果的影響也是不同的,因此本文使用帶有注意力機(jī)制的機(jī)器學(xué)習(xí)進(jìn)行資產(chǎn)價(jià)格和回報(bào)的預(yù)測(cè)。
本實(shí)驗(yàn)使用基本面數(shù)據(jù)預(yù)測(cè)資產(chǎn)下一季度的回報(bào)率,其輸入如公式(1)所示:
其中xt,i代表在時(shí)間t 時(shí)刻第i 個(gè)基本面指標(biāo),共有N 個(gè)指標(biāo)。模型預(yù)測(cè)的輸出為資產(chǎn)的回報(bào)率。計(jì)算公式如下所示:
其中closet代表資產(chǎn)在t 時(shí)刻的收盤價(jià),Predictedt代表了資產(chǎn)在t 時(shí)刻預(yù)測(cè)出的回報(bào)率。
本實(shí)驗(yàn)所采集的股票數(shù)據(jù)使用的是滬深300 指數(shù)成分股。選用滬深300 指數(shù)成分股作為實(shí)驗(yàn)數(shù)據(jù)主要有兩個(gè)原因。第一:滬深300 指數(shù)的金融基本面指標(biāo)在數(shù)據(jù)量方面相對(duì)完整和龐大。這是因?yàn)檫@些股票都是大盤股,而且它們中的大多數(shù)上市時(shí)間相對(duì)較早。第二,滬深300 成分股在不同行業(yè)間相對(duì)平衡,而且它覆蓋了銀行、鋼鐵、石油、電力、煤炭、水泥、家電、機(jī)械、紡織、食品、釀酒、化纖、有色金屬、交通運(yùn)輸、電子器件、商業(yè)百貨、生物制藥、酒店旅游、房地產(chǎn)等數(shù)十個(gè)主要行業(yè)的龍頭企業(yè)。但由于滬深300 成分股的組成經(jīng)常處于變化中,本實(shí)驗(yàn)采用2019 年12 月的成分股作為它的組成。本文滬深300 成分股的歷史數(shù)據(jù)來自于量化交易網(wǎng)站聚寬。
成分股中原始的基本面數(shù)據(jù)有相當(dāng)一部分?jǐn)?shù)據(jù)條目缺失。由于數(shù)據(jù)集中缺失數(shù)據(jù)的存在可能為數(shù)據(jù)處理制造問題,從而最終產(chǎn)生無效的結(jié)論。對(duì)于機(jī)器學(xué)習(xí)問題,特別是在大多數(shù)機(jī)器學(xué)習(xí)方法的設(shè)計(jì)中都要求有完整的數(shù)據(jù)用于訓(xùn)練和測(cè)試,因此在創(chuàng)建機(jī)器學(xué)習(xí)模型前必須對(duì)缺失數(shù)據(jù)進(jìn)行處理。
數(shù)據(jù)缺失值的產(chǎn)生有三種機(jī)制,第一,完全隨機(jī)缺失:某個(gè)變量是否缺失與它自身的值無關(guān),也與其他任何變量的值無關(guān)。第二,隨機(jī)缺失:在控制了其他變量已觀測(cè)到的值后,某個(gè)變量是否缺失與他自身的值無關(guān)。第三,非隨機(jī)缺失:即使控制了其他變量已觀測(cè)到的值,某個(gè)變量是否缺失仍然與它自身的值有關(guān)。
如文獻(xiàn)[7-8]中所述,通常處理缺失數(shù)據(jù)有以下幾種方法:
(1)整列刪除:整列刪除移除有一個(gè)或多個(gè)缺失值的記錄。對(duì)于完全隨機(jī)丟失的數(shù)據(jù),整列刪除只會(huì)導(dǎo)致統(tǒng)計(jì)能力的下降。如果數(shù)據(jù)不是隨機(jī)缺失的,這種方法可能產(chǎn)生有偏參數(shù)估計(jì)。
(2)成對(duì)刪除:整列狀態(tài)刪除通常用一個(gè)特殊碼代表無效值和缺失值,同時(shí)保留數(shù)據(jù)集中的全部變量和樣本。但是,在具體計(jì)算時(shí)只采用有完整答案的樣本,因而不同的分析因涉及的變量不同,其有效樣本量也會(huì)有所不同。這是一種保守的處理方法,最大限度地保留了數(shù)據(jù)集中的可用信息。
(3)向前填充/向后填充:向前填充/向后填充即使用后一位/前一位的數(shù)據(jù)填充缺失數(shù)據(jù)。
(4)最大似然估計(jì)法:最大似然估計(jì)法使用可用數(shù)據(jù)的最大似然函數(shù)來計(jì)算最大似然估計(jì)。同樣,最大似然估計(jì)法還假設(shè)數(shù)據(jù)如果不是完全隨機(jī)缺失,至少是隨機(jī)缺失的。
原始數(shù)據(jù)中有大量的數(shù)據(jù)缺失集中在一些特征上,而其他缺失數(shù)據(jù)分布的較為離散。本文使用了特征刪除和均值替代的方法。如果某個(gè)特征有大量或超過50%的數(shù)據(jù)缺失,該特征項(xiàng)將會(huì)被移除。經(jīng)過特征刪除后,經(jīng)統(tǒng)計(jì)刪除的數(shù)據(jù)共有8%。若某只股票有超過10%的基本面數(shù)據(jù)為空,這刪除該股票的數(shù)據(jù)。剩余的缺失數(shù)據(jù)使用向后填充法填補(bǔ)。
本實(shí)驗(yàn)的目標(biāo)變量是預(yù)測(cè)季度的回報(bào)率。由于原始數(shù)據(jù)中有許多的特征擁有一個(gè)與時(shí)間相關(guān)的全局趨勢(shì),這些具有全局趨勢(shì)的特征可能會(huì)阻礙我們機(jī)器學(xué)習(xí)模型的泛化能力,從而導(dǎo)致不可靠的預(yù)測(cè)結(jié)果。因此我們對(duì)所有的特征進(jìn)行了百分比的轉(zhuǎn)換,如公式(3)所示:
經(jīng)過數(shù)據(jù)處理后,最終共有138 支股票和23 個(gè)特征被選取。每只股票有59 個(gè)觀測(cè)值,從2005 年第一季度到2019 年第四季度。這23 個(gè)特征值如表1所示。
表1 數(shù)據(jù)集經(jīng)過預(yù)處理后的特征值
在金融預(yù)測(cè)問題中,特別是數(shù)據(jù)有限的情況下,使用機(jī)器學(xué)習(xí)的方法時(shí)較容易出現(xiàn)過擬合。因此,我們將數(shù)據(jù)集劃分為訓(xùn)練集,驗(yàn)證集和測(cè)試集。訓(xùn)練集占總數(shù)據(jù)的60%,測(cè)試集和驗(yàn)證集分別占總數(shù)據(jù)的20%。即從2005 年第一季度至2013 年第四季度為訓(xùn)練集,從2014 年第一季度至2016 年第四季度為驗(yàn)證集,從2017 年第一季度至2019 年第四季度為測(cè)試集。除此之外為了最大化的利用數(shù)據(jù),在驗(yàn)證之后我們使用訓(xùn)練集的數(shù)據(jù)和驗(yàn)證集的數(shù)據(jù)訓(xùn)練模型,然后進(jìn)行測(cè)試[5]。我們的策略如圖1 所示。
圖1 數(shù)據(jù)集劃分策略
由于不同特征的數(shù)值范圍可能不一致,因此本實(shí)驗(yàn)對(duì)每個(gè)特征進(jìn)行標(biāo)準(zhǔn)化,以提升我們預(yù)測(cè)模型的性能[9]。歸一化公式(4)如下所示:
其中x是原始的特征向量,xˉ為特征向量的平均值,σ為特征向量標(biāo)準(zhǔn)差。為了防止訓(xùn)練集使用到驗(yàn)證集和測(cè)試集信息,需要對(duì)訓(xùn)練集與驗(yàn)證集、測(cè)試集分開進(jìn)行歸一化處理本實(shí)驗(yàn)對(duì)訓(xùn)練集歸一化后,使用訓(xùn)練集的平均值和標(biāo)準(zhǔn)差對(duì)驗(yàn)證集和測(cè)試集進(jìn)行歸一化。
當(dāng)訓(xùn)練一個(gè)回歸模型時(shí),損失函數(shù)取決于特定的算法。此外,模型訓(xùn)練中的損失函數(shù)也是一個(gè)可以調(diào)優(yōu)的超參數(shù)。對(duì)于前饋神經(jīng)網(wǎng)絡(luò),我們使用均方根誤差(RMSE)作為訓(xùn)練的損失函數(shù)。對(duì)于隨機(jī)森林,不涉及訓(xùn)練周期和損失函數(shù),RMSE 如公式(5)所示:
在本實(shí)驗(yàn)中,使用的基線模型為FNN 和RF,使用這兩個(gè)模型用來預(yù)測(cè)季度的回報(bào)[5]。
(1)前饋神經(jīng)網(wǎng)絡(luò)
前饋神經(jīng)網(wǎng)絡(luò)使用的開發(fā)工具為:Python 和Ten?sorFlow 的接口Keras。前饋神經(jīng)網(wǎng)絡(luò)其隱藏層的數(shù)量(Hidden layers)、每個(gè)隱藏層神經(jīng)單元的個(gè)數(shù)(Layer sizes)、激活函數(shù)(Activation)、訓(xùn)練的周期(Training ep?ochs)、學(xué)習(xí)率(Learning rate)和優(yōu)化器(Optimizer)如表2 所示。
表2 前饋神經(jīng)網(wǎng)絡(luò)的超參數(shù)
(2)隨機(jī)森林
隨機(jī)森林使用的開發(fā)工具為Python 的scikit-learn庫。其超參數(shù)設(shè)置如表3 所示。
表3 隨機(jī)森林的超參數(shù)
由于不同的基本面指標(biāo)對(duì)預(yù)測(cè)結(jié)果的影響不同,因此本實(shí)驗(yàn)的注意力機(jī)制作用在指標(biāo)上。帶注意力的模型使用的開發(fā)工具為Python 和TensorFlow 的接口Keras。其模型的參數(shù)如表4 所示。
表4 帶有注意力機(jī)制的前饋神經(jīng)網(wǎng)絡(luò)的超參數(shù)
本文使用了前饋神經(jīng)網(wǎng)絡(luò)、隨機(jī)森林和帶有注意力機(jī)制的前饋神經(jīng)網(wǎng)絡(luò)三種模型。股票預(yù)測(cè)結(jié)果在不同時(shí)間的均方根誤差如圖2 所示,三種模型的平均均方根誤差如表5 所示。
表5 三種模型的均方根誤差
圖2 三種模型結(jié)果對(duì)比
由圖2,帶有注意力機(jī)制的模型其均方誤根差在多數(shù)季度要小于前饋神經(jīng)網(wǎng)絡(luò)和隨機(jī)森林的均方根誤差。在表5 中,帶有注意力機(jī)制的前饋神經(jīng)網(wǎng)絡(luò)的效果分別比前饋神經(jīng)網(wǎng)絡(luò)和隨機(jī)森林的效果提升了43.75%和47.05%,也證明了帶有注意力機(jī)制的前饋神經(jīng)網(wǎng)絡(luò)的有效性。
機(jī)器學(xué)習(xí)在股票價(jià)格和回報(bào)測(cè)試是一個(gè)熱門的課題。本文使用帶有注意力機(jī)制的前饋神經(jīng)網(wǎng)絡(luò)結(jié)合基本面信息對(duì)股票的回報(bào)進(jìn)行預(yù)測(cè),并取得了較好的結(jié)果。但仍存在不足之處,例如在金融領(lǐng)域中,使用基本面數(shù)據(jù)時(shí),其所在的行業(yè)信息也是很重要的一個(gè)因素,因此可以嘗試將行業(yè)信息加入模型中進(jìn)行預(yù)測(cè)。