黃敏健 劉鈺萱
摘 ? 要:隨著我國經(jīng)濟(jì)制度和保障體制的不斷完善,越來越多的人投入到股票交易市場中,而在錯(cuò)綜復(fù)雜的股票市場中,根據(jù)股價(jià)趨勢選取最優(yōu)股并采取適當(dāng)?shù)慕灰撞呗?,是投資者和相關(guān)學(xué)者的討論中亟待解決的問題,如何有效地對股票趨勢進(jìn)行預(yù)測成為研究領(lǐng)域的一個(gè)熱門。根據(jù)上市公司的股票數(shù)據(jù)和變化情況,運(yùn)用4種機(jī)器學(xué)習(xí)模型對股價(jià)進(jìn)行預(yù)測,實(shí)驗(yàn)結(jié)果表明,各類模型可以提高預(yù)測的準(zhǔn)確率,相較于K近鄰、邏輯回歸模型以及支持向量機(jī)模型,使用Tensorflow建立的模型各類評價(jià)指標(biāo)上都表現(xiàn)出最好的預(yù)測結(jié)果。不同模型在結(jié)合金融投資特征適當(dāng)調(diào)整之后,預(yù)測準(zhǔn)確率有一定的提升。根據(jù)以上數(shù)據(jù)和分析,評價(jià)各種機(jī)器學(xué)習(xí)算法模型在股票趨勢預(yù)測方面的效用。
關(guān)鍵詞:機(jī)器學(xué)習(xí);股票預(yù)測;python
隨著我國經(jīng)濟(jì)制度和保障體制的不斷完善,越來越多的人投入到股票交易的市場中,而在錯(cuò)綜復(fù)雜的股票市場中,根據(jù)股價(jià)趨勢選取最優(yōu)股并采取適當(dāng)?shù)慕灰撞呗?,是投資者和相關(guān)學(xué)者的討論中亟待解決的問題。
盡管股票市場是一個(gè)非線性、非平穩(wěn)的系統(tǒng),但是相對穩(wěn)定條件下的股票市場依然存在一定的規(guī)律性。近年來,隨著數(shù)理統(tǒng)計(jì)、概率論及神經(jīng)科學(xué)的發(fā)展融合,機(jī)器學(xué)習(xí)理論的日益完善,各類機(jī)器學(xué)習(xí)的模型在股票預(yù)測領(lǐng)域也得到了廣泛的應(yīng)用。越來越多的人通過機(jī)器學(xué)習(xí)的方法實(shí)現(xiàn)對股票趨勢的預(yù)測。本文在sklearn框架下,分析清洗過后的股票歷史數(shù)據(jù),通過訓(xùn)練來得到可以預(yù)測股價(jià)的模型,在不同評測指標(biāo)下將預(yù)測結(jié)果進(jìn)行對比,并針對模型的不足對模型結(jié)構(gòu)和參數(shù)進(jìn)行改良,將改進(jìn)前后的數(shù)據(jù)進(jìn)行對照并作出分析。
1 ? ?相關(guān)技術(shù)和理論知識
1.1 ?機(jī)器學(xué)習(xí)的基本方法
機(jī)器學(xué)習(xí)通過研究計(jì)算機(jī)怎么模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新知識和技能,重新組織已有知識結(jié)構(gòu)使不斷改善自身性能。針對經(jīng)驗(yàn)E(Experience)和一系列任務(wù)T(Tasks)和一定表現(xiàn)的衡量P,如圖1所示,如果隨著經(jīng)驗(yàn)E的積累,針對定義好的任務(wù)T可以提高表現(xiàn)P,說明計(jì)算機(jī)在過程中逐漸具備學(xué)習(xí)能力[1]。
1.2 ?基于Python預(yù)測股票價(jià)格的模型
1.2.1 ?K近鄰
K近鄰(K-Nearest Neighbor,K-NN)通過計(jì)算測試對象和所有訓(xùn)練對象的距離,如式(1)所示,找出最近距離的k個(gè)對象中出現(xiàn)頻率最高的對象,通過其所屬類別確定測試對象的類別。
1.2.2 ?邏輯回歸和支持向量機(jī)
邏輯回歸(Logistics Regression,LP)模型為了線性擬合并且約束目標(biāo)值域,使用sigmoid函數(shù)作為邏輯回歸單元來進(jìn)行約束。數(shù)學(xué)模型如式(2):
不同于使用均方誤差,為了達(dá)到盡可能使得曲線光滑以及盡可能使類似于一元二次函數(shù)的目的,采用如式(3)代價(jià)函數(shù)進(jìn)行二分類,尋找全局最優(yōu)點(diǎn):
即轉(zhuǎn)化為優(yōu)化交叉熵函數(shù),最小化損失的求解過程,如式(4)所示;支持向量機(jī)就是將向量進(jìn)行二分類的算法。核心思想是使分開的兩個(gè)類別有最大間隔,使得分割具有更高的可信度。同為二元分類器,SVM將股票指標(biāo)這樣線性不可分的數(shù)據(jù)投影至完美線性可分或基本線性可分的空間,從而將股價(jià)價(jià)格漲跌問題轉(zhuǎn)化為漲跌分類問題。損失函數(shù)則構(gòu)合頁函數(shù)加上正則化項(xiàng)如式(5):
1.2.3 ?TensorFlow與Keras
對神經(jīng)網(wǎng)絡(luò)的建立,主要使用多層感知機(jī)(Multi-Layer Perceptron,MLP),包括輸入輸出層和隱層,其中,股票價(jià)格將被輸入到模型中,并且會(huì)使用特定權(quán)重值通過隱藏層向前送入以產(chǎn)生輸出。通過損失函數(shù)(Loss Function)來進(jìn)行評價(jià)和優(yōu)化,如式(6)所示:
2 ? ?評價(jià)指標(biāo)
2.1 ?部分回歸指標(biāo)
回歸類指標(biāo)中,y為預(yù)測的真實(shí)值,為預(yù)測值,在模擬的過程中,它們越小那么模型預(yù)測的效果就越好,均方誤差(MSE)、均誤差(RMSE)和平均絕對誤差(MAE)如式(7)所示:
2.2 ?部分分類評價(jià)指標(biāo)
查準(zhǔn)率(精準(zhǔn)率):Precision = TP÷(TP+FP)。
查全率(召回率):Recall = TP÷(TP+FN)。
正確率(準(zhǔn)確率):Accuracy=(TP+TN)÷(TP+FP+ TN+FN)。
其中,TP—真正例,實(shí)際為正預(yù)測為正;FP—假正例,實(shí)際為負(fù)但預(yù)測為正;FN—假反例,實(shí)際為正但預(yù)測為負(fù);TN—真反例,實(shí)負(fù)預(yù)測。
3 ? ?股票預(yù)測模型的構(gòu)建
通過網(wǎng)絡(luò)爬蟲獲取20只國內(nèi)上市公司股票的交易指標(biāo)和S&P 500 Index,也就是標(biāo)準(zhǔn)普爾500指數(shù),記錄了美國500家上市公司的股票指數(shù),其成分股由工業(yè)、運(yùn)輸業(yè)、公用事業(yè)和金融業(yè)股票組成。采樣面廣、代表性強(qiáng)。數(shù)據(jù)預(yù)處理環(huán)節(jié)如圖2所示。
運(yùn)用理論部分監(jiān)督學(xué)習(xí)模型策略的知識對將對多支股票的交易特征分別進(jìn)行建模,預(yù)測漲跌趨勢。對于神經(jīng)網(wǎng)絡(luò)部分分別采用同步和異步預(yù)測,同樣對價(jià)格趨勢進(jìn)行預(yù)測[2]。
4 ? ?預(yù)測模型的實(shí)現(xiàn)
4.1 ?傳統(tǒng)機(jī)器學(xué)習(xí)模型的實(shí)現(xiàn)
4.2 ?TensorFlow的實(shí)現(xiàn)
圖5為同步預(yù)測,隨著訓(xùn)練次數(shù)增加,同步擬合的擬合率得分接近于0.98,各類誤差指標(biāo)水平同樣較低,可以精準(zhǔn)地預(yù)測大盤價(jià)。盡管在精確度上表現(xiàn)良好,但是由于預(yù)測形式特殊,應(yīng)用于實(shí)際有一定困難。
使調(diào)用歷史若干個(gè)時(shí)刻的股票指數(shù),通過神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測實(shí)際指數(shù)預(yù)測大盤指數(shù),結(jié)果如圖6所示。
結(jié)果擬合程度較高,均方誤差為(0.10±0.05),測試集上為0.001 5。由于采用的是歷史價(jià)格,此方法更適合于用于實(shí)際預(yù)測。
5 ? ?未來發(fā)展方向
對股票交易的不同預(yù)測需求場景下對應(yīng)的指標(biāo)和方法選取需要有準(zhǔn)確的認(rèn)識?;貧w評價(jià)指標(biāo)和分類評價(jià)指標(biāo)呈現(xiàn)出較大的差異性,因此,評價(jià)指標(biāo)和相應(yīng)機(jī)器學(xué)習(xí)方法的選取必須結(jié)合對股票預(yù)測的具體需求。如果策略更加偏向于準(zhǔn)確價(jià)格范圍預(yù)測,由前文所述使用回歸評價(jià)指標(biāo),精度較高的可以有效地基于此比較誤差。此類指標(biāo)的誤差均值對被評估數(shù)據(jù)的異常點(diǎn)(outliers)較敏感,如果交易指標(biāo)中有一些異常值出現(xiàn),會(huì)對以上指標(biāo)的值有較大影響,同時(shí)也對數(shù)據(jù)的清洗提出了更嚴(yán)格的要求。對于分類評價(jià)指標(biāo),則更看重業(yè)務(wù)邏輯。對于傾向性問題,如帶有感情色彩的策略制定,精度評價(jià)無法勝任;對于盈利虧損的接受程度,調(diào)整傾向決定了調(diào)整查全率、查準(zhǔn)率還是使用兼顧兩者的F1-Score的標(biāo)準(zhǔn),均能較好地適合期望穩(wěn)定收益的場景。AUC由于和概率的相對大?。ǜ怕逝判颍┯嘘P(guān),與絕對值無關(guān),不適合準(zhǔn)確價(jià)格的預(yù)測。因此更加適合非均衡(漲跌不均勻分布)時(shí)預(yù)測,或基于趨勢選取交易策略的場景。
6 ? ?結(jié)語
從本文的相關(guān)研究發(fā)現(xiàn),機(jī)器學(xué)習(xí)算法可以通過一定范圍的指標(biāo)評估從而輔助交易策略。通過結(jié)合具體交易場景選取適當(dāng)?shù)膮?shù)和評價(jià)指標(biāo),則可以實(shí)現(xiàn)從價(jià)格趨勢的預(yù)測到實(shí)際收益提升的轉(zhuǎn)換。然而在實(shí)際環(huán)境中,模型預(yù)測的準(zhǔn)確率具有數(shù)據(jù)依賴性,無法訓(xùn)練一個(gè)模型適用于所有場景。一方面考慮到本文所取的股票樣本仍然不夠全面,且現(xiàn)實(shí)中的股票市場還有復(fù)雜的政治、經(jīng)濟(jì)因素會(huì)造成無法預(yù)估的影響,要得出具有泛化能力的模型,還需要對股票所屬產(chǎn)業(yè)和具體交易場景作進(jìn)一步的分類和深入的調(diào)查,更加全面的數(shù)據(jù)分析和模型調(diào)整,將機(jī)器學(xué)習(xí)算法的思想和現(xiàn)實(shí)應(yīng)用更好地結(jié)合。
[參考文獻(xiàn)]
[1]傅航聰,張 ?偉.機(jī)器學(xué)習(xí)算法在股票走勢預(yù)測中的應(yīng)用[J].軟件導(dǎo)刊,2017,16(10):31-34,46.
[2]文 ?成.基于機(jī)器學(xué)習(xí)方法的股票數(shù)據(jù)研究[D].重慶:重慶理工大學(xué),2011.