馬京晶
關(guān)鍵詞:股票預(yù)測(cè);線性回歸;邏輯回歸;隨機(jī)森林
0 引言
隨著經(jīng)濟(jì)不斷波動(dòng),中小企業(yè)及個(gè)人投資者逐漸將目光從傳統(tǒng)的重資產(chǎn)領(lǐng)域轉(zhuǎn)向更為靈活和活躍的股票市場(chǎng)。在充滿機(jī)遇和挑戰(zhàn)的金融領(lǐng)域,選擇適切的股票投資策略尤為關(guān)鍵,股票的漲跌趨勢(shì)預(yù)測(cè)成為投資者們關(guān)注的焦點(diǎn)之一。人工智能迅猛發(fā)展與金融衍生品不斷完善,量化投資策略在國(guó)內(nèi)得到了飛速發(fā)展[1],學(xué)者們紛紛運(yùn)用機(jī)器學(xué)習(xí)等工具在股票的漲跌及漲跌幅度上進(jìn)行研究。王蘭等使用logistic回歸對(duì)股票的漲跌趨勢(shì)進(jìn)行預(yù)測(cè),對(duì)貴陽銀行的歷史股票價(jià)格趨勢(shì)進(jìn)行實(shí)例分析,結(jié)合混淆矩陣與 AUC評(píng)價(jià)方法進(jìn)行模型評(píng)估取得了良好的效果[2];馬貴永等針對(duì)農(nóng)林牧漁行業(yè)采用隨機(jī)森林及XGboost算法研究股票的趨勢(shì)變動(dòng),利用準(zhǔn)確率、AUC 值等指標(biāo)對(duì)模型的預(yù)測(cè)效果進(jìn)行評(píng)價(jià),模型對(duì)農(nóng)林牧漁行業(yè)股票趨勢(shì)預(yù)測(cè)的準(zhǔn)確率高達(dá) 91.55%[3];張曉濤等實(shí)現(xiàn)了采用線性回歸的方法對(duì)股票趨勢(shì)進(jìn)行預(yù)測(cè)并設(shè)計(jì)與實(shí)現(xiàn)了基于線性回歸的熱門股票分析與推薦系統(tǒng)[4]。本論文旨在通過研究機(jī)器學(xué)習(xí)中的分類與回歸兩種監(jiān)督學(xué)習(xí)方法,對(duì)股票價(jià)格趨勢(shì)進(jìn)行預(yù)測(cè),探討算法的原理、模型構(gòu)建與評(píng)估方法,并得出對(duì)于股票市場(chǎng)的實(shí)際投資決策的洞見。
1 數(shù)據(jù)來源及數(shù)據(jù)處理
1.1 數(shù)據(jù)預(yù)處理
所用到的數(shù)據(jù)來自ModelWhale中2013—2023年最受關(guān)注的股票,包括麥當(dāng)勞、蘋果公司、亞馬遜、阿里巴巴、谷歌、微軟等30家企業(yè)數(shù)據(jù),數(shù)據(jù)中主要包含以下屬性:日期、開盤價(jià)、收盤價(jià)、最高價(jià)、最低價(jià)、調(diào)整后的收盤價(jià)以及成交量等7個(gè)屬性,屬性及描述如表1所示。
為了繪制K線圖及建模分析,添加新列‘Date1。把日期Date的格式更改為Datetime類型賦值給Date1 并設(shè)置為索引,將數(shù)據(jù)按照日期升序排序,查看最后5 條數(shù)據(jù),如圖1所示。
1.2 K 線圖分析
K線圖是以每個(gè)分析周期的開盤價(jià)、最高價(jià)、最低價(jià)和收盤價(jià)繪制而成,K線圖能夠全面透徹地觀察到市場(chǎng)的真正變化。從K線圖中,既可看到股價(jià)的趨勢(shì),也同時(shí)可以了解到每日市況的波動(dòng)情形。本文以麥當(dāng)勞數(shù)據(jù)為例,選擇Python 中的Pyecharts 庫(kù)中的Kline()函數(shù)繪制K 線圖,選擇數(shù)據(jù)中的Open、Close、High、Low屬性,將其組合成二維列表作為y軸數(shù)據(jù),日期則作為x軸數(shù)據(jù),進(jìn)行可視化繪圖。由于股票數(shù)據(jù)涉及的時(shí)間范圍較長(zhǎng),運(yùn)用DataZoomOpts全局配置項(xiàng)對(duì)x軸數(shù)據(jù)進(jìn)行區(qū)域縮放,縮放前的可視化展示如圖2(左)所示,圖2(左)可觀測(cè)在整個(gè)時(shí)間周期內(nèi)股價(jià)的變化趨勢(shì)。查看部分時(shí)間范圍內(nèi)的詳細(xì)數(shù)據(jù)變化,拖動(dòng)縮放滾動(dòng)條調(diào)整時(shí)間軸,如圖2(右)所示,圖2 (右)中紅色圖柱代表收盤價(jià)大于開盤價(jià),即股票上漲,灰色圖柱代表收盤價(jià)小于開盤價(jià),即股票下跌。線條最高點(diǎn)是最高價(jià)的數(shù)據(jù),線條最低點(diǎn)是最低價(jià)的數(shù)據(jù),圖柱的高低點(diǎn)位則分別代表開盤價(jià)或收盤價(jià)的數(shù)據(jù)。由圖2可以看出,股價(jià)整體在近10年內(nèi)處于上升趨勢(shì),但局部漲跌各占50%左右概率。因此,在股票投資中,長(zhǎng)期持有是一種穩(wěn)健的策略,可確保在市場(chǎng)波動(dòng)中保持相對(duì)穩(wěn)定的回報(bào)。
2 回歸模型構(gòu)建與模型評(píng)估
2.1 線性回歸
線性回歸是一種基本的回歸分析方法,通過擬合線性關(guān)系來預(yù)測(cè)目標(biāo)變量,建立線性數(shù)學(xué)模型并進(jìn)行評(píng)價(jià)預(yù)測(cè)來處理因變量與自變量之間的線性回歸關(guān)系[5]。假設(shè)θi 是線性回歸的權(quán)重參數(shù),xi 代表樣本點(diǎn)的數(shù)值,n 代表樣本點(diǎn)的個(gè)數(shù),建立回歸方程,在高維空間形成一個(gè)面來擬合所有的數(shù)據(jù)點(diǎn):
由于真實(shí)值和預(yù)測(cè)值之間存在一定的誤差,用ε來表示誤差,對(duì)于每個(gè)樣本:
式中,y(i) 代表真實(shí)值,θT xi 代表預(yù)測(cè)值。對(duì)于線性回歸算法來說,把誤差項(xiàng)ε 作為損失值,算法希望損失值越小越好,即ε 越小越好。當(dāng)樣本量足夠多的時(shí)候,誤差ε(i) 是獨(dú)立且服從高斯分布的,因此:
一般影響股價(jià)走勢(shì)的因素有開盤價(jià)格、最高價(jià)、最低價(jià)和成交量[1]。本文將當(dāng)日收盤價(jià)(Close) 作為時(shí)間序列的觀察對(duì)象。選取日期(Date) 、當(dāng)日開盤價(jià)(Open) 、當(dāng)日最高價(jià)(High) 、當(dāng)日最低價(jià)(Low) 和成交量(Volume) 這 5個(gè)變量作為自變量。首先使用sklearn 工具包中的StandardScaler()方法對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,然后將數(shù)據(jù)按照8:2 拆分訓(xùn)練集和測(cè)試集,采用sklearn工具包中的LinearRegression()模塊對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練。
2.2 模型評(píng)估
在回歸問題中,除了關(guān)心模型的準(zhǔn)確率之外,還更關(guān)心預(yù)測(cè)值與實(shí)際值之間的接近程度,因此本文使用回歸問題專用的評(píng)價(jià)指標(biāo)如均方誤差(MSE) 與R平方對(duì)線性回歸模型進(jìn)行評(píng)估。
(1) 均方誤差
均方誤差(MSE) 指標(biāo)是衡量模型預(yù)測(cè)結(jié)果與實(shí)際值之間的誤差。MSE的值越小代表模型的預(yù)測(cè)結(jié)果越接近實(shí)際值,反之則說明模型預(yù)測(cè)效果較差。MSE 的值可以用來比較不同模型的性能。
式中,n 為樣本數(shù)量,yi 為觀測(cè)值,yi 為模型的預(yù)測(cè)值。MSE的值一般不單獨(dú)使用,用在多個(gè)模型進(jìn)行比較的場(chǎng)合。
(2) R平方
R平方(R?) 指標(biāo)是衡量模型擬合數(shù)據(jù)的擬合度。R?的值在0到1之間,越接近1代表模型越能夠解釋數(shù)據(jù)的方差,越接近0則說明模型對(duì)數(shù)據(jù)的解釋程度較低[6]。
2.3 模型預(yù)測(cè)
將特征向量X和標(biāo)簽y合并成為一個(gè)DataFrame,并使用predict()方法預(yù)測(cè)新的收盤價(jià),將新的收盤價(jià)數(shù)據(jù)添加至DataFrame中,形成新的數(shù)據(jù)如圖4所示。其中forecast是預(yù)測(cè)值。
繪制預(yù)測(cè)值forecast與實(shí)際值close之間的對(duì)比折現(xiàn)圖,如圖5所示。從圖5可以看出,兩種線條幾乎完全被覆蓋住,說明模型擬合效果很好。
3 分類模型構(gòu)建與模型評(píng)估
3.1 邏輯回歸與隨機(jī)森林
邏輯回歸是一種用于解決分類問題的統(tǒng)計(jì)學(xué)習(xí)方法,用于預(yù)測(cè)給定輸入實(shí)例屬于某個(gè)類別的概率,在線性回歸的基礎(chǔ)上得到一個(gè)預(yù)測(cè)值,使用sigmoid 函數(shù)將該值映射到[0,1]的區(qū)間中,從而完成值到概率的轉(zhuǎn)換。Sigmoid函數(shù)表達(dá)式如下所示:
隨機(jī)森林是集成算法的一種,采用數(shù)據(jù)隨機(jī)采樣和特征隨機(jī)選擇兩種方法將多個(gè)決策樹并行放在一起使用,從而達(dá)到集成的目的[3]。隨機(jī)森林因其具有能夠處理高維度數(shù)據(jù)、能夠評(píng)估判斷特征的重要性排序等優(yōu)勢(shì),被廣泛用作分類問題。
本文為了將回歸問題轉(zhuǎn)換為分類問題來研究,需要在數(shù)據(jù)中添加新的屬性。首先,計(jì)算Close字段與上一條數(shù)據(jù)的Close字段的差,將結(jié)果存儲(chǔ)在新的字段“diff”中,然后判斷“diff”字段是否大于0,大于0說明收盤價(jià)處于“漲”階段,否則,股票收盤價(jià)則判斷為“跌”,最后使用apply方法,根據(jù)條件生成新的標(biāo)記字段“l(fā)abel”。處理結(jié)果如圖6所示。
由1.2節(jié)中的K線圖可知,文章所用數(shù)據(jù)的漲跌比例大約為1:1,數(shù)據(jù)較為均衡分布,因此可以用來預(yù)測(cè)股票的漲跌行為。接下來同樣選取2.1節(jié)中5個(gè)屬性作為自變量,即選取日期(Date) 、當(dāng)日開盤價(jià)(Open) 、當(dāng)日最高價(jià)(High) 、當(dāng)日最低價(jià)(Low) 和成交量(Volume) 這5個(gè)變量作為自變量,選取標(biāo)簽屬性(la?bel) 作為觀測(cè)對(duì)象,按照7:3劃分訓(xùn)練集和測(cè)試集,建立邏輯回歸和隨機(jī)森林模型。
3.2 模型評(píng)估
在分類問題中,模型評(píng)估的指標(biāo)一般有準(zhǔn)確率、召回率、F1 Score值、精度、ROC曲線和AUC值等,本文選擇準(zhǔn)確率、ROC曲線及AUC值作為評(píng)價(jià)指標(biāo)。
(1) 準(zhǔn)確率
準(zhǔn)確率定義如下:
式中:TP為預(yù)測(cè)的行業(yè)指數(shù)上漲且實(shí)際結(jié)果也上漲的樣本數(shù)據(jù)個(gè)數(shù);TN為預(yù)測(cè)的行業(yè)指數(shù)下跌且實(shí)際結(jié)果也下跌的樣本數(shù)據(jù)個(gè)數(shù);FN為預(yù)測(cè)的行業(yè)指數(shù)下跌、實(shí)際結(jié)果卻上漲的樣本數(shù)據(jù)個(gè)數(shù);FP為預(yù)測(cè)的行業(yè)指數(shù)上漲、實(shí)際結(jié)果卻下跌的樣本數(shù)據(jù)個(gè)數(shù)。
邏輯回歸和隨機(jī)森林的準(zhǔn)確率如圖7所示。
(2) ROC曲線和AUC值
首先,使用sklearn 工具中的roc_curve 函數(shù)計(jì)算ROC曲線,返回3個(gè)值:假正例率(錯(cuò)誤地預(yù)測(cè)為正例的樣本占所有實(shí)際負(fù)例樣本的比例)、召回率(正確地預(yù)測(cè)為正例的樣本占所有實(shí)際正例樣本的比例)以及用于繪制ROC曲線的閾值(thresholds) ;然后,使用函數(shù)auc計(jì)算ROC曲線下的面積即AUC值,AUC值越接近1,說明模型性能越好。
ROC曲線及AUC值如圖8所示。
由圖8可知,隨機(jī)森林的AUC值為0.731,邏輯回歸的AUC值為0.462,隨機(jī)森林的模型效果明顯優(yōu)于邏輯回歸。
4 結(jié)論
綜上所述,線性回歸對(duì)股票價(jià)格預(yù)測(cè)準(zhǔn)確率較高,R2 值接近1,隨機(jī)森林對(duì)股票漲跌類型預(yù)測(cè)較準(zhǔn)確,AUC值達(dá)0.731。股票收盤價(jià)預(yù)測(cè)是一個(gè)回歸問題,收盤價(jià)是一個(gè)連續(xù)的數(shù)值,而不是一個(gè)離散的類別,線性回歸更適合用于解決回歸問題,在股票收盤價(jià)預(yù)測(cè)中,使用線性回歸來預(yù)測(cè)數(shù)值更合理。
本文通過K線圖分析及機(jī)器學(xué)習(xí)算法在股票價(jià)格趨勢(shì)預(yù)測(cè)中的應(yīng)用進(jìn)行深入研究,為投資者、金融從業(yè)者以及研究者提供有益的參考和指導(dǎo)。盡管市場(chǎng)可能發(fā)生局部變化和短期動(dòng)蕩,但長(zhǎng)期持有有助于規(guī)避瞬時(shí)波動(dòng),實(shí)現(xiàn)更為可靠的收益。