劉力軍 梁國(guó)鵬
摘? 要:隨著計(jì)算機(jī)科學(xué)技術(shù)的快速發(fā)展,人工智能在各個(gè)領(lǐng)域的應(yīng)用也越來(lái)越廣泛,其與各個(gè)學(xué)科技術(shù)相結(jié)合,已成為各領(lǐng)域人士關(guān)注的焦點(diǎn)。將人工智能應(yīng)用于量化交易,通過(guò)搭建不同的神經(jīng)網(wǎng)絡(luò)模型,對(duì)股票歷史數(shù)據(jù)進(jìn)行挖掘,找到股票歷史價(jià)格與未來(lái)價(jià)格的非線性關(guān)系,實(shí)現(xiàn)對(duì)未來(lái)價(jià)格的預(yù)測(cè),早已成為歷史發(fā)展的必然趨勢(shì)。通過(guò)對(duì)機(jī)器學(xué)習(xí)展開(kāi)研究,基于LSTM神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)股票預(yù)測(cè)模型,為投資者提供參考從而帶來(lái)更高的收益。
關(guān)鍵詞:人工智能;神經(jīng)網(wǎng)絡(luò);量化交易
中圖分類號(hào):TP18? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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? 引? 言
其實(shí)傳統(tǒng)交易和量化交易最主要的核心是要有賺錢(qián)的本事,量化無(wú)非是把這些本事經(jīng)驗(yàn)總結(jié)出一套規(guī)律,根據(jù)這個(gè)規(guī)律寫(xiě)成代碼讓機(jī)器執(zhí)行。量化交易就是根據(jù)對(duì)歷史行情的進(jìn)行回測(cè),總結(jié)出一定的交易規(guī)律,即什么情況下應(yīng)該如何交易,找到適合某只股票的最優(yōu)策略,根據(jù)這種策略或規(guī)律來(lái)進(jìn)行自動(dòng)化交易獲得更大收益。
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,依托機(jī)器學(xué)習(xí)技術(shù)研究股票市場(chǎng)變化規(guī)律方興未艾,借助于線性回歸、支持向量機(jī)等機(jī)器學(xué)習(xí)算法對(duì)股票市場(chǎng)進(jìn)行分析并建立模型[1],預(yù)測(cè)股票市場(chǎng)未來(lái)一段時(shí)間的走勢(shì)已成為市場(chǎng)的一個(gè)趨勢(shì)。
1? 人工智能相比于傳統(tǒng)量化投資的優(yōu)勢(shì)
傳統(tǒng)的量化交易策略往往通過(guò)建立數(shù)學(xué)模型實(shí)現(xiàn),在股票市場(chǎng)中試圖尋找到規(guī)律所在,但市場(chǎng)是千變?nèi)f化的,找到的規(guī)律可能也只是暫時(shí)的,通過(guò)這樣的方式進(jìn)行交易,在市場(chǎng)穩(wěn)定的時(shí)候會(huì)有客觀的收益,市場(chǎng)一旦不穩(wěn)定或有其他的狀況收益就會(huì)急劇減少,甚至產(chǎn)生虧損。人工智能更加強(qiáng)調(diào)一個(gè)學(xué)習(xí)的過(guò)程,通過(guò)AI算法,學(xué)習(xí)投資過(guò)程中的邏輯,將行業(yè)、市場(chǎng)、歷史數(shù)據(jù)等因素融入投資模型的載體,在此基礎(chǔ)上進(jìn)行投資組合管理??偟膩?lái)說(shuō),人工智能投資是在人類訓(xùn)練、知識(shí)灌輸以及自我演化的過(guò)程中,形成機(jī)器自己的投資決策。
2? 研究現(xiàn)狀
2.1? 國(guó)內(nèi)
國(guó)內(nèi)量化交易市場(chǎng)還處于發(fā)展初期的階段,目前期貨市場(chǎng)方面已經(jīng)有了一定的運(yùn)用和積累,在證券市場(chǎng)的運(yùn)用還處在剛剛起步的階段。隨著近年來(lái)人工智能的深入發(fā)展,機(jī)器學(xué)習(xí)技術(shù)在程序化交易中起著越來(lái)越重要的作用,它主要著眼于解決線性模型的缺陷和弊端。
2018年,任君等通過(guò)對(duì)比實(shí)驗(yàn)證明了經(jīng)過(guò)改進(jìn)后的彈性網(wǎng)正則化LSTM模型,對(duì)道瓊斯指數(shù)具有更加良好的預(yù)測(cè)效果,而且RMES最小,模型精度最好[2]。
2.2? 國(guó)外
國(guó)外的量化交易發(fā)展比較早,量化投資的技術(shù)從各方面都要遠(yuǎn)超于陳舊的投資方式,已經(jīng)達(dá)到了可以在秒內(nèi)進(jìn)行投資交易的程度[3]。在機(jī)器學(xué)習(xí)的應(yīng)用方法上,國(guó)外的研究以構(gòu)造量化交易投資策略為主,早在20世紀(jì),就有利用機(jī)器學(xué)習(xí)對(duì)股票進(jìn)行預(yù)測(cè)的嘗試。其技術(shù)儲(chǔ)備量十分充足,所運(yùn)用的策略模型和研究水平均高于國(guó)內(nèi),此外還不斷有計(jì)算機(jī)科學(xué)、數(shù)學(xué)等學(xué)科的專家從事量化交易相關(guān)技術(shù)的研究,量化交易技術(shù)的發(fā)展也在不斷地加速。
2016年,狄克遜,迭戈·克拉巴揚(yáng)和金勛邦等人提出基于深度學(xué)習(xí)的深層神經(jīng)網(wǎng)絡(luò)的金融市場(chǎng)預(yù)測(cè),在5分鐘間隔之內(nèi)對(duì)43中不同的商品和外匯期貨的價(jià)格進(jìn)行的簡(jiǎn)單交易策略驗(yàn)證[4]。BF31ABF1-A5C5-4197-9858-2C569ACF40C2
3? 相關(guān)技術(shù)
3.1? 開(kāi)發(fā)語(yǔ)言
本系統(tǒng)采用Python語(yǔ)言開(kāi)發(fā),Python語(yǔ)言具有簡(jiǎn)單易上手且功能強(qiáng)大等特點(diǎn),是當(dāng)今主流的開(kāi)發(fā)語(yǔ)言,市場(chǎng)上大多量化交易系統(tǒng)均采用了Python來(lái)開(kāi)發(fā)。本系統(tǒng)所需要的一些工具,也使用了成熟的Python第三方庫(kù),如數(shù)據(jù)處理的numpy、pandas,獲取股票數(shù)據(jù)的tushare,數(shù)據(jù)可視化matplotlib,系統(tǒng)界面開(kāi)發(fā)的tkinter等。
3.2? 金融知識(shí)
量化金融是一個(gè)系統(tǒng)性的投資和交易方式,不僅包含編程技術(shù),還包含金融,數(shù)學(xué),統(tǒng)計(jì)等相關(guān)知識(shí)。量化交易是需要了解一定的金融知識(shí)才能夠更好地掌握交易投資過(guò)程,并且需要了解所投資市場(chǎng)的交易規(guī)則以及一些有效的技巧方法。比如一些財(cái)務(wù)數(shù)據(jù)的計(jì)算規(guī)則,或者一些金融相關(guān)因子的計(jì)算方法等都需要一定的金融知識(shí)。
3.3? 技術(shù)指標(biāo)
技術(shù)指標(biāo)是通過(guò)考慮市場(chǎng)行為的各個(gè)方面,建立一個(gè)數(shù)學(xué)模型,給出數(shù)學(xué)上的計(jì)算公式,得到一個(gè)體現(xiàn)股票市場(chǎng)的某個(gè)方面內(nèi)在實(shí)質(zhì)的數(shù)字[5],常用的技術(shù)指標(biāo)包括:移動(dòng)平均線(MACD)、隨機(jī)指標(biāo)(KDJ)、布林帶(BOLL)等,技術(shù)指標(biāo)的存在讓我們能夠更清楚地看到市場(chǎng)當(dāng)前的狀態(tài),從而更好地做出交易決策,也在一定程度上減小了因?yàn)榍榫w化交易產(chǎn)生的不必要的虧損。
3.4? 機(jī)器學(xué)習(xí)
說(shuō)到機(jī)器學(xué)習(xí)也就會(huì)想到人工智能和深度學(xué)習(xí),其實(shí)三者是包含關(guān)系,深度學(xué)習(xí)屬于機(jī)器學(xué)習(xí),而機(jī)器學(xué)習(xí)又屬于人工智能,由于本文使用的是機(jī)器學(xué)習(xí),所以著重講一下機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)研究和構(gòu)建的是一種特殊算法,能夠讓計(jì)算機(jī)自己在給定的輸入數(shù)據(jù)和輸出數(shù)據(jù)中學(xué)習(xí)從而達(dá)到預(yù)測(cè)未知數(shù)據(jù)的目的。
人工神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的子集,神經(jīng)網(wǎng)絡(luò)由節(jié)點(diǎn)層組成,包括輸入層、隱藏層和輸出層,其中隱藏層可以是一層或多層,每一層又由若干個(gè)神經(jīng)元組成,前一層的神經(jīng)元與后一層的神經(jīng)元依次連接,從而實(shí)現(xiàn)了整個(gè)神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)越復(fù)雜,其模型就越可能能夠預(yù)測(cè)關(guān)系更為抽象的數(shù)據(jù)。
4? 基于機(jī)器學(xué)習(xí)網(wǎng)絡(luò)模型的構(gòu)建
對(duì)于機(jī)器學(xué)習(xí)網(wǎng)絡(luò)模型的構(gòu)建,其實(shí)質(zhì)就是利用已有的海量數(shù)據(jù)訓(xùn)練模型,使模型尋找到輸入數(shù)據(jù)和輸出數(shù)據(jù)所存在的函數(shù)關(guān)系,再根據(jù)兩者時(shí)間的非線性關(guān)系,將新的數(shù)據(jù)輸入模型中,模型給出的新的結(jié)果即為模型的預(yù)測(cè)結(jié)果。
本模型使用Keras框架構(gòu)建,Keras是一個(gè)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù),它開(kāi)發(fā)重點(diǎn)是支持快速的實(shí)驗(yàn),讓開(kāi)發(fā)者能夠以更短的時(shí)間把自己的想法轉(zhuǎn)化為實(shí)驗(yàn)結(jié)果,同時(shí)也能夠讓初學(xué)者更快地入門(mén)。
4.1? 神經(jīng)網(wǎng)絡(luò)模型的選擇
LSTM神經(jīng)網(wǎng)絡(luò)模型是一種特殊的RNN類型,同其他的RNNs相比可以更加方便地學(xué)習(xí)長(zhǎng)期依賴關(guān)系,因此有很多人試圖將其應(yīng)用于時(shí)間序列的預(yù)測(cè)問(wèn)題上。股價(jià)的走勢(shì)就是一個(gè)時(shí)間序列,因此使用LSTM神經(jīng)網(wǎng)絡(luò)模型來(lái)預(yù)測(cè)股票未來(lái)的走勢(shì)無(wú)疑是一個(gè)不錯(cuò)的選擇?;贚STM神經(jīng)網(wǎng)絡(luò)模型的預(yù)測(cè)股票未來(lái)價(jià)格走勢(shì)流程圖,如圖1所示。
4.2? 輸入數(shù)據(jù)的獲取
輸入數(shù)據(jù)的特征會(huì)直接影響到模型輸出的結(jié)果,因此如果預(yù)測(cè)股票價(jià)格未來(lái)一段時(shí)間的走勢(shì),以影響股票價(jià)格最大的四種基礎(chǔ)數(shù)據(jù)作為模型的輸入無(wú)疑是一個(gè)更好的選擇,如:開(kāi)盤(pán)價(jià)、收盤(pán)價(jià)、最高價(jià)和最低價(jià)。
本系統(tǒng)使用Python的Tushare模塊來(lái)獲取股票數(shù)據(jù),通過(guò)Tushare來(lái)獲取平安銀行6年的股票數(shù)據(jù),具體操作:
import tushare as ts
ts.set_token(‘) #引號(hào)內(nèi)填寫(xiě)在tushare平臺(tái)申請(qǐng)的token
pro = ts.pro_api()
data = pro.daily(ts_code=000001.SZ, start_date=20200101, end_date=20210106)
4.3 處理數(shù)據(jù)
獲取到股票數(shù)據(jù)后要對(duì)其進(jìn)行數(shù)據(jù)預(yù)處理,才能傳給模型進(jìn)行訓(xùn)練。LSTM神經(jīng)網(wǎng)絡(luò)模型往往以數(shù)據(jù)單元的行數(shù)作為數(shù)據(jù),這就需要用到滑動(dòng)窗口技術(shù),通過(guò)滑動(dòng)窗口從股票價(jià)格時(shí)間序列數(shù)據(jù)中截取到一個(gè)個(gè)數(shù)據(jù)單元作為模型的輸入數(shù)據(jù)。本模型將前60個(gè)交易日的數(shù)據(jù)作為輸入,第61個(gè)交易日的數(shù)據(jù)作為輸出,重要操作已在注釋中標(biāo)明,具體操作:
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神經(jīng)網(wǎng)絡(luò)模型的建立
4.4.1? LSTM神經(jīng)網(wǎng)絡(luò)模型的參數(shù)確定
模型的參數(shù)主要包括神經(jīng)網(wǎng)絡(luò)層數(shù)和神經(jīng)元個(gè)數(shù),兩個(gè)參數(shù)的變化都會(huì)影響到模型結(jié)果的輸出,所以參數(shù)的確定至關(guān)重要。
對(duì)于神經(jīng)網(wǎng)絡(luò)層數(shù)的確定,層數(shù)多時(shí)可以提高精度、降低誤差,但隨著層數(shù)的增加,整個(gè)神經(jīng)網(wǎng)絡(luò)的復(fù)雜度也會(huì)變得更大,訓(xùn)練模型時(shí)也會(huì)消耗更多的時(shí)間,相比于改變神經(jīng)網(wǎng)絡(luò)層數(shù),改變神經(jīng)元個(gè)數(shù)對(duì)系統(tǒng)的性能影響較小,所以確定好神經(jīng)網(wǎng)絡(luò)層數(shù)后,適當(dāng)?shù)母淖兩窠?jīng)元個(gè)數(shù)更容易觀察和調(diào)整。
對(duì)于神經(jīng)元個(gè)數(shù)而言,輸入層神經(jīng)元個(gè)數(shù)即為影響股票價(jià)格的特征個(gè)數(shù),可根據(jù)自己所研究的特征進(jìn)行確定;輸出層神經(jīng)元為預(yù)測(cè)日的收盤(pán)價(jià)或當(dāng)日某時(shí)刻的價(jià)格,所以輸出神經(jīng)元個(gè)數(shù)為1;隱藏層的神經(jīng)元個(gè)數(shù)目前沒(méi)有統(tǒng)一的方法確定,可以通過(guò)時(shí)間來(lái)調(diào)整個(gè)數(shù),最終確定一個(gè)最優(yōu)值。BF31ABF1-A5C5-4197-9858-2C569ACF40C2
4.4.2? LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
本模型使用四層神經(jīng)網(wǎng)絡(luò),包含兩個(gè)隱藏層,第一個(gè)隱藏層包含256個(gè)神經(jīng)元,第二個(gè)隱藏層包含128個(gè)神經(jīng)元,具體結(jié)構(gòu)如圖2所示。
4.4.3? LSTM神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)
模型的結(jié)構(gòu)確定后,還需要確定模型訓(xùn)練時(shí)的損失函數(shù)、優(yōu)化器、迭代次數(shù)等參數(shù),每個(gè)參數(shù)的變化都會(huì)直接影響到模型預(yù)測(cè)的結(jié)果,因此,在模型的實(shí)現(xiàn)過(guò)程中一般需要經(jīng)過(guò)反復(fù)修改測(cè)試,才能使模型的預(yù)測(cè)結(jié)果達(dá)到一個(gè)更優(yōu)的水平。本模型使用“mean_squared_error”損失函數(shù),使用“adam”優(yōu)化器,訓(xùn)練模型迭代100次,每次訓(xùn)練抓取的樣本數(shù)量為64,模型實(shí)現(xiàn)的具體操作:
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=[‘a(chǎn)ccuracy])
model.summary()
model.fit(trainX, trainY, epochs=100, batch_size=64, verbose=1)
4.5? 模型測(cè)試
模型訓(xùn)練好后要對(duì)模型進(jìn)行測(cè)試,驗(yàn)證模型預(yù)測(cè)的準(zhǔn)確性,根據(jù)準(zhǔn)確性還可以再適當(dāng)調(diào)整參數(shù),使模型達(dá)到更高的準(zhǔn)確性。先將測(cè)試集數(shù)據(jù)取出并進(jìn)行預(yù)處理,再傳給預(yù)測(cè)模型,將預(yù)測(cè)結(jié)果使用Matplotlib繪制出來(lái),并將真實(shí)數(shù)據(jù)繪制到一起,通過(guò)對(duì)比兩條折線,就可以更直觀地看到預(yù)測(cè)的準(zhǔn)確性,預(yù)測(cè)結(jié)果如圖3所示,其中紅線是預(yù)測(cè)值,藍(lán)線是真實(shí)值。
5? 結(jié)? 論
本文基于keras框架,使用了LSTM神經(jīng)網(wǎng)絡(luò),通過(guò)對(duì)歷史數(shù)據(jù)的挖掘處理,訓(xùn)練出預(yù)測(cè)股票價(jià)格走勢(shì)的模型,用戶選擇相應(yīng)的股票和時(shí)間,系統(tǒng)將預(yù)測(cè)出該時(shí)間后的價(jià)格走勢(shì),為投資者提供一定的參考和指導(dǎo),讓投資者產(chǎn)生更高的收益。當(dāng)然本模型對(duì)于股票數(shù)據(jù)和時(shí)間選擇上還存在一定的局限性,未來(lái)可以進(jìn)一步豐富專家經(jīng)驗(yàn)的規(guī)律特征,相信隨著計(jì)算機(jī)技術(shù)的發(fā)展和金融工程的不斷完善,不久的將來(lái),通過(guò)人工智能來(lái)預(yù)測(cè)股票走勢(shì)將成為金融市場(chǎng)的主流。
參考文獻(xiàn):
[1] 于龍飛.基于深度學(xué)習(xí)的股市量化交易系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [D].濟(jì)南:山東大學(xué),2020.
[2] 任君,王建華,王傳美,等.基于正則化LSTM模型的股票指數(shù)預(yù)測(cè) [J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(4):44-48+108.
[3] 郭笑宇.量化投資交易策略研究 [J].財(cái)經(jīng)界,2019(3):16-17.
[4] 趙雪.深度學(xué)習(xí)在量化交易中的應(yīng)用 [D].北京:北方工業(yè)大學(xué),2019.
[5] 王高鵬.證券投資技術(shù)分析方法應(yīng)用研究 [J].現(xiàn)代商業(yè),2013(27):48-49.
作者簡(jiǎn)介:劉力軍(1979—),男,漢族,江蘇南京人,講師,碩士,研究方向:網(wǎng)絡(luò)技術(shù);梁國(guó)鵬(1999—),男,滿族,河北承德人,在讀本科,研究方向:網(wǎng)絡(luò)工程。BF31ABF1-A5C5-4197-9858-2C569ACF40C2