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