收稿日期:2023-02-26
基金項目:國家自然科學基金項目(62266055)
DOI:10.19850/j.cnki.2096-4706.2024.06.020
摘? 要:股票是一種重要的投資渠道,如何更準確地預測股票價格是一個熱門的研究課題。由于股票數(shù)據(jù)的非線性、非平穩(wěn)以及前后相關等復雜特點,傳統(tǒng)的股票價格預測方法已經(jīng)到達性能瓶頸。隨著深度學習方法的興起,LSTM和GRU等深度神經(jīng)網(wǎng)絡預測模型受到了極大的關注?;趶B門港務股票和上證指數(shù)的歷史交易數(shù)據(jù),利用了LSTM和GRU兩種模型對收盤價進行預測研究,通過5個指標MAE、MSE、RMSE、MAPE和R2給出了模型評價。
關鍵詞:股票價格預測;LSTM模型;GRU模型
中圖分類號:TP183? ? ? 文獻標識碼:A? 文章編號:2096-4706(2024)06-0086-04
Research on Two Stock Price Forecasting Methods Based on Deep Network
SUN Zhenyu1,2
(1.School of Mathematics, Yunnan Normal University, Kunming? 650500, China;
2.Yunnan Key Laboratory of Modern Analytical Mathematics and Applications, Kunming? 650500, China)
Abstract: Stock is an important investment channel, how to forecast stock price more accurately is a hot research topic. Due to the complex characteristics of stock data, such as non-linearity, non-stationarity and before and after correlation, traditional stock price forecasting methods have reached the performance bottleneck. With the rise of Deep Learning methods, deep neural network forecast models such as LSTM and GRU have received great attention. Based on the historical trading data of Xiamen Port Stock and Shanghai Stock Index, LSTM and GRU models are used to forecast the closing price. The model evaluation is given by 5 indexes of MAE, MSE, RMSE, MAPE and R2.
Keywords: stock price prediction; LSTM model; GRU model
0? 引? 言
股票是一種重要的投資渠道,它的價格走勢是人們關注的焦點,但股票的價格走勢是復雜多變的,想要準確預測并非易事[1],如何更準確地預測股票價格是國內外學者研究的熱門課題。對于投資者而言,股票價格預測結果越準確,風險就越低,收益就越大。
股票價格預測的方法目前有很多,傳統(tǒng)的股票價格預測方法有ARIMA[2]、ARMA[3]和GARCH [4]等模型,后來又出現(xiàn)了支持向量機[5]和隨機森林[6]等機器學習方法,這些方法能較好地解決了股票數(shù)據(jù)非線性問題,彌補了傳統(tǒng)的股票價格預測方法在處理非線性數(shù)據(jù)時的不足,但在處理股票數(shù)據(jù)的時序相關性方面仍存在局限性。隨著深度學習的發(fā)展,最近涌現(xiàn)了許多深度神經(jīng)網(wǎng)絡模型來對股票價格進行預測,例如LSTM(Long Short Term Memory networks)[7]、GRU(Gated Recurrent Unit)[8]等深度神經(jīng)網(wǎng)絡模型。在預測具有非線性趨勢和序列相關性的數(shù)據(jù)問題上,深度神經(jīng)網(wǎng)絡方法可以達到更高的精度,突破了傳統(tǒng)機器學習方法的局限性。為了驗證深度神經(jīng)網(wǎng)絡模型在股票價格預測方面的性能,本文以廈門港務股票和上證指數(shù)的歷史交易數(shù)據(jù)為例,建立了LSTM和GRU兩個深度神經(jīng)網(wǎng)絡預測模型,最后通過5個指標MAE、MSE、RMSE、MAPE和R2給出了模型評價。
1? 模型原理和方法
1.1? LSTM模型原理
LSTM神經(jīng)網(wǎng)絡,全稱長短期記憶網(wǎng)絡[9],是一種循環(huán)神經(jīng)網(wǎng)絡的變體。如圖1所示,LSTM具有一種重復神經(jīng)網(wǎng)絡模塊的鏈式形式,這個重復模塊中包含了四個交互的層,三個sigmoid激活函數(shù)和一個tanh激活函數(shù),并以特殊的方式進行交互。
在圖1中,σ表示的是sigmoid激活函數(shù),它和tanh激活函數(shù)的作用都是幫助調節(jié)流經(jīng)網(wǎng)絡值;二者不同之處在于sigmoid激活函數(shù)把輸出值壓縮到[0,1]區(qū)間內,而tanh激活函數(shù)把輸出值壓縮到[-1,1]區(qū)間內;這樣的設置有助于更新或忘記上一狀態(tài)信息[10]:1)因為任何數(shù)乘以0都得0,那么這部分信息就會遺忘;2)任何數(shù)乘以1都得到它本身,那么這部分信息就會被保存下來。LSTM神經(jīng)網(wǎng)絡的傳播過程可分為以下4步:
第1步:判別從上一狀態(tài)中丟棄了哪些信息,這個決定通過一個稱為“忘記門”的結構完成。忘記門讀取上一個輸出ht-1和當前輸入xt,通過sigmoid激活函數(shù)進行非線性映射后,輸出一個向量ft,其計算表達式為:
ft = ( Wf [ht-1,xt] + bf )
第2步:決定什么樣的新信息被存放在下一狀態(tài)中,這個決定通過一個稱為“輸入門”的結構完成。該輸入門包含兩個部分:第一部分是讀取上一個狀態(tài)輸出ht-1和當前輸入xt,通過sigmoid激活后輸出一個向量it;第二部分是通過一個tanh激活函數(shù)創(chuàng)建出一個新的候選值向量 ,將其加入當前狀態(tài)中,其計算表達式為:
第3步:狀態(tài)更新:將Ct-1更新為Ct。首先將上一狀態(tài)Ct-1與ft相乘,接著再加上 ,得到的結果就是新的候選值Ct,其計算表達式為:
第4步:確定整個模型輸出的值,這個決定通過一個稱為“輸出門”的結構完成。輸出門首先讀取上一個輸出ht-1和當前輸入xt,然后通過一個sigmoid激活來確定輸出哪些值從而得到向量ot;接著將新狀態(tài)Ct通過一個tanh激活進行處理,并將它和通過sigmoid激活函數(shù)確定的輸出相乘,最終得到整個模型輸出的值ht,其計算表達式為:
圖1? LSTM神經(jīng)網(wǎng)絡結構圖
1.2? GRU模型原理
GRU神經(jīng)網(wǎng)絡是對LSTM神經(jīng)網(wǎng)絡的改進,它比LSTM神經(jīng)網(wǎng)絡的參數(shù)更少、結構更簡單。GRU神經(jīng)網(wǎng)絡通過引入重置門(Reset Gate)rt與更新門(Update Gate)zt去選擇信息。如圖2所示,GRU神經(jīng)網(wǎng)絡的門控狀態(tài)來源于前一刻的信息狀態(tài)ht-1和當前時刻的信息狀態(tài)xt。
圖2? GRU神經(jīng)網(wǎng)絡結構圖
GRU神經(jīng)網(wǎng)絡的傳播過程可分為以下3步:
第1步:通過上一狀態(tài)ht-1和當前節(jié)點的輸入xt來獲取兩個門控狀態(tài):rt為重置門控(reset gate),zt為更新門控(update gate)[12],計算表達式為:
,
第2步:使用重置門rt對上一時刻的狀態(tài)信息ht-1實現(xiàn)信息狀態(tài)的重置從而得到重置之后的數(shù)據(jù) ,將其與當前時刻信息xt進行拼接,再通過一個tanh激活函數(shù)將數(shù)據(jù)縮放至[-1,1]范圍,從而得到當前時刻的候選狀態(tài) ,其計算表達式為:
第3步:通過更新門zt的遺忘和記憶作用得到當前時刻的狀態(tài)ht,其計算表達式為:
其中? 表示對上一時刻的狀態(tài)ht-1的選擇性遺忘,即將ht-1中一些不重要的信息舍棄; 表示對當前時刻的候選狀態(tài)? 的選擇性記憶,即記住 中一些重要的信息;即當前時刻的狀態(tài)ht由忘記上一時刻的狀態(tài)ht-1中的某些信息,并加入當前候選狀態(tài)? 中的某些信息而得到。
2? 股票預測應用
2.1? 模型設置
LSTM模型使用的Python中的PyTorch學習庫進行搭建,模型單特征輸入的輸入層數(shù)input_size為1,多特征輸入的輸入層數(shù)input_size為5,隱藏層數(shù)hidden_size設置為16,輸出層數(shù)output_size設置為1,層數(shù)num_layers設置為1,時間步長Sequence設置為5,即用前五天的數(shù)據(jù)來預測第六天的數(shù)據(jù),學習率設置為0.001,Batch_size訓練批次大小設置為12,Epoch訓練次數(shù)設置為1 000。GRU模型也使用的PyTorch學習庫進行搭建,設置模型單特征輸入的輸入層數(shù)input_size為1,多特征輸入的輸入層數(shù)input_size為5,隱藏層數(shù)hidden_size設置為16,輸出層數(shù)output_size設置為1,層數(shù)num_layers設置為1,時間步長Sequence設置為5,學習率設置為0.001,Batch_size訓練批次大小設置為12,Epoch訓練次數(shù)設置為1 000。
2.2? 實驗數(shù)據(jù)及模型評價指標
本次實驗使用的兩個數(shù)據(jù)集分別是:1)廈門港務股票2020年10月1日至2022年10月20日之間的歷史交易數(shù)據(jù);2)上證指數(shù)2021年3月31日至2023年4月12日之間的歷史交易數(shù)據(jù)。每個數(shù)據(jù)集選取收盤價作為單特征輸入,同時選取開盤價、收盤價、最高價、最低價和交易量共5個指標作為多特征輸入。本次實驗將數(shù)據(jù)集以7:3的標準劃分為訓練集和測試集,檢查是否存在異常值和缺失值,對數(shù)據(jù)分量按如下公式進行歸一化處理:
其中xmax為樣本分量最大值,xmin為最小值;歸一化后的數(shù)據(jù)值在[0,1]內。
作為神經(jīng)網(wǎng)絡預測模型性能評價,選取如下評價指標:
MAE平均絕對誤差指標為:
MSE均方誤差指標為:
RMSE均方根誤差指標為:
MAPE平均絕對百分比誤差指標為:
R2擬合優(yōu)度指標為:
其中m為數(shù)據(jù)集的長度,yi為在i時刻的真實值, 為在i時刻的預測值。
2.3? 實驗結果及分析
利用LSTM和GRU兩個深度神經(jīng)網(wǎng)絡模型分別對廈門港務和上證指數(shù)的股票收盤價進行預測,分別畫出股票價格的真實值(true)、LSTM模型的預測值和GRU模型的預測值的折線圖,結果如圖3~4所示。
圖3? 廈門港務股票價格的預測結果
圖4? 上證指數(shù)股票價格的預測結果
從圖3~4可看出,LSTM和GRU兩個深度神經(jīng)網(wǎng)絡模型的預測值與股票價格的真實值是較為貼合的,且預測值與真實值之間的誤差較小。
為了對LSTM和GRU兩個模型的預測能力進行更充分的評價,下面分別計算MAE、MSE、RMSE、MAPE和R2指標值,如表1~4所示。
表1? 多特征輸入時廈門港務股票價格預測評價結果
預測模型 MAE MSE RMSE MAPE R2
LSTM 0.056 6 0.006 7 0.081 7 0.121 5 0.706 7
GRU 0.050 1 0.005 5 0.074 0 0.107 6 0.759 7
表2? 單特征輸入時廈門港務股票價格預測評價結果
預測模型 MAE MSE RMSE MAPE R2
LSTM 0.061 0 0.007 1 0.084 2 0.125 5 0.688 5
GRU 0.055 2 0.006 0 0.077 6 0.115 4 0.735 5
表3? 多特征輸入時上證指數(shù)股票價格預測評價結果
預測模型 MAE MSE RMSE MAPE R2
LSTM 0.027 2 0.001 3 0.035 4 0.157 6 0.921 4
GRU 0.029 9 0.001 5 0.038 3 0.209 9 0.907 8
表4? 單特征輸入時上證指數(shù)股票價格預測評價結果
預測模型 MAE MSE RMSE MAPE R2
LSTM 0.025 3 0.001 1 0.032 9 0.174 2 0.932 2
GRU 0.026 5 0.001 2 0.034 4 0.187 7 0.925 8
由表1~4可觀察到:1)LSTM和GRU兩個模型的在指標MAE、MSE、RMSE和MAPE上的值都接近于0,并且在擬合優(yōu)度指標R2上的值都接近于1;
2)兩個模型之間各項評價指標的差距都很?。?)在廈門港務股票數(shù)據(jù)上,多特征輸入時的評價結果優(yōu)于單特征輸入時評價結果,而在上證指數(shù)股票數(shù)據(jù)上,單特征輸入時的評價結果優(yōu)于多特征輸入時的評價結果。
3? 結? 論
股票價格受多方面因素影響,包括宏觀經(jīng)濟、政治因素、公司運營和投資者的信心等,因此很難做到準確預測。隨著近年來深度學習的發(fā)展,本文嘗試使用LSTM和GRU兩個典型深度神經(jīng)網(wǎng)模型來進行股票價格預測。通過5個常用的MAE、MSE、RMSE、MAPE和R2評價指標值,我們獲得了一些經(jīng)驗結論:1)LSTM和GRU的預測效果都較好,這表明循環(huán)神經(jīng)網(wǎng)絡善于捕捉時間序列中的相關信息;2)LSTM和GRU的在各評價指標上相差較小,這與二者的模型結構相似有關;3)對于波動較大的廈門港務股票數(shù)據(jù),多特征輸入時的評價結果優(yōu)于單特征輸入時評價結果,這表明遇到波動較大的數(shù)據(jù)集時多特征輸入更有效;對于波動較小的上證指數(shù)股票數(shù)據(jù),單特征輸入時的評價結果優(yōu)于多特征輸入時評價結果,這表明遇到波動較小的數(shù)據(jù)集時模型不需要太多的特征輸入來獲得信息。
參考文獻:
[1] SINGH N,KHALFAY N,SONI V,et al. Stock Prediction Using Machine Learning a Review Paper [J].International Journal of Computer Applications,2017,163(5):36-43.
[2] 吳玉霞,溫欣.基于ARIMA模型的短期股票價格預測 [J].統(tǒng)計與決策,2016(23):83-86.
[3] 楊琦,曹顯兵.基于ARMA-GARCH模型的股票價格分析與預測 [J].數(shù)學的實踐與認識,2016,46(6):80-86.
[4] 徐楓.股票價格預測的GARCH模型 [J].統(tǒng)計與決策,2006(18):107-109.
[5] 彭麗芳,孟志青,姜華,等.基于時間序列的支持向量機在股票預測中的應用 [J].計算技術與自動化,2006(3):88-91.
[6] 張瀟,韋增欣.隨機森林在股票趨勢預測中的應用 [J].中國管理信息化,2018,21(3):120-123.
[7] 喬若羽.基于神經(jīng)網(wǎng)絡的股票預測模型 [J].運籌與管理,2019,28(10):132-140.
[8] 谷麗瓊,吳運杰,逄金輝.基于Attention機制的GRU股票預測模型 [J].系統(tǒng)工程,2020,38(5):134-140.
[9] 楊麗,吳雨茜,王俊麗,等.循環(huán)神經(jīng)網(wǎng)絡研究綜述 [J].計算機應用,2018,38(S2):1-6+26.
[10] 尹寶才,王文通,王立春.深度學習研究綜述 [J].北京工業(yè)大學學報,2015,41(1):48-59.
[11] 張軍陽,王慧麗,郭陽,等.深度學習相關研究綜述 [J].計算機應用研究,2018,35(7):1921-1928+1936.
[12] 鄭遠攀,李廣陽,李曄.深度學習在圖像識別中的應用研究綜述 [J].計算機工程與應用,2019,55(12):20-36.
作者簡介:孫震宇(1999—),男,漢族,江蘇鎮(zhèn)江人,本科,研究方向:機器學習。