王一斐


摘要:為了提高股票價格預測的準確性并降低預測耗時,文章引入了粒子優化神經網絡算法。通過融合神經網絡和粒子群優化算法,構建了一個更有效的預測模型,以更好地反映股票價格的動態變化。同時,引入混沌干擾因子和變異因子增加算法多樣性,進一步提高預測的精確性和穩定性。這種基于粒子優化神經網絡的方法為股票價格預測領域的研究和應用提供了一種新的解決方案。
關鍵詞:股價預測;粒子優化;PSO;神經網絡算法;SVM
中圖分類號:TP18? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)31-0041-03
開放科學(資源服務)標識碼(OSID) :<G:\飛翔打包文件一\電腦2023年第三十一期打包文件\9.01xs202331\Image\image246.png>
隨著全球金融市場的不斷擴展和金融技術的快速發展,股票市場作為重要的投資領域吸引了廣泛的關注。股票價格預測成為投資者、金融機構和研究人員研究的核心問題。較為準確的股票價格預測不僅有助于投資者做出明智的投資決策,還可以為金融機構提供更好的風險管理工具。由于股票市場受宏觀經濟指標、公司業績、市場情緒等復雜因素的影響,股票價格預測具有非常大的難度。
傳統的股票價格預測方法往往基于統計學模型或時間序列分析,如移動平均法和指數平滑法等。這些方法在一定程度上能夠提供預測結果,但在應對非線性關系和多變量影響時往往表現不佳。此外,傳統方法的預測精度和效率也受到極大限制。近年來,為了克服傳統方法的局限性,機器學習技術逐漸開始應用于股票價格預測領域。神經網絡作為一種強大的非線性模型,在捕捉復雜股票價格關系方面顯示出了巨大潛力。然而,神經網絡的參數優化往往依賴于梯度下降等迭代方法,這在大規模數據和復雜網絡結構下可能導致收斂速度較慢的問題。
1 傳統股票價格預測方法
1.1 移動平均法
移動平均法是一種基本的平滑方法,它通過計算一段時間內股票價格的均值來預測未來的價格。然而,該方法在應對非線性趨勢和突發事件時表現不佳。其公式為(1) :
[MAt=P1+...+Ptt] (1)
其中,MAt表示時間t的移動平均值,P1表示第1個時間點的股票價格,t為移動平均的時間窗口大小。
1.2 指數平滑法
指數平滑法是基于加權平均的思想,對歷史數據進行指數加權平均,預測未來的股票價格。然而,該方法無法準確捕捉復雜的市場波動和非線性變化。其公式如下(2) :
[ESt=α?Pt+1-α?ESt-1] (2)
式中,ESt表示時間點t的指數平滑值,Pt表示時間點t的股票價格,α為平滑系數。
1.3 自回歸移動平均模型
自回歸移動平均模型(ARIMA) 是一種常用的時間序列分析方法,它考慮了數據的自相關和移動平均性質,以捕捉時間序列的趨勢和周期性變化。然而,該模型對數據的平穩性和線性關系有一定要求,無法處理非線性關系和復雜的市場情況[1]。
2 基于粒子優化的神經網絡算法
2.1 粒子優化算法
粒子優化算法(Particle Swarm Optimization,PSO) 是一種啟發式優化算法,其核心概念源自模擬鳥群或魚群中個體之間的協作與信息共享。粒子優化算法可以用來在股票價格預測中優化神經網絡模型的參數,提高預測準確性。PSO算法中,每個搜索解被表示為一個粒子,每個粒子的位置代表神經網絡的參數配置。粒子通過跟蹤個體歷史最優位置和群體歷史最優位置來調整自身位置,從而逐漸逼近最優解[2]。算法執行步驟如式(3) :
更新粒子速度:
[Vit+1=w?Vit+c1?r1?Pbest,it-Xit+c2?r2?Gbestt-Xit] (3)
式中,Vi(t+1)是粒子i在時間t+1的速度,w是慣性權重,c1和c2是學習因子,r1和r2是隨機數,Pbest,i(t)是粒子i的歷史最優位置,Gbest(t)是粒子群體的最優位置,Xi(t)是粒子i的當前位置。
更新粒子位置(4) :
[Xit+1=Xit+Vit+1] (4)
計算適應度(5) :
[FitnessXit+1=1ni=1nyi-yi2] (5)
更新個體最優位置和群體最優位置(6) :
[Pbest,it+1=Xit+1,若FitnessXit+1<FitnessPbest,itGbestt+1=Xit+1,若FitnessXit+1<FitnessGbestt] (6)
2.2 引入混沌干擾因子與變異因子
引入混沌干擾因子(Chaos Perturbation Factor) 和變異因子(Mutation Factor) 是增加算法多樣性和全局搜索能力的一種有效方法。這些因子能夠使粒子在搜索過程中具有更大的隨機性,從而更好地探索參數空間,避免陷入局部最優解中。混沌干擾因子是一種引入隨機性的方法,用于調整粒子的速度和位置。其核心思想是利用混沌序列生成隨機的擾動項,以增加搜索的多樣性。混沌序列通過Logistic 映射等復雜的非線性動力學方程來生成(7) :
[xn+1=r?xn?1-xn] (7)
式中,r是控制參數,而xn表示混沌序列的第n個元素[3]。將混沌序列映射到合適的范圍,并結合粒子原有的速度和位置,可以得到混沌干擾因子C(8) :
[C=xn-minxmaxx-minx] (8)
這里的min(x)和max(x)分別是混沌序列的最小值和最大值。混沌干擾因子會在每次迭代中對粒子的速度和位置進行調整,從而增加搜索的多樣性。
變異因子則用于控制粒子在搜索空間中的局部變化。變異因子是一個隨機項,可以調整粒子的位置。變異因子的引入能夠保持算法的多樣性,避免陷入局部最優解。變異因子可以表示為M = R × 搜索空間范圍,隨機數R在每次迭代中都會由程序重新生成。
2.3 神經網絡模型構建
本研究選擇以下幾個關鍵特征進行預測:1) 股票/股指歷史價格;2) 成交量;3) EMA;4) RSI。基于這些特征,可以設定神經網絡模型的輸入層參數如下:
股票/股指歷史價格:作為一個序列數據,選擇過去若干交易日的股票/股指收盤價作為特征。如選擇過去15個交易日的數據,那么輸入層的節點數就是15。
成交量:成交量通常與股票/股指價格的波動密切相關,本研究選擇過去12個交易日的成交量作為另一個特征。類似地,如選擇過去X個交易日的成交量數據,那么需要額外添加X個節點。
技術指標:EMA和RSI是常用的技術指標,用于衡量股票價格的趨勢和市場買賣雙方力量[4]。引入EMA和RSI兩種技術指標作為特征,那么需要添加2個節點。
總結起來,本研究選擇了過去15個交易日的股票/股指收盤價、過去12個交易日的成交量數據以及2種技術指標作為輸入特征,輸入層的節點數為:15 + 12 + 2 = 29。每個節點對應一個特征,它們將作為神經網絡模型的輸入,用于預測股票價格的變化趨勢。
3 實驗設計與數據處理
3.1 數據收集與預處理
選擇了滬深300指數、中證500指數以及中信證券(股票代碼:600030) 自2012年9月13日至2022年5月24日的日K(開盤價、收盤價、最高價、最低價以及成交量,來源:Wind) 作為回測數據,用于構建和評估基于粒子優化神經網絡算法的股票價格預測模型。在數據預處理階段,采取了以下方法來處理原始數據:
1) 缺失值處理。首先檢查數據中是否存在缺失值。對于存在缺失值的數據點,使用線性插值方法進行填充,保持數據的連續性。設定前一個已知數據點為y1,后一個已知數據點為y2,它們之間的時間間隔為x。對于缺失值yi,使用以下公式進行插值(9) :
[yi=y1+xx2-x1?y2-y1] (9)
這種方法確保了缺失值的填充是基于相鄰數據點之間的線性趨勢,從而保留了數據的內在模式。如果缺失值較多或無法合理插值,則將這些數據點從數據集中刪除。
2) 異常值處理。使用統計方法檢測數據中的異常值。對于價格數據,可以計算每日價格與其移動平均值之間的差異,并設置閾值來判定異常值。對于成交量數據,可以根據歷史成交量的范圍來判斷是否存在異常值。
3) 數據標準化。將股票價格和交易量等連續數據進行標準化,以便在模型訓練過程中不同特征之間的尺度保持一致。采用Z-score標準化方法,將數據轉化為均值為0,標準差為1的分布。對于某個特征x,其Z-score標準化的計算方式為(10) :
[Z=x - μσ] (10)
式中,Z表示標準化后的值,x是原始數據的值,μ是該特征的均值,σ是該特征的標準差。對股票價格和成交量等特征應用上述Z-score標準化公式,可以將這些特征轉化為具有相同均值和標準差的標準分布,在模型訓練中減少不同特征之間的尺度差異對模型性能的影響,從而提高模型的穩定性和收斂速度。
4) 數據分割。整個數據集的70%劃分為訓練集,30%劃分為測試集。這樣可以確保模型在未見過的數據上進行測試,評估其預測性能。
5) 時間序列處理。對于時間序列數據,采用滑動窗口方法。將時間序列數據劃分為多個窗口,每個窗口包含一定數量的連續數據點,用于訓練和測試模型的滾動預測能力。
3.2 實驗設置與參數選擇
為了評估基于粒子優化神經網絡算法的股票價格預測方法的性能,在實驗前進行了軟硬件設置和參數選擇:
硬件配置 Intel Core i9-11900K(3.50 GHz,8核心16線程),32GB DDR4內存(3200MHz) ,NVIDIA GeForce RTX 3080 × 3(10GB GDDR6X,8 704個CUDA核心),確保模型的訓練和測試過程具有足夠的計算資源。
軟件配置 使用Python 3.10編寫實驗腳本,借助TensorFlow和Keras等深度學習框架來構建神經網絡模型。還使用了NumPy和Pandas等庫來進行數據處理和分析。實驗代碼在Jupyter Notebook中運行,并通過Git進行版本控制。
神經網絡模型配置 構建了一個多層感知器(Multi-Layer Perceptron,MLP) 的神經網絡模型,其中包括輸入層、若干隱藏層以及輸出層。輸入層的節點數根據特征的數量來確定(本研究為29個),每個隱藏層都包含若干神經元,輸出層用于進行股票價格的回歸預測。本文選擇了ReLU作為激活函數,并在每個隱藏層之間添加了Dropout層以防止過擬合。
PSO算法參數設置 在粒子優化神經網絡算法中設置了以下參數:慣性權重w=0.7,學習因子c1 = c2 = 2,隨機數r1和r2的范圍為[0, 1]。為了引入混沌干擾因子,選擇了Logistic映射方程,并通過設置控制參數r來生成混沌序列。變異因子M通過隨機數R與搜索空間范圍相乘得到。
訓練和測試參數 將訓練集輸入模型進行訓練,采用均方誤差(Mean Squared Error,MSE) 作為損失函數。訓練過程選擇了學習率為 0.000 3的Adam優化器,并設置了64的批量大小,訓練集迭代18輪次。為了防止過擬合,在訓練過程中采用早停策略,并在驗證集上監控模型性能[5]。
3.3 評價指標的選擇
1) 均方根誤差(Root Mean Squared Error,RMSE) 。RMSE是衡量預測值與實際值之間誤差的標準差,能夠反映模型預測的精度。其計算公式如下(11) :
[RMSE=1ni=1nyi-yi2] (11)
式中,n表示樣本數量,yi為實際股票價格,?i為模型預測的股票價格。
2) 平均絕對誤差(Mean Absolute Error,MAE) 。MAE是預測值與實際值之間絕對誤差的平均值,用于衡量模型的預測準確性。其計算公式如下(12) :
[MAE=1ni=1nyi-yi] (12)
3) 預測準確率(Prediction Accuracy) 。將預測值與實際值進行比較,通過設定一定的誤差容忍度,可以計算出預測準確率。假設誤差容忍度為δ,預測準確率可表示為(13) :
預測準確率 = (1 - 誤差在δ范圍內的樣本數 / 總樣本數)× 100%? [(13)]
4) 預測耗時(Prediction Time) 。預測耗時是模型進行預測所需的時間,用于評估模型的計算效率。本文在實驗中記錄了每次預測的時間,并計算平均預測耗時。
4 預測結果分析
4.1 算法效果與準確性分析
不同算法對股指/股價的預測結果見表1。
從RMSE和MAE的數據來看,基于粒子優化神經網絡算法的股票價格預測方法在所有情況下都表現出相對較低的誤差值。也就是說該算法在預測股票價格時更能接近實際值,與傳統的移動平均法和支持向量機(SVM) 相比,具備更高的預測精度。在股票市場中,預測的準確性對于投資者的決策至關重要,因此低誤差值是一項顯著的優勢。從預測準確率的角度來看,基于粒子優化神經網絡算法的股票價格預測方法在所有情況下均取得了較高的預測準確率。尤其在中信證券(600030) 這個具體個股上,預測準確率達到了80%以上,展現了該方法在個股預測中的優越性。高預測準確率意味著該方法能夠相對準確地判斷股價的漲跌趨勢,為投資者提供更可靠的參考。與移動平均法和支持向量機相比,基于粒子優化神經網絡算法的方法在預測滬深300和中證500的股指價格時也表現出更低的誤差和更高的準確率。這說明該算法在股指價格的預測中同樣具有較好的適用性,能夠更精準地捕捉股市整體趨勢。
4.2 預測耗時與效率比較
預測耗時與效率比較見圖1。
可以看出,基于粒子優化神經網絡算法的股票價格預測方法在平均預測耗時方面表現相對較低,平均預測耗時為23.7 s。相比之下,移動平均法和SVM方法分別需要45.1 s和38.9 s的預測耗時。這說明基于粒子優化神經網絡的方法在預測過程中具有更高的計算效率,能夠更快地生成預測結果。此外,還觀察到基于粒子優化神經網絡算法的方法在CPU和GPU的使用率方面相對充分,分別為75.23%和55.87%,意味著該方法能夠充分利用計算資源,實現更高效的預測。同時,其內存占用為17.2GB(53.8%) ,與其他算法相比內存占用較高。
5 結束語
雖然粒子優化神經網絡方法在預測方面表現出較好的結果,但仍然需要進一步探究不同因素對預測結果的影響,以及如何更好地調整模型參數來提高預測性能。本文提出的基于粒子優化神經網絡算法的股票價格預測方法為股票市場的投資決策提供了一種新的有效工具。未來的研究可以在此基礎上進一步優化算法,拓展數據源,實現更精準的預測,為投資者提供更有價值的決策支持。
參考文獻:
[1] 翁紫霞.基于ARIMA模型的股價分析與預測——以建設銀行為例[J].現代信息科技,2023,7(14):137-141.
[2] 朱文元.基于改進粒子群算法優化神經網絡的股價預測研究[D].秦皇島:燕山大學,2022.
[3] 劉玲伶,李梅梅.一類指數型離散Logistic迭代方程的動力學分析[J].重慶師范大學學報(自然科學版),2021,38(6):71-76.
[4] 李娜,毛國君,鄧康立.基于k-means聚類的股票KDJ類指標綜合分析方法[J].計算機與現代化,2018(10):12-17.
[5] 任佳屹,王愛銀.融合因果注意力Transformer模型的股價預測研究[J].計算機工程與應用,2023,59(13):325-334.
【通聯編輯:光文玲】