馬元昊


摘要:該文針對股票價格預測課題分析了循環神經網絡在這一領域的可行性。通過結合結合長短期記憶,基于Tensorflow平臺搭建了多層LSTM模型對上證綜指進行了短期預測,通過不斷優化得到了非常好的預測準確率。
關鍵詞:股票大盤;LSTM;短期預測
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2020)05-0205-02
開放科學(資源服務)標識碼(OSID):
金融市場中股票的預測一直是一個經久不衰的研究課題,引起了著來自各個學術領域的學者和業界人士的關注[1-2]。股票市場因為其蘊含巨大的商業價值而提供了巨大的吸引力,對于股票市場的預測由于股票數據的非線性、時間序列、價值導向、強波動性等特性而產生了而產生了很大的困難。同時由于股票市場受到眾多外界因素和干擾項的影響,其中包括公司財務狀況,國家政策導向,社交輿論影響等,因此可以將股票市場看作是一個錯綜復雜的非線性動態系統,很難用常規的方法預測其趨勢變化。近年來由于機器學習的興起,多種機器學習算法,如神經網絡,遺傳算法,支持向量機,KNN等,都被用于預測股票價格[3-5]。LSTM作為最成功的RNN架構之一,對于股票趨勢這種有著一定周期規律的預測有著很好的效果。LSTM型循環神經網絡解決了神經網絡存在的梯度消亡現象[6]。LSTM引入了存儲器單元,這是一種計算單元,可替代網絡隱藏層中的傳統人工神經元。利用這些存儲器單元,網絡能夠及時有效地關聯存儲器和遠程輸入,因此適合于隨著時間的推移以高預測能力動態地掌握數據結構。本文使用LSTM基于TensorFlow平臺對中國股票上證指數進行了建模和預測。本文選取了上證綜指的交易數據(日數據):開盤價、最高價、最低價、收盤價、交易量、交易額、漲跌幅七個維度的特征數據作為輸入因子,同時為了判斷模型的預測準確率,加入了股票代碼、時間和后一個交易日該股票的收盤價,通過計算(預測收盤價一實際收盤價)/實際收盤價來得到準確率。通過對58000個序列的訓練擬合該模型,并使用其他9900個序列進行測試。預測準確率達到了97.80087040351719%,說明應用LSTM神經網絡預測上證大盤指數有著相當不錯的效果。
1 方法
在我們用于股票預測的LSTM模型中,一個序列被定義為固定時間段(N天)內任上證指數的每日數據集的順序收集。每日數據集包含具有序列學習能力的股票的特征,例如收盤價,這些N天中某一天的交易量等。我們的模型由一個輸入層,多個LSTM層,密集層以及單個輸出層組成。其中輸出層存儲單元的數量與序列可保持的學習特征數量一樣。上證指數的58000條數據作為訓練集,9900條數據作為測試集。獲取和預處理訓練集,將數據標準化,將數據處理為20*7*5800的矩陣作為輸入,同時以batch_size=60的大小記錄每一個batch的初始index。以同樣的方式處理測試集,只是在返回值中需要包括平均值矩陣和方差值矩陣,因為在最后計算誤差時需要恢復原數據的范圍,從而比對預測值和真實值的距離。
class LSTMO:
def hidden_layer(self, inputs, feature_num, cell_num, lay-er_num,BATCH_SIZE,TIMESTEP):
def lstm_cell0:
cell=tf.nn.rnn_cell.BasicLSTMCell(cell_num)
return t£nn. rnn_cell. DropoutWrapper(cell, LSTM_ KEEP_PROB)
cell=tf.contrib.rnn.MultiRNNCell([
lstm_cello for一in range(layer_num)
】, state_is_tuple=True)
具體代碼如下:
def
train_model(self, BATCH_SIZE, TIMESTEP, train_begin,train_end Ji,feature_num,cell_num,layer_num,globaLsteps):
with tf.name_scope('inputs 7):
inputs=tf. placeholder(tf. float32, shape= [None, TIMESTEP, fea-ture_num],name=7i
nputs)
labels=tf. placeholder(tf. float32, shape= [None, TIMESTEP,1】,name='Iabels')
data=get_datao
index, train_x, train_y=data. get_train_data(BATCH_SIZE,TIMESTEP,train_begin,tra
in end
with tf.variable_scope( "Istm_layer"):
pred,~=self. hidden_layer(inputs, feature_num, cell_num, lay-er_num,BATCH_S
IZE,TIMESTEP)
在LSTM中,選擇序列的學習特征至關重要[7]。由于股票數據種類較多,包含了日數據、周數據等不同時間跨度的數據以及輔助預測而產生的數據例如日線k線等,這里我們選用以下兩組:
(1)上證綜指的交易數據(日數據):開盤價、收盤價、日內最高價、日內最低價、交易量、交易額;
(2)上證綜指的財務數據(日數據):歷史PEC、市盈率、市現率PCF、市銷率PSc8]。
我們期望LSTM的序列學習能力將為我們找到最佳參數。在目前的研究中,一個序列有60天的股價數據,每個每日數據有10個特征。
2 實驗
原始數據:本實驗中選取的是上證指數中股票代碼為sh000001的上證綜指股票從1990/12/20到2018/10/17共6790日數據??倲祿笮?0*6790,即一共有67900個交易日該股票的數據,每一個交易日的數據包括10個維度。具體包括:股票代碼,交易時間,開盤價,收盤價,最低價,最高價,交易量,交易額,漲跌幅;處理訓練和測試的輸入集和輸出對比集,對各因子的數據進行z-score標準化讓不同因子的數據的范圍相近,確保各因子的數據不會因為取值范圍之差導致一些因子在模型訓練中不起作用。
訓練細節:本實驗在Windows系統下進行,主要配置參數為Window 10 x64, 8.00 CB運行內存,Intel i5-5200 CPU.并用Python進行程序設計。我們選擇應用TensorFlow作為深度學習平臺。使用pandas和numpy進行數據獲取和處理。數據來源于tushare。神經網絡層數為2,批量大小為60,神經細胞個數為15,學習率初始定為0.0006,迭代次數為1000,時間步長為20,閾值為0.95,優化器為自適應矩估計。
實驗結果:本實驗預測的是后一日的收盤價,為了判斷模型的預測準確率,通過計算(預測收盤價一實際收盤價)/實際收盤價來得到準確率,同時以折線圖的形式比對預測值和實際值的偏差。通過反復的參數調整和模型微調,最終對上證綜指數據集的最佳預測正確率為:97.80087040351719%。
圖1展示了實驗結果。
3 總結
本文采用了高階的深度學習平臺TensorFlow,實驗數據來源于股票代碼為sh000001上證綜指從1990/12/20到2018/10/17的日線數據,目的是通過歷史數據預測下一日的股票收盤價格。通過將原數據預處理后劃分為訓練集和測試集,避免訓練集和測試集交叉而導致過擬合問題。實驗過程搭建了一個多層LSTM模型,通過反復調參和局部優化得到了一個十分理想的數據,最終僅通過1000次迭代達到了97.8%的正確率,這個結果證明可以很好地預測出上證指數的后一日收盤價,在選擇股票分析時,這非常有用,對于股票實操有很好的指導意義。本文證明了LSTM在中國股票市場預測上證指數上有著強大的功能,相應的對于股市中的個股預測也能起到一定作用。
參考文獻:
[1]王波,程福云.KNN算法在股票預測中的應用[J].科技創業月刊,2015,28(16):25-26.
[2]傅航聰,張偉,機器學習算法在股票走勢預測中的應用[J].軟件導刊,2017,16(10):31-34,46.
[3] Krollner, Bjoern, Bruce Vanstone, and Gavin Finnie. "Finan-cial time series forecasting with machine learning techniques:A survey,2010.
[4] Agrawal J G V S.Chourasia. and A.K.Mittra. "State-of-the-art in stock prediction techniques.”International Journal ofAdvanced Research in Electrical, Electronics and Instrumenta-tion Engineering 2.4,2013: 1360-1366.
[5] Lipton, Zachary C."A Critical Review of Recurrent NeuralNetworks for Sequence Learning.‘ arXiv preprint arXiv:1506.00019,2015.
[6] Saad, Emad W., Danil V.Prokhorov, and Donald C.Wunsch.”Comparative study of stock trend prediction using time delay, recurrent and probabilistic neural networks." Neural Networks,IEEE Transactions on 9.6 (19981: 145 6-1470.
[7] Christopher Olah, Understanding Long Short Term MemoryNetworks, August 27,2015.
[8]謝家泉,謝偉梁,房地產上市公司財務綜合評價研究[J].金融經濟,2013(2):165-166.
[通聯編輯:唐一東】