基于支持向量机(SVM)的股市趋势预测系统
项目介绍
本项目是一款基于支持向量机(SVM)算法的金融量化分析工具。系统通过支持向量回归(SVR)模型对股票价格进行建模,能够自动提取多种技术分析指标,并利用网格搜索算法优化模型超参数,从而实现对股价波动趋势的科学预测。系统不仅提供精确的价格数值预测,还能通过分类转化评估涨跌趋向,辅助投资者进行风险评估与决策。
主要功能特性
- 自动化数据建模:内置随机游走模型生成具有时间序列特征的模拟股市数据,涵盖开盘、最高、最低、收盘及成交量。
- 多维度指标提取:系统自动计算五日均线(MA5)、十日均线(MA10)、相对强弱指标(RSI)以及平滑异同移动平均线(MACD)等关键技术指标。
- 智能参数寻优:集成基于网格搜索和交叉验证的优化机制,自动寻找最优的惩罚参数(C)和核函数参数(Gamma)。
- 数据预处理体系:实现严谨的训练集与测试集划分(80/20比例),并采用 mapminmax 归一化技术处理量纲差异,确保模型收敛。
- 多维度评估可视化:系统自动输出预测价格对比图、趋势预测混淆矩阵、残差分布图及策略回测收益曲线。
使用方法
- 运行环境准备:确保安装有 MATLAB 2020b 或更高版本,并安装 Statistics and Machine Learning Toolbox。
- 启动系统:在 MATLAB 控制命令行中直接运行主程序函数。
- 结果查看:程序运行后将自动弹出可视化图表,并在命令行窗口输出包括 RMSE、MAE、R2 评分及趋势预测准确率在内的性能报告。
系统要求
- 软件环境:MATLAB R2020b 及以上版本。
- 依赖工具箱:统计与机器学习工具箱(Statistics and Machine Learning Toolbox)。
- 硬件配置:建议 8GB RAM 以上,主频 2.0GHz 以上处理器以保证网格搜索效率。
实现逻辑与功能细节说明
- 数据仿真与构建:
系统首先设定固定随机种子(42),通过带有 0.0005 漂移项的随机游走算法生成 500 个交易日的模拟收盘价,并据此构建包含开盘价、极值价和成交量的交易账表。
- 技术特征工程:
- 趋势指标:利用移动平均函数计算 5 日和 10 日均线。
- 动量指标:通过计算 14 日涨跌幅平均值构建 RSI 指标,反映价格强弱。
- 信号指标:通过内置辅助函数计算 EMA12 和 EMA26 的差值(MACD 线),并生成 9 日信号线(DEA)。
- 特征对齐:通过滞后处理,使用当日的技术指标作为特征(X),预测下一交易日的收盘价作为标签(Y)。
- 深度预处理流程:
- 缺失值处理:剔除由于指标初始化计算导致的含有空值的观测行。
- 数据集分割:将前 80% 的数据设为训练集,后 20% 设定为非预见测试集。
- 归一化:将特征与标签映射至 [0, 1] 区间,测试集严格同步训练集的映射参数。
- 核心训练算法:
- 模型选择:采用 fitrsvm 函数构建 Gaussian 核函数的支持向量回归模型。
- 优化策略:程序在训练集内部通过 70% 子训练集和 30% 验证集的划分,对 BoxConstraint(C)和 KernelScale(g)进行双层循环网格搜索,目标是最小化均方误差(MSE)。
- 预测与反向映射:
模型在测试集上得出归一化后的预测值,随后通过反归一化(Reverse Mapping)恢复为真实的股价水平。
- 量化评价与回测:
- 回归评价:计算均方根误差(RMSE)、平均绝对误差(MAE)和 R2 确定系数。
- 分类评价:将回归预测转化为涨跌方向判断(涨为 1,跌为 0),并计算预测准确率,生成混淆矩阵。
- 策略模拟:实施简单买入策略(今日预测明日上涨则买入并持有一日),通过累计收益率曲线对比系统策略与基准持币收益。
关键函数与算法细节
- Gaussian 核函数(RBF):通过将特征空间映射到高维,处理股价预测中的非线性特征。
- 网格搜索:遍历 $2^{-5}$ 到 $2^{15}$ 的惩罚因子范围,精细调节模型在学习能力与泛化性能之间的平衡。
- 指数移动平均算法(EMA):在 MACD 辅助函数中通过 alpha 系数平滑价格波动,捕捉趋势转折信号。
- 反向归一化技术:确保预测结果具有物理意义,能够与实际股价进行直观对照。