王源 李俊剛
摘要:近年來,隨著股票市場(chǎng)的不斷發(fā)展,包含大量股票價(jià)格信息的數(shù)據(jù)庫(kù)也越來越被重視,對(duì)于股票預(yù)測(cè)方法的探索也從未中斷。文章通過對(duì)上證指數(shù)的歷史數(shù)據(jù)進(jìn)行收集,采用移動(dòng)平均法、自回歸綜合移動(dòng)平均、長(zhǎng)短期記憶網(wǎng)絡(luò)三種算法對(duì)股票走勢(shì)進(jìn)行預(yù)測(cè),判斷哪種算法預(yù)測(cè)的精確度最高。實(shí)驗(yàn)證明,LSTM算法的擬合程度更高,均方根誤差 RMSE 最小。該算法能夠通過學(xué)習(xí)股票歷史數(shù)據(jù)的變化,利用其內(nèi)部的選擇記憶性,更準(zhǔn)確地實(shí)現(xiàn)短期股票的預(yù)測(cè)。
關(guān)鍵詞:移動(dòng)平均法;自回歸綜合移動(dòng)平均; 長(zhǎng)短期記憶網(wǎng)絡(luò)
一、引言
我國(guó)股票市場(chǎng)經(jīng)過 30 多年的發(fā)展, 形成了一個(gè)龐大的股票信息數(shù)據(jù)庫(kù),股票市場(chǎng)變化規(guī)律的掌握、股票市場(chǎng)走勢(shì)的預(yù)測(cè),成為投資者們關(guān)注的焦點(diǎn),投資者們?nèi)裟軐?duì)股價(jià)進(jìn)行較為準(zhǔn)確的預(yù)測(cè),便能夠使得所作決策更為正確,這樣可以大大降低虧損的風(fēng)險(xiǎn),進(jìn)而使得收益最大化。因此,探索股票市場(chǎng)中的規(guī)律變得越來越重要。本文用三種不同的模型分別預(yù)測(cè)股票市場(chǎng)走勢(shì),通過對(duì)比來探索不同模型的優(yōu)缺點(diǎn)及準(zhǔn)確度,得出預(yù)測(cè)最為精確的模型。
首先,根據(jù)1990年12月20日至2020年4月30日股票收盤價(jià)做出現(xiàn)階段上證指數(shù)走勢(shì)圖(見圖1),發(fā)現(xiàn)股票收盤價(jià)隨起伏波動(dòng),但其長(zhǎng)期趨勢(shì)呈下降趨勢(shì)。根據(jù)上證指數(shù)7178條觀測(cè)值,按照4:1劃分,將1990年12月20日起之后的5742條觀測(cè)為訓(xùn)練集,測(cè)試集為剩下的1436條觀測(cè)。分別用三種模型對(duì)其走勢(shì)進(jìn)行預(yù)測(cè),并進(jìn)行評(píng)估。
二、移動(dòng)平均法對(duì)股票價(jià)格走勢(shì)預(yù)測(cè)
(一)理論介紹
在日常生活中,雖然算術(shù)平均法能夠代表某類數(shù)據(jù)的平均水平,但該法對(duì)數(shù)據(jù)變化趨勢(shì)的反應(yīng)卻不是那么的明顯。有時(shí)候,某些蘊(yùn)含時(shí)間序列的數(shù)據(jù)往往會(huì)受到周期變動(dòng)和隨機(jī)變動(dòng)的影響,因此數(shù)據(jù)的起伏會(huì)比較大,其發(fā)展變化趨勢(shì)也不能夠清晰地展現(xiàn)出來,所以在基于算術(shù)平均的基礎(chǔ)上逐漸發(fā)展出移動(dòng)平均法,通過移動(dòng)平均來消除此類因素的影響,進(jìn)而顯示時(shí)間序列長(zhǎng)期的發(fā)展趨勢(shì)。在此次預(yù)測(cè)中,假設(shè)每一期的數(shù)據(jù)在計(jì)算過程中具備的作用相同,所以使用移動(dòng)平均中的一次移動(dòng)平均來進(jìn)行計(jì)算。
一次移動(dòng)平均即取時(shí)間序列的N個(gè)觀測(cè)值,并加以平均,然后依次滑動(dòng)到將所有的數(shù)據(jù)計(jì)算完畢,這樣便會(huì)得到一個(gè)平均值序列。
設(shè)時(shí)間序列為y1,y2,…,yn;n為樣本容量
則其計(jì)算公式為:
M■■=■(t≥N)(1)
其中:M■■為第t期的一次移動(dòng)平均值;
N是移動(dòng)平均的項(xiàng)數(shù)(也稱步長(zhǎng))。
由以上計(jì)算可以得到一個(gè)時(shí)間序列的移動(dòng)平均序列。并且可以看出移動(dòng)平均的作用在于將其他因素的干擾消除掉進(jìn)而將數(shù)據(jù)進(jìn)行修勻使其平滑,所以移動(dòng)平均相比于算術(shù)平均更能顯露時(shí)間序列的長(zhǎng)期趨勢(shì),進(jìn)而可用于趨勢(shì)分析及預(yù)測(cè)。
通常來說,假如時(shí)間序列的周期性變化和趨勢(shì)性變化不是那么明顯,則可以用某期的一次移動(dòng)平均值作為下一期的預(yù)測(cè)值,其預(yù)測(cè)模型為:
y^t+1=M■■(2)
式(2)中,y^t+1代表第t+1期的一次移動(dòng)平均值。
利用一組先前觀測(cè)值的平均值作為每天的預(yù)期收盤價(jià),對(duì)于后續(xù)每個(gè)新時(shí)間,在考慮預(yù)測(cè)值時(shí),都從集合中刪除最早的觀測(cè)值,并加入上一個(gè)觀測(cè)值。步驟示意如圖2所示。
(二)預(yù)測(cè)結(jié)果圖并進(jìn)行分析
利用移動(dòng)平均法對(duì)上證指數(shù)進(jìn)行擬合,擬合結(jié)果如圖3所示。
均方根誤差也成為標(biāo)準(zhǔn)誤差,定義為i=1,2,3,…n,在有限測(cè)量次數(shù)中,均方根誤差的表達(dá)式為Re=■,n為測(cè)量次數(shù),di為測(cè)量值和真實(shí)值的偏差。
計(jì)算得出RMSE值近似793,且從圖3中可以看出,測(cè)試集的走勢(shì)為先緩慢下降,然后平穩(wěn)。而實(shí)際的數(shù)據(jù)走勢(shì)是先平穩(wěn)再上升,現(xiàn)階段有下降趨勢(shì)。擬合效果不是很理想。
三、自回歸綜合移動(dòng)平均(ARIMA)對(duì)股票價(jià)格走勢(shì)預(yù)測(cè)
(一)理論介紹
自回歸綜合移動(dòng)平均(ARIMA)是一種時(shí)間序列模型。ARIMA模型建模本質(zhì)上是一種面向數(shù)據(jù)的探索性方法,ARIMA模型本身具有一定的靈活性,還有適應(yīng)數(shù)據(jù)本身結(jié)構(gòu)的適當(dāng)性。通過偏自相關(guān)函數(shù)和自相關(guān)函數(shù),可以近似地模擬出時(shí)間序列的隨機(jī)性質(zhì)。并從中發(fā)現(xiàn)隨機(jī)變換、趨勢(shì)、周期模式和周期分量及序列相關(guān)等方面的信息,并在一定精度水平上對(duì)未來值進(jìn)行預(yù)測(cè)。
ARIMA模型的表達(dá)式為:
Yt-φ0-φ1Yt-1- …-φpYt-p=at-θ1at-1-…-θqat-p(3)
其中,at,at-1,…at-p是均值為0,方差為ε2的平穩(wěn)白噪聲。φ1,φ2,…φp是自回歸系數(shù),θ1,θ2,…θp是移動(dòng)平均系數(shù)。p和q分別是自回歸模型和移動(dòng)平均模型的階數(shù),模型被命名為具有模型自回歸階p和模型移動(dòng)平均階q的自回歸移動(dòng)平均序列,簡(jiǎn)稱ARMA(p,q)。
當(dāng)q=0時(shí),為AR(p)序列;
當(dāng)p=0時(shí),為MA(q)序列;
ARIMA模型處理的時(shí)間序列都是平穩(wěn)過程的,如果分析的序列不是平穩(wěn)的,那要讓其平穩(wěn),一般來說較為常用的就是對(duì)不平穩(wěn)的原始時(shí)間序列進(jìn)行差分運(yùn)算,這樣就會(huì)得到一個(gè)ARIMA(p,d,q)模型, 其中d表示差分的階數(shù)。
(二)預(yù)測(cè)結(jié)果及其分析
本文在進(jìn)行股票價(jià)格指數(shù)ARIMA模型預(yù)測(cè)的時(shí)候,將所有觀測(cè)值同樣分為8:2,并進(jìn)行劃分訓(xùn)練集和測(cè)試集。訓(xùn)練集共5742個(gè)觀測(cè),測(cè)試集1436個(gè)觀測(cè)。選用SPSS軟件操作,具體步驟如下:
1. 導(dǎo)入日期和收盤價(jià)兩列訓(xùn)練集數(shù)據(jù)。
2. 排除季節(jié)成分影響。對(duì)訓(xùn)練集繪制序列圖,如圖4所示,所得結(jié)果可以看出該數(shù)據(jù)中不含有明顯的季節(jié)成分,所以沒必要做季節(jié)的分解。
3. 判斷是否平穩(wěn)。在用ARIMA分析時(shí),需要保證序列是平穩(wěn)的,因此需要對(duì)數(shù)據(jù)進(jìn)行平穩(wěn)性分析。根據(jù)序列自相關(guān)圖(圖5)和偏自相關(guān)圖(圖6)進(jìn)行分析序列的平穩(wěn)性。從中可以看出,序列自相關(guān)和偏自相關(guān)圖都是拖尾的。說明序列是非平穩(wěn)的。對(duì)于非平穩(wěn)序列,通過差分進(jìn)一步分析。
4. 一階差分d=1,判斷平穩(wěn)性。從圖7中可以看出,差分序列基本上均勻地排列在0刻度線上下。
同時(shí)做一階差分后的自相關(guān)圖(圖8)和偏自相關(guān)圖(圖9),也可以判斷序列是平穩(wěn)狀態(tài)的,可以進(jìn)行后續(xù)分析。
5. 確定ARIMA模型中p、q值。經(jīng)過反復(fù)試驗(yàn),以AIC準(zhǔn)則數(shù)值最小的原則,當(dāng)p=1,d=1,q=1時(shí),AIC的值為10.131,確定模型為ARIMA(1,1,1)。
6. 建立ARIMA(1,1,1)模型,同時(shí)對(duì)訓(xùn)練集進(jìn)行擬合,圖10中,UCL指預(yù)測(cè)上限,LCL指預(yù)測(cè)下限。從中可以看出,擬合程度較好。同時(shí),ARIMA模型的參數(shù)結(jié)果見表1。
根據(jù)參數(shù)值,可以確定模型的表達(dá)式為
ΔX■=X■-X■ΔX■=22.735-0.917(ΔX■-22.735)+ε-0.932ε■(4)
接下來,將表達(dá)式應(yīng)用到剩余1436個(gè)測(cè)試集身上,求出擬合值。并將原始觀測(cè)值和擬合值對(duì)比,計(jì)算得出均方根誤差RMSE=1396.527。
四、長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)模型對(duì)股票價(jià)格走勢(shì)預(yù)測(cè)
(一)理論介紹
長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)模型是在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的基礎(chǔ)上擴(kuò)展出來的。RNN由于其記憶的短期性,不能解決長(zhǎng)輸入序列的信息傳遞問題,內(nèi)部構(gòu)造比較簡(jiǎn)單,所需的計(jì)算資源比LSTM少很多。圖11表示LSTM的一個(gè)cell,從圖中看出,核心為cell的狀態(tài)和控制門,可以保留有用的信息在cell中,移除無用的信息。
Sigmoid函數(shù):sigmoid層的輸出約束在0~1之間。目的是幫助保留信息或者移除信息。假如為0,意味著不讓任何東西通過,即移除;反之,若為1則意味著通過,所以保留;中間數(shù),根據(jù)數(shù)值大小能體現(xiàn)數(shù)據(jù)的重要性。
Tanh 函數(shù):主要是用來調(diào)節(jié)流經(jīng)網(wǎng)絡(luò)的值,將值約束在[-1,1]之間。
遺忘門:LSTM的第一步?jīng)Q定從單元中狀態(tài)中拋棄什么信息。由遺忘門完成。該門會(huì)讀取前一個(gè)隱藏狀態(tài)和當(dāng)前輸入,輸出一組對(duì)應(yīng)前一個(gè)單元狀態(tài)中數(shù)字 的[0,1]之間的權(quán)值,0是完全遺忘,1則代表完全保留。
輸入門:LSTM接下來是確定被存放在單元狀態(tài)中的是怎樣的新信息。由輸入門完成。先是隱藏狀態(tài)和當(dāng)前輸入傳輸給Sigmoid函數(shù),由該函數(shù)計(jì)算出哪些值更為重要。與此同時(shí)也把上面的值傳遞給tanh函數(shù),把向量的值約束在-1~1之間,防止數(shù)值過大。然后與Sigmoid門輸出值相乘,從而輸出最終的值。
cell 狀態(tài):第一步先將之前的隱藏狀態(tài)和遺忘門輸出的向量進(jìn)行點(diǎn)乘。接著將前面的輸出和輸入門的輸出點(diǎn)乘,這樣一來,輸出的就是更新后的單元狀態(tài)。
輸出門:它決定了下一個(gè)隱藏狀態(tài)。上面是單元狀態(tài),下面是隱藏狀態(tài)。有關(guān)先前輸入的信息都包含在隱藏狀態(tài)中,基于此,神經(jīng)網(wǎng)絡(luò)才具備預(yù)測(cè)能力。
(二)預(yù)測(cè)結(jié)果及其分析
根據(jù)長(zhǎng)短期記憶模型(LSTM)對(duì)上證指數(shù)進(jìn)行擬合,擬合結(jié)果如圖12所示。從中可以看出,測(cè)試集擬合程度較高,對(duì)比移動(dòng)平均和自回歸綜合移動(dòng)平均兩種算法來說,當(dāng)前LSTM算法是最優(yōu)的。對(duì)于RMSE均方根誤差的計(jì)算值近似為67.142,也是偏離程度最小的。
五、結(jié)論及建議
本文從簡(jiǎn)單模型開始,然后轉(zhuǎn)向高級(jí)模型,通過對(duì)比移動(dòng)平局、自回歸綜合移動(dòng)平均、長(zhǎng)短期記憶網(wǎng)絡(luò)三種算法模型的結(jié)果,在三種預(yù)測(cè)模型中,長(zhǎng)短期記憶模型(LSTM)相比較其他兩種模型能更準(zhǔn)確地實(shí)現(xiàn)短期股票的預(yù)測(cè),當(dāng)然,預(yù)測(cè)股票價(jià)格走勢(shì)僅依靠收盤價(jià)是遠(yuǎn)遠(yuǎn)不夠的,針對(duì)本文的模型預(yù)測(cè)總結(jié)出以下幾點(diǎn)不足。
第一,移動(dòng)平均法未考慮權(quán)重的影響。一次移動(dòng)平均是假設(shè)每一期的數(shù)據(jù)在移動(dòng)平均值中的作用是相等的,因此對(duì)每期數(shù)據(jù)賦予的權(quán)重是相等的,但實(shí)際上每一期的數(shù)據(jù)都包含著不同的數(shù)據(jù)信息量,近期的數(shù)據(jù)包含的信息可能比遠(yuǎn)期數(shù)據(jù)要多,但是在實(shí)際計(jì)算中并沒有將這方面因素考慮進(jìn)去的,沒有對(duì)不同期的數(shù)據(jù)按照其包含信息量的不同對(duì)其賦予不同的權(quán)重。
第二,移動(dòng)平均法未對(duì)步長(zhǎng)的選取進(jìn)行試算。通常來說,在使用移動(dòng)平均法進(jìn)行預(yù)測(cè)時(shí),既希望模型的平滑能力要盡可能強(qiáng),進(jìn)而可以更好地抵消各種因素的干擾,顯示出規(guī)律性,同時(shí)又希望預(yù)測(cè)值能夠靈敏地反映出數(shù)據(jù)變化,以便于預(yù)測(cè)值不要滯后太多,但這兩者不能同時(shí)兼顧到,因?yàn)橐诡A(yù)測(cè)值能很快跟上數(shù)據(jù)的變化,就必然要帶進(jìn)更多的隨機(jī)誤差。
通常情況下,N在時(shí)間序列的變化趨勢(shì)比較穩(wěn)定時(shí),取值適合大一些,反之,在有明顯變化及其波動(dòng)時(shí),N的選取宜小一些,有時(shí)常常會(huì)使用試算法,來確定合適的N,在本次預(yù)測(cè)中選取了測(cè)試集的容量為步長(zhǎng)進(jìn)行移動(dòng)平均,對(duì)步長(zhǎng)的選取并沒有進(jìn)行試算。
第三,ARIMA模型對(duì)長(zhǎng)期預(yù)測(cè)效果不好。ARIMA模型在對(duì)許多時(shí)間序列都適用,其優(yōu)點(diǎn)在于模型簡(jiǎn)單無需借助其他外生變量,缺點(diǎn)是對(duì)短期預(yù)測(cè)效果較好,但隨著時(shí)間的延長(zhǎng)其預(yù)測(cè)誤差就比較大了。本次測(cè)試集含有1436個(gè)數(shù)據(jù)集,年限跨度從2014年6月13日至2020年4月30日,時(shí)間跨度比較長(zhǎng)。
第四,影響價(jià)格走勢(shì)因素考慮比較單一。影響股票價(jià)格走勢(shì)的因素有很多,宏觀、公司、行業(yè)和區(qū)域均是影響股票價(jià)格走勢(shì)的因素,雖然目前來看LSTM算法是相對(duì)來說最優(yōu)的,但是這一預(yù)測(cè)并不能足以確定股票是上漲還是下跌的。因?yàn)楣蓛r(jià)受到公司新聞和其他因素的影響,如公司的非貨幣化、合并或者拆分,還有一些無形的因素往往是無法實(shí)現(xiàn)預(yù)測(cè)的。
參考文獻(xiàn):
[1]張桂喜,馬立平.預(yù)測(cè)與決策概論(第三版)[M].北京:首都經(jīng)濟(jì)貿(mào)易大學(xué)出版社,2013:42-45.
[2]CUI Yujie;XI Qipu;HAO Junzhang.Analysis of Shanghai Composite Index Variation Based on Regression Analysis[J].Higher Education of Social Science,2014(12):118-122.
[3]許舒雅,梁曉瑩.基于ARIMA-GARCH模型的股票價(jià)格預(yù)測(cè)研究[J].河南教育學(xué)院學(xué)報(bào)(自然科學(xué)版),2019,28(04):20-24.
[4]白營(yíng)閃.基于ARIMA模型對(duì)上證指數(shù)的預(yù)測(cè)[J].科學(xué)技術(shù)與工程,2009,9(16):4885-4887.
[5]黃子建,劉媛華.長(zhǎng)短期記憶模型在股票價(jià)格趨勢(shì)預(yù)測(cè)應(yīng)用研究[J].財(cái)政與金融,2020(01):36-38.
*本文受北京市屬高?;究蒲袠I(yè)務(wù)費(fèi)(No.110052971921/103)和北京市教委基本科研業(yè)務(wù)費(fèi)(No.KM202010009013)資助。
(作者單位:北方工業(yè)大學(xué)理學(xué)院)