写点什么

金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA 预测价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)

  • 2023-07-08
    浙江
  • 本文字数:2135 字

    阅读完需:约 7 分钟

金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)

金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA 预测价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)

1.使用 CNN 模型预测未来一天的股价涨跌-CNN(卷积神经网络)

使用 CNN 模型预测未来一天的股价涨跌


数据介绍


open 开盘价;close 收盘价;high 最高价


low 最低价;volume 交易量;label 涨/跌


训练规模


特征数量×5;天数×5 = 5 × 5


卷积过程



最大池化过程



代码流程


  1. 获取股票数据

  2. 数据归一化

  3. 数据预处理(划分成 5×5)

  4. 数据集分割(训练集和测试集)

  5. 定义卷积神经网络

  6. 评估预测模型


模型架构


码源链接见文末跳转

文末链接跳转

2.基于 LSTM 预测股票价格(长短期记忆神经网络)

基于 LSTM 预测股票价格(简易版)


数据集:


沪深 300 数据


数据特征:


只选用原始数据特征(开盘价、收盘价、最高价、最低价、交易量)


时间窗口:


15 天


代码流程:


读取数据->生成标签(下一天收盘价)->分割数据集->LSTM 模型预测->可视化->预测结果评估


LSTM 网络结构:



函数介绍:


1、generate_label 生成标签(下一天收盘价)


2、generate_model_data 分割数据集


3、evaluate 结果评估


4、lstm_model LSTM 预测模型


5、main 主函数(含可视化)


可视化输出:


训练集测试集拟合效果:




评估指标:


1、RMSE:55.93668241713906


2、MAE:44.51361108752264


3、MAPE:1.3418267677320612


4、AMAPE:1.3420384401412058

3.基于随机森林预测股票未来第 d+k 天相比于第 d 天的涨/跌 Random-Forest(随机森林)

基于随机森林预测股票未来第 d+k 天相比于第 d 天的涨/跌(简易版)


参考论文:Predicting the direction of stock market prices using random forest


论文流程:




算法流程:


获取金融数据->指数平滑->计算技术指标->数据归一化->随机森林模型预测


函数介绍:


1、get_stock_data 通过 Tushare 获取原始股票数据


2、exponential_smoothing、em_stock_data 股票指数平滑处理


3、calc_technical_indicators 计算常用的技术指标


4、normalization 数据归一化处理并分割数据集


5、random_forest_model 随机森林模型并返回准确率和特征排名


决策树:


(1)ID3: 基于信息增益大的数据特征划分层次


(2)C4.5: 基于信息增益比=信息增益/特征熵划分层次


(3)CART: 基于 Gini 划分层次


基于 Bagging 集成学习算法,有多棵决策树组成(通常是 CART 决策树),其主要特性有:


(1)样本和特征随机采样


(2)适用于数据维度大的数据集


(3)对异常样本点不敏感


(4)可以并行训练(决策树间独立同分布)


算法输出:


注意:算法仅用于参考学习交流,由于是研一时期独立编写(以后可能进一步完善),所公开的代码并非足够完善和严谨,如以下问题:


  1. 模型涉及参数未寻优(可考虑网格搜索、随机搜索、贝叶斯优化)

  2. 指数平滑因子

  3. 随机森林模型树数量、决策树深度、叶子节点最小样本数等

  4. 未来第 k 天的选择

  5. 归一化方法

  6. 随机森林模型其实本身不需要数据归一化(如算法对数据集进行归一化也需要考虑对训练集、验证集、测试集独立归一化)

  7. 股票预测考虑的数据特征:

  8. 原始数据特征(open/close/high/low)

  9. 技术指标(Technical indicator)

  10. 企业公开公告信息

  11. 企业未来规划

  12. 企业年度报表

  13. 社会舆论

  14. 股民情绪

  15. 国家政策

  16. 股票间影响等


4.模型输出结果



5.随机森林参数优化参考表


4.基于 ARMA 预测股票价格-ARMA(自回归滑动平均模型)

基于 ARMA 预测股票价格(5 分钟数据)


1.检测数据平稳化


2.差分/对数等数据处理


3.使用 ARMA 模型预测


备注:部分代码参考网络资源

5.金融时间序列相似度计算

5.1.皮尔逊相关系数( pearson_correlation_coefficient)

1.1 由于不同股票价格范围差距过大,在进行股票时间序列相似度匹配过程中通常考虑对数差处理,其公式如下所示:



1.2 经过对数差处理后的金融时间序列可表示:



1.3 皮尔逊相关系数计算公式:



1.4 结果


1.4.1 相关性较强



1.4.2 相关性较弱


5.2.动态时间规整(dynamic_time_wrapping)

2.1 计算两个金融时间序列的时间点对应数据的欧氏距离



2.2 更新时间点对应数据的距离



2.3 动态时间规整距离



2.4 伪代码



2.5 动态时间规整距离输出图举例



2.6 动态时间规整最优匹配对齐



2.7 结果


2.7.1 动态时间规整距离较短



2.7.1 动态时间规整距离较长


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.特征间相关性(corr.py)

6.4.绘制预测模型性能——柱状图(result_bar.py)

6.5.绘制预测模型性能——折线图(result_plot.py)

6.6.相似金融时间序列绘制(similarity_time_series.py)

6.7.计算分类的评价指标(evaluation.py)

(1)准确率 Accuracy


(2)精确率 Precision


(3)召回率 Recall


(4)特异度 Specificity


(5)综合评价指标 F-measure


(6)马修斯相关系数 MCC(Matthews Correlation Coefficient)

6.8.窗口数据归一化(normalization.py)

(1)z-score 标准化(std)


(2)最大最小归一化(maxmin)

6.9.股票数据下载(download.py)

(1)tushare 接口


(2)JQdata 接口

6.10.roc 曲线绘制(roc.py)

6.11.混淆矩阵绘制(confusion_matrix.py)

6.12.卡尔曼滤波(kalmanfilter.py)

6.13.蜡烛图 (candle.py)

码源链接见文末跳转

文末链接跳转


更多优质内容请关注公号 &知乎:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。




发布于: 2023-07-08阅读数: 3
用户头像

本博客将不定期更新关于NLP等领域相关知识 2022-01-06 加入

本博客将不定期更新关于机器学习、强化学习、数据挖掘以及NLP等领域相关知识,以及分享自己学习到的知识技能,感谢大家关注!

评论

发布
暂无评论
金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)_人工智能_汀丶人工智能_InfoQ写作社区