金融時間序列預(yù)測方法合集:CNN、LSTM、數(shù)學(xué)建模科研適用

金融時間序列預(yù)測方法合集:CNN、LSTM、隨機(jī)森林、ARMA預(yù)測股票價格(適用于時序問題)、相似度計算、各類評判指標(biāo)繪圖(數(shù)學(xué)建??蒲羞m用)
1.使用CNN模型預(yù)測未來一天的股價漲跌-CNN(卷積神經(jīng)網(wǎng)絡(luò))
使用CNN模型預(yù)測未來一天的股價漲跌
數(shù)據(jù)介紹
open 開盤價;close 收盤價;high 最高價
low 最低價;volume 交易量;label 漲/跌
訓(xùn)練規(guī)模
特征數(shù)量×5;天數(shù)×5 = 5 × 5
卷積過程

最大池化過程

代碼流程
獲取股票數(shù)據(jù)
數(shù)據(jù)歸一化
數(shù)據(jù)預(yù)處理(劃分成5×5)
數(shù)據(jù)集分割(訓(xùn)練集和測試集)
定義卷積神經(jīng)網(wǎng)絡(luò)
評估預(yù)測模型
模型架構(gòu)

碼源鏈接見文末跳轉(zhuǎn)
文末鏈接跳轉(zhuǎn)
2.基于LSTM預(yù)測股票價格(長短期記憶神經(jīng)網(wǎng)絡(luò))
基于LSTM預(yù)測股票價格(簡易版)
數(shù)據(jù)集:
滬深300數(shù)據(jù)
數(shù)據(jù)特征:
只選用原始數(shù)據(jù)特征(開盤價、收盤價、最高價、最低價、交易量)
時間窗口:
15天
代碼流程:
讀取數(shù)據(jù)->生成標(biāo)簽(下一天收盤價)->分割數(shù)據(jù)集->LSTM模型預(yù)測->可視化->預(yù)測結(jié)果評估
LSTM網(wǎng)絡(luò)結(jié)構(gòu):

函數(shù)介紹:
1、generate_label 生成標(biāo)簽(下一天收盤價)
2、generatemodeldata 分割數(shù)據(jù)集
3、evaluate 結(jié)果評估
4、lstm_model LSTM預(yù)測模型
5、main 主函數(shù)(含可視化)
可視化輸出:
訓(xùn)練集測試集擬合效果:


評估指標(biāo):
1、RMSE:55.93668241713906
2、MAE:44.51361108752264
3、MAPE:1.3418267677320612
4、AMAPE:1.3420384401412058
3.基于隨機(jī)森林預(yù)測股票未來第d+k天相比于第d天的漲/跌Random-Forest(隨機(jī)森林)
基于隨機(jī)森林預(yù)測股票未來第d+k天相比于第d天的漲/跌(簡易版)
參考論文:Predicting the direction of stock market prices using random forest
論文流程:


算法流程:
獲取金融數(shù)據(jù)->指數(shù)平滑->計算技術(shù)指標(biāo)->數(shù)據(jù)歸一化->隨機(jī)森林模型預(yù)測
函數(shù)介紹:
1、getstockdata 通過Tushare獲取原始股票數(shù)據(jù)
2、exponentialsmoothing、emstock_data 股票指數(shù)平滑處理
3、calctechnicalindicators 計算常用的技術(shù)指標(biāo)
4、normalization 數(shù)據(jù)歸一化處理并分割數(shù)據(jù)集
5、randomforestmodel 隨機(jī)森林模型并返回準(zhǔn)確率和特征排名
決策樹:
(1)ID3: 基于信息增益大的數(shù)據(jù)特征劃分層次
(2)C4.5: 基于信息增益比=信息增益/特征熵劃分層次
(3)CART: 基于Gini劃分層次
基于Bagging集成學(xué)習(xí)算法,有多棵決策樹組成(通常是CART決策樹),其主要特性有:
(1)樣本和特征隨機(jī)采樣
(2)適用于數(shù)據(jù)維度大的數(shù)據(jù)集
(3)對異常樣本點不敏感
(4)可以并行訓(xùn)練(決策樹間獨立同分布)
算法輸出:
注意:算法僅用于參考學(xué)習(xí)交流,由于是研一時期獨立編寫(以后可能進(jìn)一步完善),所公開的代碼并非足夠完善和嚴(yán)謹(jǐn),如以下問題:
模型涉及參數(shù)未尋優(yōu)(可考慮網(wǎng)格搜索、隨機(jī)搜索、貝葉斯優(yōu)化)
指數(shù)平滑因子
隨機(jī)森林模型樹數(shù)量、決策樹深度、葉子節(jié)點最小樣本數(shù)等
未來第k天的選擇
歸一化方法
隨機(jī)森林模型其實本身不需要數(shù)據(jù)歸一化(如算法對數(shù)據(jù)集進(jìn)行歸一化也需要考慮對訓(xùn)練集、驗證集、測試集獨立歸一化)
股票預(yù)測考慮的數(shù)據(jù)特征:
原始數(shù)據(jù)特征(open/close/high/low)
技術(shù)指標(biāo)(Technical indicator)
企業(yè)公開公告信息
企業(yè)未來規(guī)劃
企業(yè)年度報表
社會輿論
股民情緒
國家政策
股票間影響等
4.模型輸出結(jié)果

