謝游宇,王萬雄
甘肅農業(yè)大學理學院,蘭州730070
股市是經濟的晴雨表,各行各業(yè)的經營狀況和發(fā)展前景都可以通過股市反映出來。如果能夠預測和分析股市的走向,那么不僅能使投資者獲益,也能夠引導政府作出干預,避免股市崩盤。
股票序列具有非線性、非平穩(wěn)等特征,同時含有大量噪聲。傳統(tǒng)統(tǒng)計模型如ARIMA[1]、GARCH[2]、VAR[3]、GM[4]等模型,雖然其具有完備的理論體系,可以根據(jù)統(tǒng)計原理來檢驗模型的優(yōu)劣,但是傳統(tǒng)統(tǒng)計模型對數(shù)據(jù)具有嚴格的假定如平穩(wěn)性、正態(tài)性等,由于股票數(shù)據(jù)的非平穩(wěn)性和非線性以及強烈的波動性,這也導致了傳統(tǒng)統(tǒng)計模型在處理股票序列上具有局限性。相對于傳統(tǒng)統(tǒng)計模型,機器學習模型和深度學習模型能夠很好處理非線性非平穩(wěn)序列,其對數(shù)據(jù)也沒有任何假定,常用的機器學習模型和深度學習模型有支持向量機、隨機森林、神經網(wǎng)絡等。其中神經網(wǎng)絡中的LSTM 模型對具有長期依賴性的數(shù)據(jù)有很好擬合效果,目前被廣泛應用于股票預測[5-7];機器學習中的SVR 模型對于非線性序列具有很好的泛化效果,也常被用于股票預測[8-10]。
道氏理論認為股票指數(shù)存在三種趨勢:長期趨勢、中期趨勢和短期趨勢,并且股票變動受到這三種趨勢的共同作用。因此有學者采用了分解的思想:將金融序列分解成具有不同時間尺度的若干分量,再分別利用單一模型對各個分量進行預測,最后再集成得到預測結果。基于這種思想,有學者提出了組合模型[11-13],這些組合模型大都采用了目前常用的數(shù)據(jù)分解方法:傅里葉變換、小波變換和經驗模態(tài)分解(EMD);與小波變換和傅里葉變換不同,EMD 僅僅依靠數(shù)據(jù)自身的特征來進行信號分解,而不依賴基函數(shù);基于這一特點,EMD 幾乎適用于任何類型信號的分解,尤其是在非線性、非平穩(wěn)序列上具有顯著優(yōu)勢。因此有不少學者基于EMD得出了精度更高的股票組合預測模型如EMD-ARIMA[14]、EMD-SVR[15]、EMD-LSTM[[16]等模型。但是,經過EMD分解后得到的若干高頻分量依然存在噪聲,限制了模型的預測精度,有學者通過結合EMD 和SSA(奇異譜分析)兩種方法成功實現(xiàn)了降噪[17]:對經過EMD分解后的所有分量再進行SSA 分解,從而實現(xiàn)信噪分離,使信號分解更徹底。在此,本文引入SSA對高頻分量進行分解重構,實現(xiàn)對高頻分量的信噪分離,進而提高預測精度。同時,SSA 本身也存在缺陷,其嵌入維度的大小將影響分解效果,較大的嵌入維度將使信號過度分解,較小的嵌入維度則無法有效提取特征;并且經過SSA分解后的第一個SSA分量往往混合了絕大部分特征,容易導致分解不全而無法充分提取特征,影響預測效果,故不直接對原始序列進行SSA 分解。因此,本文結合EMD和SSA 兩種分解方法各自的優(yōu)點,首先利用EMD 自適應性的優(yōu)點將原始序列分解成具有不同特征的若干高頻分量和低頻分量以及殘差項,其次利用SSA對所有高頻分量進行重構,實現(xiàn)對高頻分量的信噪分離。
鑒于此,本文提出了一種基于EMD和SSA的EMDSSA-LSTM-SVR的股票組合預測模型,并利用滬深300指數(shù)序列來驗證模型的性能。首先利用EMD 將滬深300序列分解成具有若干不同時間尺度的IMF分量,再將各IMF分量進行組合:將低頻IMF分量和殘差項組合為趨勢項,將剩余高頻IMF 分量組合為波動項;其次利用LSTM 模型對趨勢項進行預測,利用LSTM 模型和PSO-SVR 模型對波動項進行預測:首先利用SSA 對趨勢項進行分解重構,利用LSTM 模型對長期依賴(自相關函數(shù)拖尾)子序列進行預測,利用PSO-SVR模型對短期依賴(自相關函數(shù)截尾)子序列進行預測,再將所有序列預測值合并為波動項預測值;最后將趨勢項預測值和波動項預測值集成得到最終滬深300 預測值,如圖1 所示。通過與LSTM、SVR、EMD-LSTM、EMD-SVR、SSALSTM和SSA-SVR六種模型對比,證明了本文所提組合模型的預測性能。
圖1 方法與流程Fig.1 Methods and Processes
經驗模態(tài)分解(empirical mode decomposition,EMD)[18],是一種信號分解的方法,其思想就是將信號分解為相互獨立的多個本征模態(tài)函數(shù)(IMF)的疊加,IMF必須滿足以下兩個條件:
(1)函數(shù)在整個時間范圍內,局部極值點和過零點數(shù)目必須相等,或者最多相差一個。
(2)在任何時間點,局部最大值的包絡線(上包絡線)和局部最小值的包絡線(下包絡線)平均必須為零。
算法流程如下:
步驟1 找到原始時間序列x(t)的所有極大值和極小值點,對所有極值點利用三次樣條插值法擬合上包絡線U(t)和下包絡線L(t)。
步驟2 求上下包絡線的均值M(t):
步驟3 原始序列減去均值包絡線,得到中間序列h(t)。
步驟4 判斷h(t)是否滿足IMF的兩個約束條件,如果滿足則是一個IMF分量,如果不滿足則返回步驟1反復迭代。
步驟5 假設h(t)是一個IMF 分量并記為IMF1,則重復步驟1~4,將M(t)當做原始序列繼續(xù)分解得到下一個IMF分量IMF2,直到殘余分量是單調函數(shù)或常量時,停止分解。殘余分量記為res。
分解完成后,原始序列x(t)可以表示為:
LSTM(long short term memory,LSTM)[19]網(wǎng)絡,是為了解決長期依賴問題而設計出來的一種神經網(wǎng)絡模型,是一種循環(huán)神經網(wǎng)絡(RNN)。所有的RNN 都具有一種重復的神經網(wǎng)絡模塊的鏈式形式,不同于標準RNN,LSTM 具有更為復雜的結構模塊,主要通過三個門(輸入門、遺忘門、輸出門)來實現(xiàn)信息的記憶和傳遞以及狀態(tài)的更新。
首先信息會經過遺忘門,遺忘門會讀取前一時刻的輸出以及當前時刻的輸入,輸出一個在0 到1 之間的數(shù)值ft,ft決定了信息的保留,1表示完全保留,0表示完全舍棄,如下:
其中,ht-1表示的是上一時刻的輸出,xt表示的是當前時刻的輸入,bf是偏置,σ是一個sigmod 函數(shù)。
其次信息會經過輸入門,輸入門決定了信息和狀態(tài)的更新,主要包括兩個步驟:一個sigmod 層決定哪些信息需要進行更新;一個tanh 層生成用來更新的內容,如下:
其中,Ct表示更新的信息,it為Ct的系數(shù),Ct-1表示上一時刻的狀態(tài),C表示更新后的狀態(tài)。
最后信息將會通過輸出門,得到最終的輸出值,輸出值將會基于更新后的狀態(tài)。首先,通過一個sigmod門確定哪一部分信息會被輸出,接著把更新后信息經過tanh 處理并將它和sigmod 門的輸出相乘,得到最終的輸出,如下:
其中,ht為最終輸出。
奇異譜分析(singular spectrum analysis,SSA)[20],是一種處理非線性時間序列的方法,通過對所研究的時間序列的軌跡矩陣進行分解、重構等操作,提取出時間序列中的不同成分,從而實現(xiàn)對原始時間序列的分解和去噪。奇異譜分析主要包括四個步驟:嵌入—分解—分組—重構。
步驟1 嵌入。給一組有限長一維時間序列[x1,x2,…,xN],選擇合適的窗口長度L(2 步驟2 分解。對矩陣S=XXT進行奇異值分解,得到如下形式: 其中,U為左矩陣;Σ僅在對角線元素有值,就是奇異值,其他元素均為零;VT為右矩陣。此外U、V均為單位正交矩陣。對S分解后會得到特征值λ1>λ2>…>λL≥0 和對應的特征向量U1,U2,…,UL。并且有: 步驟3 分組。將下標集合{1,2,…,d}劃分成m個互不相交的子集I1,I2,…,Im,令I={i1,i2,…,ip},則對應于I的合成矩陣XI=Xi1+Xi2+…+Xip。則有: 其中,I1,I2,…,Im的選取過程即為分組。 步驟4 重構。將上式中的每個矩陣XIj變換為一個長度為N的新序列,即得到分解后的序列。令Y為一個L×K的矩陣,元素為yij,1 ≤i≤L,1 ≤j≤K。 令L*=min(L,K),K*=max(L,K),N=L+K-1,如果L SVR(support vector regression)[21]是一種基于結構風險最小化的回歸算法,對于非線性數(shù)據(jù)具有很好的泛化能力,其核心思想是通過非線性映射將原始數(shù)據(jù)映射到高維空間,在高維空間尋找最優(yōu)回歸超平面,從而實現(xiàn)預測。 SVR的回歸函數(shù)表達式如下: 其中,ω為權值系數(shù),φ(x)為非線性變換函數(shù),b為偏置。 不同于普通線性回歸的損失函數(shù),SVR的損失函數(shù)定義為: 其中,L[y,f(x)]為SVR的損失函數(shù),ε為常數(shù)。只有當預測偏差小于ε時,才計算損失,否則不計入損失。上式相當于以f(x)為中心,構建了一個寬度為2ε的間隔帶,只有落在間隔帶以內的樣本才不計算損失。 再通過引入松弛變量εi、ε?i就可以得到SVR優(yōu)化的目標函數(shù): 其中,C為懲罰因子;為松弛因子。拉格朗日乘數(shù)法把式(17)的約束問題轉化為無約束的二次規(guī)劃問題求解,即原問題轉化為如下對偶問題: 本文以滬深300指數(shù)來測試EMD-SSA-LSTM-SVR模型的預測性能,選取了2014 年1 月3 日至2021 年12月31 日共1 950 個收盤價數(shù)據(jù),數(shù)據(jù)來源于Tushare 財經數(shù)據(jù)接口,如圖2 所示。這段時間囊括了滬深300 指數(shù)上升、下降和震蕩等多個階段,同時滬深300 在一定程度上反映了整個股市的運行狀況。因此,本文的測試數(shù)據(jù)具有一定代表性。 圖2 滬深300Fig.2 hs300 2.2.1 EMD分解 滬深300 序列經過EMD 分解后一共得到8 個IMF分量,包含了4 個高頻IMF 分量(IMF1~IMF4)和3 個低頻IMF 分量(IMF5~IMF7)以及1 個殘差項(IMF8)。這8 個分量分別對應了滬深300 存在的短期變動趨勢(IMF1~IMF4)、中期變動趨勢(IMF5~IMF7)和長期變動趨勢(IMF8)。將4個低頻分量合并為趨勢項,再將4個高頻分量合并為波動項,如圖3和圖4所示;經過EMD分解與重構后能夠將原始序列分解為相對平滑的長期趨勢項和具有高噪聲的短期波動項。 圖3 EMD分解Fig.3 EMD decomposition 圖4 趨勢項和波動項Fig.4 Trend and fluctuation terms 2.2.2 SSA分解 SSA存在嵌入維度選取問題,因此引入具有較強適應性的Cao[22]方法。利用Cao方法選取嵌入維度L的步驟如下: 計算不同嵌入維度L下最近鄰點的距離變化值: 其中,‖ ? ‖為無窮范數(shù),Xi(L)與Xi(L+1)分別表示在嵌入維度為L和L+1 時重構的相空間向量,Xn(i,L)(L)則表示該向量的最近鄰點。 計算相同嵌入維度L下相空間最近鄰點變動值的均值: 觀察E(L)的變化情況E1(L): 當E1(L)停止變動或者其值小于給定閾值時,此時的嵌入維度L0即為最佳嵌入維度。 利用Cao 方法對波動項進行SSA 分解,其E1(L)變化如圖5所示,當L等于17時E1(L)趨于穩(wěn)定,因此L=17為最佳嵌入維度。 圖5 E1(L)變化Fig.5 E1(L)change 當嵌入維度為17 時,波動項經過SSA 分解得到的奇異值如圖6所示,將奇異值大小相近的SSA分量合并[1,2,3-4,5-6,7-9,10-12,13-17],最終得到7 個SSA 分量,如圖7所示。 圖6 奇異值Fig.6 Singular values 圖7 SSA分解Fig.7 SSA decomposition 經過SSA分解得到的7個SSA分量與經過EMD分解得到的4 個IMF(IMF1~IMF4)分量相比,SSA 分解能夠將超高頻分量(IMF1、IMF2)中的有效成分和噪聲分離,從而減小噪聲帶來的影響。 經過EMD 和SSA 分解一共得到11 個不同時間尺度的子序列。道氏理論認為金融序列的中長期變動趨勢在一定程度上有規(guī)律可循,因此將IMF5~IMF8 合并為一個長期趨勢項來進行預測;而短期變動趨勢較為復雜且不易把握,因此對剩余7個短期波動項分別單獨預測。 本文選取均方根誤差(root mean square error)、平均絕對誤差和平均絕對百分比誤差三種指標來檢測模型的預測效果,計算公式如下: 其中,yi為序列真實值為序列預測值,n為序列長度,i為序列編號,三種指標的值越小,模型的預測精度就越高。 選取前6年共1 708個數(shù)據(jù)作為訓練集,最后1年共242個數(shù)據(jù)為預測集來驗證模型的預測性能,為了提高模型的求解速度和預測精度,在實證之前對模型進行歸一化處理,歸一化公式如下: 其中,x為原始序列,xmax為原序列最大值,xmin為原序列最小值。 利用LSTM模型對長期趨勢項進行擬合,利用滑動窗口法預測下一期的值,根據(jù)趨勢項的自相關函數(shù)將窗口值設置為180,采用單層LSTM網(wǎng)絡,共50個神經元,激活函數(shù)為linear,損失函數(shù)為MSE,優(yōu)化器為Adam,最大迭代次數(shù)為1 000 次,并設置了早停機制:當模型30次迭代后沒有提升就停止迭代,并返回最優(yōu)參數(shù)設置。 分別利用LSTM(參數(shù)設置同上)模型和PSO-SVR模型對重構后的7個SSA分量進行預測,同樣采用滑動窗口法進行預測并根據(jù)其自相關函數(shù)來選取預測窗口長度,窗口長度分別設置為(30,20,15,10,7,5,4),最后將所有預測序列的結果合并得到滬深300 的預測結果。經過實證發(fā)現(xiàn),LSTM 模型對前四個長期依賴(自相關函數(shù)拖尾)序列預測效果優(yōu)于SVR模型,而對后三個短期依賴(自相關函數(shù)截尾)序列的預測效果劣于SVR 模型,因此利用LSTM 模型預測長期依賴序,利用SVR模型預測短期依賴序列。 為了凸顯模型的優(yōu)越性,本文還將LSTM、SVR、EMD-SVR、EMD-LSTM、SSA-LSTM 和SSA-SVR 六個模型與本文提出的EMD-SSA-LSTM-SVR 組合模型進行了對比,結果如圖8~11所示。 圖8 單一模型的預測值和真實值Fig.8 Predicted and true values for single model 圖9 EMD分解模型的預測值和真實值Fig.9 Predicted and true values of EMD decomposition model 圖10 SSA分解模型的預測值和真實值Fig.10 Predicted and true values of SSA decomposition model 圖11 EMD-SSA-LSTM-SVR模型的預測值和真實值Fig.11 Predicted and true values of EMD-SSA-LSTM-SVR model 為了更加直觀地比較各個模型的優(yōu)劣,表1是各個模型的RMSE、MAE、MAPE三種指標,從劣到優(yōu)分別是SVR、LSTM、EMD-SVR、EMD-LSTM、SSA-SVR、SSALSTM、EMD-SSA-LSTM-SVR。 表1 實驗結果對比Table 1 Comparison of experimental results 結合圖8~11 以及表1 可以看出,EMD-SVR、EMDLSTM、SSA-LSTM和SSA-LSTM模型要比單一模型SVR和LSTM 表現(xiàn)要好,經過EMD 分解和SSA 分解后的模型精度有明顯的提升,而本文提出的EMD-SSA-LSTMSVR 模型的預測結果基本與原始滬深300 序列重合。由此可見本文提出的組合模型進一步提高了預測精度。 為了進一步驗證模型的優(yōu)越性和適應性,以本文提出的EMD-SSA-LSTM-SVR 模型為基礎,對文獻[15]和文獻[16]中的數(shù)據(jù)進行預測,并與文獻中的原模型的預測結果進行對比分析。 對于文獻[15]中的上證指數(shù)收益率序列,以前976個數(shù)據(jù)作為訓練集和測試集,后202 個數(shù)據(jù)為驗證集,建立EMD-SSA-LSTM-SVR模型,預測結果如表2所示。 表2 上證指數(shù)收益率預測結果對比Table 2 Comparison of SSE index return forecast results EMD-SSA-LSTM-SVR 模型在三種指標上都要優(yōu)于EMD-SVRF 模型,尤其在R-square,這也表明EMDSSA-LSTM-SVR模型具有更優(yōu)秀的預測能力。 對于文獻[16]中的綜合指數(shù)指數(shù)序列,分別對滬深300、上證指數(shù)和深證成指建立EMD-SSA-LSTM-SVR模型,預測結果如表3。 表3 綜合指數(shù)預測結果對比Table 3 Comparison of composite index forecast results 結合表2和表3的結果來看,EMD-SSA-LSTM-SVR模型無論是對相對平穩(wěn)的收益率序列還是帶有趨勢的綜合指數(shù)序列都有著良好的預測性能。 金融序列往往含有大量噪聲,雖然EMD 分解能夠自適應地根據(jù)序列自身特點將原始序列分解為多個時間尺度的子序列,但是其分解出的前幾個高頻子序列往往含有大量噪聲,限制了其預測效果。SSA分解可以自適應地選擇嵌入維度實現(xiàn)對序列的分解重構,將EMD分解后的高頻分量再進行SSA 分解可以最大程度上實現(xiàn)對原始序列的完全分解,從而減小噪聲帶來的影響,最后再結合LSTM 模型處理長期依賴序列的優(yōu)勢以及SVR模型對非線性序列的泛化能力,建立了預測精度更高的EMD-SSA-LSTM-SVR模型。 本文提出了一種基于EMD 和SSA 的EMD-SSALSTM-SVR模型,該模型能夠最大程度上實現(xiàn)對原始序列的完全分解,將原始序列分解為具有多個時間尺度的子序列,解決了EMD分解后高頻分量存在的噪聲問題,并且根據(jù)各個子序列的自相關函數(shù)選取相應的預測模型進一步提高了預測精度。同時以滬深300指數(shù)、上證指數(shù)、深證成指以及上證指數(shù)收益率進行驗證,實驗結果表明,EMD-SSA-LSTM-SVR模型具有更好的預測性能。1.4 SVR的基本理論
2 實證分析
2.1 數(shù)據(jù)來源
2.2 EMD分解與SSA分解
2.3 評價指標
2.4 實證結果
2.5 實驗結果分析
3 結束語