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