王麗娜 李欣欣
摘 要:股票投資常常伴隨著風(fēng)險(xiǎn)發(fā)生,越來越多的投資者期望尋求更加科學(xué)的投資方法。隨著人工智能和大數(shù)據(jù)的興起,用機(jī)器學(xué)習(xí)探究股票市場的變化規(guī)律越來越流行。本文采用機(jī)器學(xué)習(xí)的三種算法,線性神經(jīng)網(wǎng)絡(luò)模型(Linear Model)、多層感知機(jī)神經(jīng)網(wǎng)絡(luò)模型(MLP)和支持向量機(jī)回歸模型(SVM)分別對1990年至2019年的上證指數(shù)sh000001價(jià)格進(jìn)行研究。在1%誤差容忍度下,驗(yàn)證了三種模型對股價(jià)均較好的預(yù)測效果,為廣大投資者提供投資策略支持。
關(guān)鍵詞:上證指數(shù)價(jià)格;機(jī)器學(xué)習(xí);神經(jīng)網(wǎng)絡(luò);支持向量機(jī)
中圖分類號:F23???? 文獻(xiàn)標(biāo)識碼:A????? doi:10.19311/j.cnki.1672-3198.2021.17.044
1 研究背景
隨著我國股市的不斷發(fā)展和完善,越來越多的機(jī)構(gòu)和個(gè)人參與到股票市場。上市公司希望從股票市場上融到資金,而投資者也期望從投資的股票中獲得收益。但股票投資也經(jīng)常伴隨著風(fēng)險(xiǎn),如果盲目進(jìn)行投資,只會(huì)給投資者帶來損失,科學(xué)合理地分析股票走勢并選擇有效的投資策略越來越受到人們的關(guān)注。
正是在這種市場需求下,股票市場的各類預(yù)測問題就成為一個(gè)研究熱點(diǎn)。很多研究學(xué)者積極投身股票預(yù)測的研究,并取得的一定的研究成果。傳統(tǒng)的股票預(yù)測研究有很多技術(shù)已經(jīng)比較成熟,如技術(shù)分析方法和基本面分析方法,曾勁松(2005)指出在弱有效市場下,技術(shù)分析可以幫助投資者獲得超額收益。扈香梅(2014)指出,技術(shù)分析可以在短期內(nèi)小波動(dòng)范圍為投資者提供最佳買賣股票的時(shí)機(jī)。也有一些學(xué)者提出了更加嚴(yán)謹(jǐn)?shù)慕鹑跁r(shí)間序列分析方法如向量自回歸模型、移動(dòng)平均模型和自回歸移動(dòng)平均模型等。閻大穎(2003)運(yùn)用向量自回歸模型,檢驗(yàn)了國內(nèi)外股票市場價(jià)格指數(shù)長期走勢的時(shí)序相關(guān)性。王成璋等(2011)在書中詳細(xì)介紹了自回歸移動(dòng)平均模型的使用及適用范圍。Bollerslev(1986)在Engle的研究基礎(chǔ)上豐富了ARCH模型,提出廣義自回歸條件異方差模型。張貴生等(2016)指出融合了梯度因子信息的G-ARMA-GARCH模型對股票價(jià)格預(yù)測的準(zhǔn)確度顯著提高并且具有較好的穩(wěn)定性。
隨著計(jì)算機(jī)技術(shù)飛速發(fā)展,機(jī)器學(xué)習(xí)逐漸進(jìn)入人們視野,將機(jī)器學(xué)習(xí)與股票的大數(shù)據(jù)結(jié)合引起了學(xué)者的廣泛關(guān)注。目前,比較常見的股票市場預(yù)測算法大多為監(jiān)督學(xué)習(xí)算法,如決策樹、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)等算法。張晨希等(2006)主要采用支持向量機(jī)的機(jī)器學(xué)習(xí)方法來預(yù)測股票市場股價(jià)走勢,提高了股票分辨效率。陳俏(2015)采用小波神經(jīng)網(wǎng)絡(luò)分析出股票不同時(shí)間序列的頻率變化規(guī)律。彭燕等(2019)基于長短期記憶網(wǎng)絡(luò)對股價(jià)進(jìn)行預(yù)測,拓寬了人們對股票投資策略的認(rèn)知。也有一些學(xué)者采用多種機(jī)器學(xué)習(xí)方法和金融模型結(jié)合的方法,有效彌補(bǔ)了單個(gè)算法的不足,可以更精準(zhǔn)地預(yù)測股價(jià)的未來走向。傅航聰(2017)綜合時(shí)間序列算法、K近鄰算法以及支持向量機(jī)算法的長處,整合提出了一種綜合預(yù)測算法,整體效果也比較穩(wěn)定。崔文喆等(2019)采用GARCH模型和BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測多只股票的走勢,BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)測效果均優(yōu)于GARCH模型,且總體差異具有高度統(tǒng)計(jì)學(xué)意義?;跀?shù)據(jù)的機(jī)器學(xué)習(xí)試圖從數(shù)據(jù)樣本中尋找規(guī)律,并利用這些規(guī)律對新數(shù)據(jù)或無規(guī)則的數(shù)據(jù)進(jìn)行預(yù)測,這已學(xué)界得到了廣泛認(rèn)可。
2 模型設(shè)定
本文采用線性神經(jīng)網(wǎng)絡(luò)、非線性神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)回歸三種模型進(jìn)行預(yù)測。在線性神經(jīng)網(wǎng)絡(luò)模型中,其激活函數(shù)是線性函數(shù)。假設(shè)輸入是一個(gè)n維向量X=[x1,x2,…,xn],從輸入到神經(jīng)元的權(quán)值為ωi,則該神經(jīng)元的輸出為:
v=Σxiωi+b(1)
本文函數(shù)g采用線性函數(shù),神經(jīng)網(wǎng)絡(luò)的輸出就是:
y=g(Σxiωi+b)=Σxiωi+b(2)
在非線性神經(jīng)網(wǎng)絡(luò)模型中,激活函數(shù)對輸入的信號進(jìn)行了非線性變換,假設(shè)輸入信號用x0表示,突觸強(qiáng)度用權(quán)重w0表示,神經(jīng)元中的信號處理在模型中是矩陣乘法。參數(shù)w0是可以通過學(xué)習(xí)得到的,它對輸入信號產(chǎn)生了影響。每個(gè)輸入信號與相應(yīng)的權(quán)重相乘之后再相加,之后再經(jīng)過激活函數(shù)σ處理,得到輸出結(jié)果。本文選擇基本激活函數(shù)sigmoid函數(shù),將輸入的信號經(jīng)過運(yùn)算,輸出一個(gè)(0,1)區(qū)間內(nèi)的值。用公式表示這一過程為:
y=σ(Σiwixi+b)(3)
此時(shí),單個(gè)的神經(jīng)元模型可以看作一個(gè)二元分類器,將輸入樣本分成兩類,單個(gè)神經(jīng)元可以將輸入進(jìn)行判定,輸出值接近于1為一類,輸出值接近0為另一類,為后續(xù)傳導(dǎo)做準(zhǔn)備。
本文設(shè)定兩層神經(jīng)網(wǎng)絡(luò)機(jī)制,假設(shè)有三個(gè)函數(shù)f(1)和f(2),復(fù)合函數(shù)f(x)=f(2)(f(1)(x))。這種組合方式也是神經(jīng)網(wǎng)絡(luò)中的典型方式。f(1)表示第一層,f(2)是第二層,也是隱藏層。除此之外,模型中還有輸入層和輸出層。在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,是使訓(xùn)練集f(x)函數(shù)逼近實(shí)際的f*(x)函數(shù)的過程。通過訓(xùn)練樣本反復(fù)訓(xùn)練,神經(jīng)網(wǎng)絡(luò)逐漸掌握了訓(xùn)練的方向,進(jìn)而優(yōu)化參數(shù),可以預(yù)測股票價(jià)格。
在支持向量機(jī)回歸模型中,本文選用線性SVM算法。對于線性函數(shù)f(x),有
f(x)=ωx+b(4)
為了讓激活函數(shù)與原函數(shù)逼近,此處對損失函數(shù)利用風(fēng)險(xiǎn)最小化求解,從而原問題變?yōu)椋?/p>
min.12||ω||2+C∑li=1(ξi+ξi*)(5)
其中,||ω||2用來控制回歸模型的近似性與復(fù)雜性之間的平衡。常量C是懲罰因子,C值越大,經(jīng)驗(yàn)誤差在風(fēng)險(xiǎn)函數(shù)中所起的作用就越大。ξi和ξi*是松弛變量。同時(shí)在模型給定約束條件下利用二次規(guī)劃方法解決優(yōu)化問題,本文利用拉格朗日乘子法將該問題轉(zhuǎn)化為其對偶形式求解。
3 數(shù)據(jù)實(shí)驗(yàn)及結(jié)論
本文通過Tushare數(shù)據(jù)庫獲取了從1990-1-1到2019-1-1的上證指數(shù)數(shù)據(jù),調(diào)用亞馬遜的深度學(xué)習(xí)庫(MXNet)構(gòu)建線性神經(jīng)網(wǎng)絡(luò)和MLP神經(jīng)網(wǎng)絡(luò)模型,又利用機(jī)器學(xué)習(xí)里的Scikit-learn模塊構(gòu)建SVM模型。在對模型進(jìn)行訓(xùn)練之前,因?yàn)樵紨?shù)據(jù)往往會(huì)出現(xiàn)不一致性、不完整性、重復(fù)性和稀疏性等問題,本文首先需要對數(shù)據(jù)進(jìn)行預(yù)處理,數(shù)據(jù)預(yù)處理主要由數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)變換和數(shù)據(jù)規(guī)約組成。預(yù)處理后,本文還對數(shù)據(jù)進(jìn)行歸一化,使系統(tǒng)數(shù)值的絕對值變成某種相對關(guān)系,從而簡化計(jì)算,避免量綱的不一致性。
在建立線性神經(jīng)網(wǎng)絡(luò)模型時(shí),分析歷史數(shù)據(jù),預(yù)測n+1的上證指數(shù)。首先,根據(jù)文件名讀取數(shù)據(jù),并根據(jù)時(shí)間參數(shù)切割數(shù)據(jù),最終把數(shù)據(jù)分為70%的訓(xùn)練數(shù)據(jù)集和30%測試數(shù)據(jù)集。其次,求出上證指數(shù)5天、10天、15天、30天的移動(dòng)平均,并添加到訓(xùn)練集和測試集中。然后,把輸入的數(shù)據(jù),轉(zhuǎn)入MXNet神經(jīng)網(wǎng)絡(luò)模型。最后,定義訓(xùn)練函數(shù),計(jì)算每一輪損失值,不斷優(yōu)化調(diào)整神經(jīng)網(wǎng)絡(luò)模型內(nèi)部各個(gè)參數(shù)的權(quán)重。其中,步長定義為8。在進(jìn)行200此迭代之后,loss損失值小于千分之五,已經(jīng)非常小,到最后基本保持不變。用訓(xùn)練好的模型,對測試集數(shù)據(jù)進(jìn)行預(yù)測。預(yù)測數(shù)據(jù)與實(shí)際數(shù)據(jù)的誤差寬容度,默認(rèn)為5%,如果兩者誤差小于5%,認(rèn)為是正確數(shù)據(jù)。這樣得出準(zhǔn)確度是99.71%,如果設(shè)置寬容度是1%,則預(yù)測準(zhǔn)確度是79.33%。
MLP神經(jīng)網(wǎng)絡(luò)模型由一個(gè)輸入層,一個(gè)輸出層和多個(gè)隱藏層組成,在MLP中的所有神經(jīng)元都類似,每個(gè)神經(jīng)元由幾個(gè)輸入(連接前一層)和輸出(連接后一層)神經(jīng)元。本文采用的MLP神經(jīng)網(wǎng)絡(luò)模型采用了一個(gè)隱藏層,隱藏層神經(jīng)元的數(shù)量為32。與線性神經(jīng)網(wǎng)絡(luò)模型類似,結(jié)合具體的金融數(shù)據(jù),對上證指數(shù)的未來值進(jìn)行預(yù)測分析。除了模型設(shè)定以外,其余數(shù)據(jù)處理和預(yù)測方法都與線性神經(jīng)網(wǎng)絡(luò)模型類似,為此不再重復(fù)。步長定義為8,優(yōu)化迭代次數(shù)定義為500。從損失值可以看出,最后loss值小于萬分之八,已經(jīng)非常小,并且變化不大。利用訓(xùn)練好的模型對測試集數(shù)據(jù)進(jìn)行預(yù)測,得到誤差寬容度分別為5%和1%時(shí)的預(yù)測準(zhǔn)確度分別為99.66%和82.72%。相對于線性神經(jīng)網(wǎng)絡(luò),MLP神經(jīng)網(wǎng)絡(luò)擬合效果更好。
最后本文采用機(jī)器學(xué)習(xí)模型支持向量機(jī)(SVM)進(jìn)行價(jià)格預(yù)測。數(shù)據(jù)預(yù)處理與神經(jīng)網(wǎng)絡(luò)模型類似,模型構(gòu)建采用Scikit-learn庫,利用訓(xùn)練好的模型對測試集數(shù)據(jù)進(jìn)行預(yù)測,得到誤差寬容度分別為5%和1%時(shí)的預(yù)測準(zhǔn)確度分別為99.66%和83.7%。與前兩個(gè)模型相比,支持向量機(jī)(SVM)模型效果更好。
綜上所述,從實(shí)驗(yàn)結(jié)果來看,對于上證指數(shù)1990年-2019年的日度數(shù)據(jù),在誤差容忍度為5%的情況下,三種模型區(qū)別不大。但是在誤差容忍度為1%的情況下,線性神經(jīng)網(wǎng)絡(luò)模型效果最差,它只有一個(gè)輸入層,一個(gè)輸出層,比較簡單,而且輸出和輸入是簡單的線性關(guān)系,表達(dá)能力有限,因此效果相對較差。MLP比SVM預(yù)測結(jié)果略差。MLP是多層神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)的層數(shù)和神經(jīng)元的個(gè)數(shù)都不太好確定,并且也受到優(yōu)化算法的影響,其結(jié)果變動(dòng)較大,難以確定最佳的網(wǎng)絡(luò),不過其效果與SVM接近,通過設(shè)置更好的層數(shù)和神經(jīng)元個(gè)數(shù),其效果也可能會(huì)更好。總之,在本文的實(shí)驗(yàn)中,SVM回歸模型取得了最佳效果,MLP和線性神經(jīng)網(wǎng)絡(luò)模型相對較差。但是由于神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)上的復(fù)雜度,未來通過設(shè)計(jì)良好的網(wǎng)絡(luò)結(jié)構(gòu)和精細(xì)的優(yōu)化方法可能會(huì)使效果進(jìn)一步提升。
參考文獻(xiàn)
[1]曾勁松.技術(shù)分析與中國股票市場有效性[J].財(cái)經(jīng)問題研究,2005,(08):27-30.
[2]扈香梅.淺談基本面分析和技術(shù)分析在股票市場的應(yīng)用[J].新西部(理論版),2014,(05):62+64.
[3]閻大穎.實(shí)證分析中國股票市場內(nèi)部及與國際市場之間價(jià)格長期走勢的因果關(guān)系[J].南開經(jīng)濟(jì)研究,2003,(03):63-66+76.
[4]BOX G E P,JENKINS G M,REINSEL G C.時(shí)間序列分析:預(yù)測與控制[M].王成璋,尤梅芳,郝楊,譯.北京:機(jī)械工業(yè)出版社,2011.
[5]ENGLE R F.Autoregressive conditional heteroscedasticity with estimates of the variance of united kingdom inflation[J].Econometrica,1982,50(4):987-1007.
[6]張貴生,張信東.基于梯度因子的ARMA-GARCH股票價(jià)格預(yù)測模型研究[J].山西大學(xué)學(xué)報(bào)(哲學(xué)社會(huì)科學(xué)版),2016,39(1):115-122.
[7]張晨希,張燕平,張迎春,等.基于支持向量機(jī)的股票預(yù)測[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,(06):35-37.
[8]陳俏,梁利利.小波分析在股票指數(shù)分析中的作用[J].金融市場,2015,(6):45-47.
[9]彭燕,劉宇紅,張榮芬,等.基于LSTM的股票價(jià)格預(yù)測建模與分析[J].計(jì)算機(jī)工程與應(yīng)用,2019,55(11):209-212.
[10]傅航聰,張偉.機(jī)器學(xué)習(xí)算法在股票走勢預(yù)測中的應(yīng)用[J].軟件導(dǎo)刊,2017,16(10):31-34+46.
[11]崔文喆,李寶毅,于德勝,等.基于GARCH模型和BP神經(jīng)網(wǎng)絡(luò)模型的股票價(jià)格預(yù)測實(shí)證分析[J].天津師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2019,39(05):30-34.