5.隨機(jī)森林參數(shù)優(yōu)化參考表

4.基于ARMA預(yù)測股票價格-ARMA(自回歸滑動平均模型)
基于ARMA預(yù)測股票價格(5分鐘數(shù)據(jù))
1.檢測數(shù)據(jù)平穩(wěn)化
2.差分/對數(shù)等數(shù)據(jù)處理
3.使用ARMA模型預(yù)測
備注:部分代碼參考網(wǎng)絡(luò)資源
5.金融時間序列相似度計算
5.1.皮爾遜相關(guān)系數(shù)( pearsoncorrelationcoefficient)
1.1 由于不同股票價格范圍差距過大,在進(jìn)行股票時間序列相似度匹配過程中通常考慮對數(shù)差處理,其公式如下所示:

1.2經(jīng)過對數(shù)差處理后的金融時間序列可表示:

1.3皮爾遜相關(guān)系數(shù)計算公式:

1.4結(jié)果
1.4.1相關(guān)性較強(qiáng)

1.4.2相關(guān)性較弱

5.2.動態(tài)時間規(guī)整(dynamictimewrapping)
2.1 計算兩個金融時間序列的時間點對應(yīng)數(shù)據(jù)的歐氏距離

2.2 更新時間點對應(yīng)數(shù)據(jù)的距離

2.3 動態(tài)時間規(guī)整距離

2.4 偽代碼

2.5 動態(tài)時間規(guī)整距離輸出圖舉例

2.6 動態(tài)時間規(guī)整最優(yōu)匹配對齊
2.7結(jié)果
2.7.1動態(tài)時間規(guī)整距離較短
2.7.1動態(tài)時間規(guī)整距離較長
5.3.余弦相似度(cosine similarity)
6.金融時間序列(其他)
6.1.計算特征方差(calc_variance.py)
open 161211.21669504658close 161415.73886306392high 166077.6958545937low 156622.3645795179......
6.2.繪制混淆矩陣(confuse_matrix.py)
6.3.特征間相關(guān)性(corr.py)
6.4.繪制預(yù)測模型性能——柱狀圖(result_bar.py)
6.5.繪制預(yù)測模型性能——折線圖(result_plot.py)
6.6.相似金融時間序列繪制(similaritytimeseries.py)
6.7.計算分類的評價指標(biāo)(evaluation.py)
(1)準(zhǔn)確率Accuracy
(2)精確率Precision
(3)召回率Recall
(4)特異度Specificity
(5)綜合評價指標(biāo)F-measure
(6)馬修斯相關(guān)系數(shù)MCC(Matthews Correlation Coefficient)
6.8.窗口數(shù)據(jù)歸一化(normalization.py)
(1)z-score標(biāo)準(zhǔn)化(std)
(2)最大最小歸一化(maxmin)
6.9.股票數(shù)據(jù)下載(download.py)
(1)tushare接口
(2)JQdata接口
6.10.roc曲線繪制(roc.py)
6.11.混淆矩陣?yán)L制(confusion_matrix.py)
6.12.卡爾曼濾波(kalmanfilter.py)
6.13.蠟燭圖 (candle.py)
碼源鏈接見文末跳轉(zhuǎn)
[文末鏈接跳轉(zhuǎn)]:https://blog.csdn.net/sinat_39620217/article/details/131608655
更多優(yōu)質(zhì)內(nèi)容請關(guān)注公號&知乎:汀丶人工智能;會提供一些相關(guān)的資源和優(yōu)質(zhì)文章,免費獲取閱讀。