劉力軍 梁國鵬



摘? 要:隨著計算機科學技術的快速發展,人工智能在各個領域的應用也越來越廣泛,其與各個學科技術相結合,已成為各領域人士關注的焦點。將人工智能應用于量化交易,通過搭建不同的神經網絡模型,對股票歷史數據進行挖掘,找到股票歷史價格與未來價格的非線性關系,實現對未來價格的預測,早已成為歷史發展的必然趨勢。通過對機器學習展開研究,基于LSTM神經網絡實現股票預測模型,為投資者提供參考從而帶來更高的收益。
關鍵詞:人工智能;神經網絡;量化交易
中圖分類號:TP18? ? ? ? ?文獻標識碼:A文章編號:2096-4706(2022)04-0045-03
Design and Implementation of Quantization Trading System Based on
Artificial Intelligence
LIU Lijun, LIANG Guopeng
(Nanjing Audit University Jinshen College, Nanjing? 210023, China)
Abstract: With the rapid development of computer science and technology, the application of artificial intelligence in various fields has become more and more extensive, and its combination with various disciplines and technologies has become a focus of attention of people in various fields. Applying artificial intelligence to quantization trading, through building different neural network models, mining historical stock data, finding the nonlinear relationship between stock historical prices and future prices, and realizing the prediction of stock price have long become an inevitable trend in historical development. This paper conducts research on machine learning and implements a stock prediction model based on LSTM neural network to provide investors with reference to bring higher returns.
Keywords: artificial intelligence; neural network; quantization trading
0? 引? 言
其實傳統交易和量化交易最主要的核心是要有賺錢的本事,量化無非是把這些本事經驗總結出一套規律,根據這個規律寫成代碼讓機器執行。量化交易就是根據對歷史行情的進行回測,總結出一定的交易規律,即什么情況下應該如何交易,找到適合某只股票的最優策略,根據這種策略或規律來進行自動化交易獲得更大收益。
隨著計算機技術的不斷發展,依托機器學習技術研究股票市場變化規律方興未艾,借助于線性回歸、支持向量機等機器學習算法對股票市場進行分析并建立模型[1],預測股票市場未來一段時間的走勢已成為市場的一個趨勢。
1? 人工智能相比于傳統量化投資的優勢
傳統的量化交易策略往往通過建立數學模型實現,在股票市場中試圖尋找到規律所在,但市場是千變萬化的,找到的規律可能也只是暫時的,通過這樣的方式進行交易,在市場穩定的時候會有客觀的收益,市場一旦不穩定或有其他的狀況收益就會急劇減少,甚至產生虧損。人工智能更加強調一個學習的過程,通過AI算法,學習投資過程中的邏輯,將行業、市場、歷史數據等因素融入投資模型的載體,在此基礎上進行投資組合管理。總的來說,人工智能投資是在人類訓練、知識灌輸以及自我演化的過程中,形成機器自己的投資決策。
2? 研究現狀
2.1? 國內
國內量化交易市場還處于發展初期的階段,目前期貨市場方面已經有了一定的運用和積累,在證券市場的運用還處在剛剛起步的階段。隨著近年來人工智能的深入發展,機器學習技術在程序化交易中起著越來越重要的作用,它主要著眼于解決線性模型的缺陷和弊端。
2018年,任君等通過對比實驗證明了經過改進后的彈性網正則化LSTM模型,對道瓊斯指數具有更加良好的預測效果,而且RMES最小,模型精度最好[2]。
2.2? 國外
國外的量化交易發展比較早,量化投資的技術從各方面都要遠超于陳舊的投資方式,已經達到了可以在秒內進行投資交易的程度[3]。在機器學習的應用方法上,國外的研究以構造量化交易投資策略為主,早在20世紀,就有利用機器學習對股票進行預測的嘗試。其技術儲備量十分充足,所運用的策略模型和研究水平均高于國內,此外還不斷有計算機科學、數學等學科的專家從事量化交易相關技術的研究,量化交易技術的發展也在不斷地加速。
2016年,狄克遜,迭戈·克拉巴揚和金勛邦等人提出基于深度學習的深層神經網絡的金融市場預測,在5分鐘間隔之內對43中不同的商品和外匯期貨的價格進行的簡單交易策略驗證[4]。BF31ABF1-A5C5-4197-9858-2C569ACF40C2
3? 相關技術
3.1? 開發語言
本系統采用Python語言開發,Python語言具有簡單易上手且功能強大等特點,是當今主流的開發語言,市場上大多量化交易系統均采用了Python來開發。本系統所需要的一些工具,也使用了成熟的Python第三方庫,如數據處理的numpy、pandas,獲取股票數據的tushare,數據可視化matplotlib,系統界面開發的tkinter等。
3.2? 金融知識
量化金融是一個系統性的投資和交易方式,不僅包含編程技術,還包含金融,數學,統計等相關知識。量化交易是需要了解一定的金融知識才能夠更好地掌握交易投資過程,并且需要了解所投資市場的交易規則以及一些有效的技巧方法。比如一些財務數據的計算規則,或者一些金融相關因子的計算方法等都需要一定的金融知識。
3.3? 技術指標
技術指標是通過考慮市場行為的各個方面,建立一個數學模型,給出數學上的計算公式,得到一個體現股票市場的某個方面內在實質的數字[5],常用的技術指標包括:移動平均線(MACD)、隨機指標(KDJ)、布林帶(BOLL)等,技術指標的存在讓我們能夠更清楚地看到市場當前的狀態,從而更好地做出交易決策,也在一定程度上減小了因為情緒化交易產生的不必要的虧損。
3.4? 機器學習
說到機器學習也就會想到人工智能和深度學習,其實三者是包含關系,深度學習屬于機器學習,而機器學習又屬于人工智能,由于本文使用的是機器學習,所以著重講一下機器學習。機器學習研究和構建的是一種特殊算法,能夠讓計算機自己在給定的輸入數據和輸出數據中學習從而達到預測未知數據的目的。
人工神經網絡是機器學習的子集,神經網絡由節點層組成,包括輸入層、隱藏層和輸出層,其中隱藏層可以是一層或多層,每一層又由若干個神經元組成,前一層的神經元與后一層的神經元依次連接,從而實現了整個神經網絡,神經網絡越復雜,其模型就越可能能夠預測關系更為抽象的數據。
4? 基于機器學習網絡模型的構建
對于機器學習網絡模型的構建,其實質就是利用已有的海量數據訓練模型,使模型尋找到輸入數據和輸出數據所存在的函數關系,再根據兩者時間的非線性關系,將新的數據輸入模型中,模型給出的新的結果即為模型的預測結果。
本模型使用Keras框架構建,Keras是一個高度模塊化的神經網絡庫,它開發重點是支持快速的實驗,讓開發者能夠以更短的時間把自己的想法轉化為實驗結果,同時也能夠讓初學者更快地入門。
4.1? 神經網絡模型的選擇
LSTM神經網絡模型是一種特殊的RNN類型,同其他的RNNs相比可以更加方便地學習長期依賴關系,因此有很多人試圖將其應用于時間序列的預測問題上。股價的走勢就是一個時間序列,因此使用LSTM神經網絡模型來預測股票未來的走勢無疑是一個不錯的選擇。基于LSTM神經網絡模型的預測股票未來價格走勢流程圖,如圖1所示。
4.2? 輸入數據的獲取
輸入數據的特征會直接影響到模型輸出的結果,因此如果預測股票價格未來一段時間的走勢,以影響股票價格最大的四種基礎數據作為模型的輸入無疑是一個更好的選擇,如:開盤價、收盤價、最高價和最低價。
本系統使用Python的Tushare模塊來獲取股票數據,通過Tushare來獲取平安銀行6年的股票數據,具體操作:
import tushare as ts
ts.set_token(‘) #引號內填寫在tushare平臺申請的token
pro = ts.pro_api()
data = pro.daily(ts_code=000001.SZ, start_date=20200101, end_date=20210106)
4.3 處理數據
獲取到股票數據后要對其進行數據預處理,才能傳給模型進行訓練。LSTM神經網絡模型往往以數據單元的行數作為數據,這就需要用到滑動窗口技術,通過滑動窗口從股票價格時間序列數據中截取到一個個數據單元作為模型的輸入數據。本模型將前60個交易日的數據作為輸入,第61個交易日的數據作為輸出,重要操作已在注釋中標明,具體操作:
def create_dataset(data, time_steps):
dataX, dataY = [], []
for i in range(len(data) - time_steps):
a = data[i:(i + time_steps), 0]
dataX.append(a)
dataY.append(data[i + time_steps, 0])
return np.array(dataX), np.array(dataY)
4.4? LSTM神經網絡模型的建立
4.4.1? LSTM神經網絡模型的參數確定
模型的參數主要包括神經網絡層數和神經元個數,兩個參數的變化都會影響到模型結果的輸出,所以參數的確定至關重要。
對于神經網絡層數的確定,層數多時可以提高精度、降低誤差,但隨著層數的增加,整個神經網絡的復雜度也會變得更大,訓練模型時也會消耗更多的時間,相比于改變神經網絡層數,改變神經元個數對系統的性能影響較小,所以確定好神經網絡層數后,適當的改變神經元個數更容易觀察和調整。
對于神經元個數而言,輸入層神經元個數即為影響股票價格的特征個數,可根據自己所研究的特征進行確定;輸出層神經元為預測日的收盤價或當日某時刻的價格,所以輸出神經元個數為1;隱藏層的神經元個數目前沒有統一的方法確定,可以通過時間來調整個數,最終確定一個最優值。BF31ABF1-A5C5-4197-9858-2C569ACF40C2
4.4.2? LSTM神經網絡結構圖
本模型使用四層神經網絡,包含兩個隱藏層,第一個隱藏層包含256個神經元,第二個隱藏層包含128個神經元,具體結構如圖2所示。
4.4.3? LSTM神經網絡模型的實現
模型的結構確定后,還需要確定模型訓練時的損失函數、優化器、迭代次數等參數,每個參數的變化都會直接影響到模型預測的結果,因此,在模型的實現過程中一般需要經過反復修改測試,才能使模型的預測結果達到一個更優的水平。本模型使用“mean_squared_error”損失函數,使用“adam”優化器,訓練模型迭代100次,每次訓練抓取的樣本數量為64,模型實現的具體操作:
model = Sequential()
model.add(LSTM(128, input_shape=(time_steps, 1),return_sequences=True))
model.add(LSTM(256,return_sequences=True))
model.add(LSTM(128))
model.add(Dense(1))
model.compile(loss=mean_squared_error, optimizer=adam, metrics=[‘accuracy])
model.summary()
model.fit(trainX, trainY, epochs=100, batch_size=64, verbose=1)
4.5? 模型測試
模型訓練好后要對模型進行測試,驗證模型預測的準確性,根據準確性還可以再適當調整參數,使模型達到更高的準確性。先將測試集數據取出并進行預處理,再傳給預測模型,將預測結果使用Matplotlib繪制出來,并將真實數據繪制到一起,通過對比兩條折線,就可以更直觀地看到預測的準確性,預測結果如圖3所示,其中紅線是預測值,藍線是真實值。
5? 結? 論
本文基于keras框架,使用了LSTM神經網絡,通過對歷史數據的挖掘處理,訓練出預測股票價格走勢的模型,用戶選擇相應的股票和時間,系統將預測出該時間后的價格走勢,為投資者提供一定的參考和指導,讓投資者產生更高的收益。當然本模型對于股票數據和時間選擇上還存在一定的局限性,未來可以進一步豐富專家經驗的規律特征,相信隨著計算機技術的發展和金融工程的不斷完善,不久的將來,通過人工智能來預測股票走勢將成為金融市場的主流。
參考文獻:
[1] 于龍飛.基于深度學習的股市量化交易系統設計與實現 [D].濟南:山東大學,2020.
[2] 任君,王建華,王傳美,等.基于正則化LSTM模型的股票指數預測 [J].計算機應用與軟件,2018,35(4):44-48+108.
[3] 郭笑宇.量化投資交易策略研究 [J].財經界,2019(3):16-17.
[4] 趙雪.深度學習在量化交易中的應用 [D].北京:北方工業大學,2019.
[5] 王高鵬.證券投資技術分析方法應用研究 [J].現代商業,2013(27):48-49.
作者簡介:劉力軍(1979—),男,漢族,江蘇南京人,講師,碩士,研究方向:網絡技術;梁國鵬(1999—),男,滿族,河北承德人,在讀本科,研究方向:網絡工程。BF31ABF1-A5C5-4197-9858-2C569ACF40C2