编者按:九层之台,始于累土,四载潜心,方有小成。金融论文是结合现实经济活动中出现的金融问题加以研究 并将研究成果描述出来的过程。大学四年转瞬即逝,盛宝金融科技商学院又一批学子们完成了他们的高质量毕业论文。由于现实经济活动可能涉及范围较广,需考虑的因素较多,为了让金融学子们能够更好的了解我们所能学习到的知识,以及对后世大家在金融行业的造诣不断走深,在此展示盛宝金融科技商学院优秀学子们的毕业论文献礼毕业季。
毕业论文这一痛并快乐的考验,虽然青涩,却是每一位大学学子青春时代最有价值的学术起点。在毕业季到来之时,学院微信公众号将陆续推出高质量本科毕业论文集萃,通过示范、带动与辐射作用,促进各专业各年级同学交流学习。
基于机器学习在股票投资组合优化和价格预测的应用研究
2020级金融科技专业 赵振儒
摘要:本文中证 A50 指数中的 50 支成分股为研究对象,研究数据涵盖了 2021 年至 2024 年期间的股票开盘价、收盘价、最高价、最低价以及成交量。通过对这些基础数据,来 构建 SMA_简单移动平均、RSI_相对强弱指数、MACD_移动平均收敛散度、KDJ_随机 振荡器、CCI_商品通道指数、ROC_价格变化率等九种技术指标作为特征变量,纳入机器学习算法,用于股票未来价格预测和投资组合优化。通过实证研究发现:
(1)在评价指标中,XGBoost 模型均展现出最佳性能,具备最高的预测精度。紧随其后的是 LSTM 模型,而 SVR 模型的表现则相对逊色。
(2)使用 XGBoost模型,将珀莱雅、科大讯飞、万华化学、天齐锂业和智飞生物 这五支股票的年化收益率纳入均值-CVaR 模型之中进行构建投资组合,从而在风险较小的情况下达到股票投资组合收益率最大化的效果。
(3 )均值-CVaR 模型构建得出最优投资权重向量为 : [0.14740812 0.21145914 0.21207756 0.21432281 0.21473238] ,且最优投资组合收益率为 35.80%。
关键词:LSTM 模型;SVM 模型;XBGoost 模型;价格预测;投资组合
论文研究内容
现阶段,虽然国内外在基于机器学习的股票投资组合优化上有所提升,但鉴于股票市场的复杂性和不确定性,如何进一步提高预测精度、优化投资组合策略仍是当前和未来研究的重点方向。本文基于股票的 open_开盘价、close_收盘价、high_最高价、low_最低价以及volume_成交量,来构建 SMA(简单移动平均)、RSI(相对强弱指数)、MACD(移动平均收敛散度)、KDJ(随机振荡器)、CCI(商品通道指数)、ROC(价格变化率)等九种术指标作为特征变量,纳入 LSTM 模型、SVM 模型和 XGBoost 模型中,分析机器学习模型的有效性,并将最优算法模型,对股票价格数据进行预测,构建投资组合模型。如下图 1-1,是论文总体的框架流程图。
实证分析
4.1 数据获取
本研究采用了中证指数有限公司在 2024 年 1 月 2 日发布的最新版中证 A50 指数(编号 930050)的构成成分作为核心考察标的,精心挑选了最具代表性的 50 家各领域龙头企业的股 票,旨在实现行业分布的多元化和全面性,从而深入剖析这些行业领军上市公司的证券综合 动态。所有数据均源自权威的国泰安信息资源库,研究的时间框架跨度长达三年,具体涵盖 自 2021 年 1 月 13 日至 2024 年 1 月 12 日期间的 A50 指数样本公司,共计 35490 个交易日, 数据处理和建模都是通过 Anaconda3 中的 Jupyter 平台为载体,以 Python 代码实现的,股票代码和名称如下:
表 4-1 股票代码和名称
4.2 数据预处理
4.2.1 数据集划分
依据网络检索和文献阅览,本文将数据集按照 8:2 的比例进行划分。训练集的数据将涵 盖从 2021 年 1 月 13 日至 2023 年 6 月 9 日的时间段,这段时间内共计 576 个交易日的数据。而测试集则包括从 2023 年 6 月 12 日到 2024 年 1 月 12 日的数据,共计 145 个交易日。该划 分旨在确保模型训练与测试时的完整性,从而更好地评估模型的性能。以招商银行(600036) 的收盘价格为例,图中蓝色区域代表用于模型训练的数据集,即训练集;而红色区域则代表 用于评估模型性能的数据集,即测试集。从图中可以看出招商银行 2021 年 1 月自 2024 年 1 月期间的股票趋势,招商银行从 2021 年 1 月到 2022 年 9 月前后持续震荡,总体趋势呈现下 降,2022 年 10 月至 2023 年 2 月左右其股票价格有回暖,呈现短幅上升趋势,但自 2023 年 2月起,股票价格一落千丈,直至期间低点。
图 4-1 招商银行数据训练集与测试集的划分
4.2.2 特征工程
特征工程的主要内容涵盖了多个关键环节,包括数据特征的构建、提取以及选择。简而 言之就是将原始数据集中的杂质和冗余部分进行剔除和提炼,旨在帮助机器学习模型更好的理解和总结,提升目标变量预测的精准度。
本文数据特征的提取,选择一些常见的基本指标,如:open_开盘价、close_收盘价、high_ 最高价、low_最低价以及 volume_成交量。这些特征可以帮助更好理解股票市场的基本趋势、波动程度和活动剧烈程度,并对预测股票未来价格具有一定的作用。
对股票数据特征的清洗,涵盖了处理缺失值和异常值等关键任务。对于缺失值处理通常 采用均值法、KNN 填充法、众数和默认值进行填充,本文由于股票数据集缺失值没有,所以 暂不处理。而对于异常值的处理,通常采用去除异常值或使用稳健的统计方法,例如使用稳 健的标准误、加权最小二乘法等。本文由于涉及股票数据集异常值较少,所以采用删除含有异常的观测值。股票数据特征清洗以便更好地进行特征提取和模型训练。
其次对于股票数据特征构建,除了基本特征之外,还可以通过特征构造和选择。例如, 可以使用技术指标,本文通过构建 SMA_简单移动平均、CCI_商品通道指数、ROC_价格变化 率、AO_奥斯金振荡器、Bollinger Bands_布林带、ADX_平均方向性指数,来描述股票市场的 趋势和波动性。此外,相关性分析和主成分分析等方法在特征选择中也发挥着重要作用,以减少特征的维度和数据冗余。
最后,在提取数据特征和构建数据特征之后,还需要对股票数据标准化处理,标准化处 理是将各个特征缩放到一个统一的尺度上,通常是使它们具有零均值和单位方差。这样做的好处是,它可以减少模型对特征尺度变化的敏感性,使得模型更加关注特征之间的相对关系。
本文采用 Z 分数标准,即最小-最大规范化(min-max ),公式如下:
4.2.3 小波降噪
小波降噪在金融时间序列的去噪处理有着广泛的应用。鉴于股票数据中频繁出现的干扰 和异常点对股价预测和深入研究的精确度构成挑战,有效的噪声消除变得至关重要。小波去 噪技术就像在复杂的音景中识别出清晰的旋律,其核心策略基于信号与噪声在小波变换框架 下的特性差异。具体来说,它依赖于识别并剔除那些在小波系数图谱中代表噪声部分的分量, 同时保留反映真实信号信息的部分,以此提升数据的纯净度。然后再把经过处理后的系数经 过重新组合,最终生成一个相对纯净的信号。相较于其他去噪技术,小波降噪具有显著的优 势和独到之处,能把股票数据分解成不同的频率分量。这样一来,噪声和异常值就更容易被 识别和去除。所以,当我们想要从股票数据中提取有用的信息时,小波降噪真的是个非常有用的工具。
本文使用 Daubechies4 小波对数据集中 50 支股票价格进行重构分解,输出降噪后数据。以科大讯飞(002230)为例,进行小波降噪前后的股票价格走势对比图和分解重构后的高频系数如图所示:
图 4-2 科大讯飞(002230)小波降噪前走势图
图 4-3 科大讯飞(002230)高频分量 1
图 4-4 科大讯飞(002230)高频分量 2
图 4-5 科大讯飞(002230)高频分量 3
图 4-6 科大讯飞(002230)高频分量 4
图 4-7 科大讯飞(002230)小波降噪后的走势图
从上述图示中可以观察到,经过小波降噪处理后的股票价格数据展现出了更为平滑的曲 线,且高频分量中,图高频分量 4 较于其他值最为振荡,说明其中的股票数据的噪声和异常值可能含有更多。因此股票价格数据分解降噪后更有利于机器学习模型的预测分析。
4.3 机器学习模型构建与训练
本文选取 LSTM 模型、SVM 模型、XGBoost 模型作为股票价格预测的模型,接下来将对机器学习模型进行参数的构建和模型预测的训练。
本研究通过使用 Python 中的 keras库来构建 LSTM 模型,分析股票数据集,按照时间顺 序去观察数据,找出股票的特性和预测目标。在这个例子中,用了一个叫做 Adam 的优化器, 并且把模型的学习率设置为 0.01 。学习率如同是优化器调整模型的一个“步长 ”,它决定了 模型权重更新的快慢。调整这个参数,可以提升预测精度,epochs 在代码中设置为 10,epochs 对训练数据的遍历轮数越高,表示模型对训练的拟合程度越好。时间步长是 LSTM 模型的输 入维度之一,它决定了模型考虑历史数据的时间范围,持谨慎原则,将其设置为 1 ,在网络 层数方面,LSTM 模型有一个输入层和一个输出层,总共是两层。隐藏层节点数决定了模型 能力是否优越,本文将其设置为 50,Batch size 决定了数据训练的速度和模型收敛速度,所以 本文设置为 32 。对于回归问题的标准损失,本文采用均方误差(MSE)来解决。对于模型构 建问题上,本使用 Sequential 来创建一个顺序模型,添加一个 LSTM 层,其中包含 50 个单元, 并设置输入形状为(1, len(features)) ,添加一个全连接层(Dense 层)作为输出层,为了 LSTM模型的输入格式,将数据重塑为 3D 数组形式,对股票价格进行预测。
表 4-2 LSTM 模型中相关参数的设置
SVM 模型,又称支持向量机模型,广泛应用于股票数据分类和回归预测分析。本文基于 Python 使用 scikit-learn 库中的 SVR 类创建了一个 SVM 模型。利用 RBF 核函数来对股票数据
集的特征空间中的决策边界进行塑形,同时 gamma 是 RBF 核函数的参数,他决定股票数据点的影响范围,本文中将 gamma 设置为 0.009 ,意味着影响的范围较小。epsilon 是不敏感损 失函数的参数,决定了允许的误差范围。在本模型中,epsilon 被设置为 0.1。此外,对于惩罚 参数 C ,本文将其设置为 12 ,它一定程度决定了错误分类的惩罚程度。通过调整这些参数, 有助于股票数据的训练集上进行模型训练,并结合测试集进行股票价格,进行预测分析。因此对于 SVM 模型来说,选择合适的参数调整,以达到模型的最佳性能。
表 4-3 SVM 模型相关参数设置
XGBoost 模型,又称极度梯度提升树模型。本文基于 Python 使用 XGBoost 库中的XGBRegressor 类创建了一个 XGBoost 模型。XGBoost 具有许多超参数,本文更多采用已有 的默认值,弱分类器的数量 n_estimators 将其设置为 100 ,对于学习器类型采用 GBTREE 进 行计算,还可以选择 gblinear 线性模型作为弱学习器,在学习率 learning_rate 上设置为 0.3 , 也可以选择候选值[0.01, 0.015, 0.025, 0.05, 0. 1]中之一,gamma 数值被设定为 0 ,L1 正则化权 重项 reg_alpha 设置为 0 。而 L2 正则化权重项 reg_lambda ,选择了 1 作为它的值,当然,也 可以从 0、0.1、0.5 和 1 这几个数字里面挑一个。另外,树的最大深度 max_depth 被设定为 6, 这样合理的设置可以帮助避免模型过度拟合数据。叶子上的最小样本数 min_child_weight 设 置为 1 ,列采样比例 colsample_bytree 也设置为 1。通过对 XGBoost 模型的调整参数,可以极大在股票数据集上训练模型,并结合测试集进行股票价格预测分析。
表 4-4 XGBoost 模型相关的参数设置
4.4 机器学习模型结果分析与股票价格预测
近年来,随着机器学习技术的发展,越来越多的研究人员和投资者开始利用机器学习模 型对股票价格进行预测。本文把 SMA_简单移动平均、CCI_商品通道指数、ROC_价格变化率、 AO_奥斯金振荡器等技术指标作为机器学习模型的特征列,把股票价格 close 作为目标变量, 进行一系列预处理工作,如数据清洗、数据整合、特征选择等特征工程处理和小波降噪后的 历史股票数据,将历史股票数据作为样本,通过 LSTM 模型、SVM 模型和 XGBoost模型对 样本数据学习,从而构建一个可以更好进行分类和精准预测股票未来价格的模型。本文将以 珀莱雅(603605)为例,展现 LSTM 模型、SVM 模型和 XGBoost 模型预测效果图结果如图所示。
图 4-8 LSTM 模型预测效果图图片
图 4-9 SVM 模型预测效果图图片
图 4-10 XGBoost 模型预测效果图
4.4.3 机器学习模型结果分析及评价
从表中,可以看出:LSTM 模型中的 MAE 值、RMSE 值、MAPE 值分别为 0.0116、0.0189、 7.0124;SVM 模型中的 MAE 值、RMSE 值、MAPE 值分别为 0.0274 、0.03799 、23.02572;XGBoost 模型中的 MAE 值、RMSE 值、MAPE 值分别 0.0011 、0.0027 、1.0952 。从 MAE 、 RMSE 和 MAPE 的概念及公式出发,可以得知,当 MAE 值、RMSE 值和 MAPE 值越小,模 型的预测精度就越好。同时结合拟合度 R² , 当 R²值非常接近 1,模型的拟合程度越好,预测 表现也会更好,根据表中数据显示,LSTM 模型、SVR 模型和 XGBoost模型的 R²值分别为 0.9995、0.9983 和 0.9999。综合考虑 MAE、RMSE、MAPE 和 R²等指标,可以得出结论:XGBoost 模型在所有评价指标上表现最佳,具有最高的预测精度。其次是 LSTM 模型,表现也相当不 错。相比之下,SVR 模型的表现稍显逊色。因此,在预测精度方面,XGBoost 模型毫无疑问是最佳选择。
表 4-5 各模型预测指标值
此外,结合上文的模型预测效果图,也可以得知 XGBoost模型预测的股票价格更加贴合 股票的真实价格,LSTM 模型相较于 SVM 模型的预测效果,LSTM 模型预测效果与实际股票 的真实价格拟合程度要略高于 SVM 模型。综上所述,XGBoost 模型在所有衡量标准中均表 现出色,凭借其卓越的预测精度拔得头筹。紧随其后的是 LSTM 模型,其性能亦不俗。相较之下,SVR 模型在本次评估中的表现则显得稍逊一筹。
4.5 基于 XGBoost 模型的均值-CVaR 投资组合优化的实证评估
本文在 LSTM 模型、SVM 模型和 XGBoost 模型中,选取 XGBoost 模型作为均值-CVaR 投资组合优化的案例,基于 Python代码实现 XGBoost模型预测算法,并从 50 支股票的预测 价格中选取年化收益率排名前十的股票,如珀莱雅、科大讯飞、万华化学、天齐锂业、智飞 生物、锦江酒店、华友钴业、上海机场、紫光股份和中芯国际的股票,同时使用预测的价格,
计算如上股票标准差。从表中可知,XGBoost 模型预测年化收益率范围分别是[0.062494,1.356942] ,标准差范围分别是[0.010699 ,0.035756]。
表 4-6 XGBoost 模型预测排名前十股票收益率和标准差表
基于 XGBoost 模型对 50 支股票进行投资组合构建,选取股票年收益排名前十的股票, 如珀莱雅、科大讯飞、万华化学、天齐锂业、智飞生物、锦江酒店、华友钴业、上海机场、 紫光股份和中芯国际的股票,将每支股票的年化收益率纳入均值-CVaR 模型中。同时把股票 数量组合设置 N={5 ,8 ,10}作为股票投资组合研究的对象,当 N=5 时,选取的股票投资组 合有:'珀莱雅', '科大讯飞', '万华化学', '天齐锂业', '智飞生物' ;当 N=8 时,选取的股票投资组 合有:'珀莱雅', '科大讯飞', '万华化学', '天齐锂业', '智飞生物', '锦江酒店', '华友钴业', '上海机场 ';当 N= 10 时,选取的股票投资组合有:'珀莱雅', '科大讯飞', '万华化学', '天齐锂业', '智飞生物', '锦江酒店', '华友钴业', '上海机场', '紫光股份', ' 中芯国际'。
另外,以 N 等于 5 、8 、10 的股票组合的年度回报率、组合标准偏差和夏普比率作为衡 量投资组合表现的关键指标。根据表 4-7,N=5 的组合年回报率为 105.83%,此高回报率往往 暗示着更高的风险水平。相对地,N=8 和 N= 10 的组合年回报率分别为 74.30%和 62.79%,显 示较低的风险性。N=5 的组合标准偏差为 3.75% ,揭示了其较高的波动性和风险。而 N=8 和 N= 10 的投资组合的标准差分别为 2.44%和 1.99% ,这两个组合的波动率相对较低,表明它们 的风险较 N=5 的投资组合小。夏普比率是投资组合超额收益与其风险的比率,用于衡量投资组合每承担一单位风险所获得的超额收益。N=5 投资组合的夏普比率为 28.22,虽然很高,但 由于其年化收益率和标准差都非常高,这可能表明该组合的风险也非常大。而 N=8 和 N= 10 的投资组合的夏普比率分别为 30.42 和 31.61 ,这两个组合的夏普比率更高,表明它们在承担相对较低风险的同时,仍然能够获得较高的超额收益。
表 4-7 股票投资组合选取
表 4-8 股票投资组合的评价指标
依据上文的描述和本文的基本情况,将选取股票年收益排名前五的股票(N=5 的投资组合),如珀莱雅、科大讯飞、万华化学、天齐锂业、智飞生物的股票,在研究中,将每支股票的年化收益率作为关键指标,整合至均值-CVaR 模型中。该模型 在不同的置信水平下,其表现呈现出明显的差异,其常用的置信水平包括 85%、90%、95%和 99%,当置信水平选择 85%,意味着在未来的市场变动中,尽管资产组合面临较高的损失风险, 但这也同时为投资者孕育了丰富的投资机会和获取高额回报的潜力。这种环境为那些愿意承 担风险并寻求更高收益的投资者提供了广阔的舞台。其次当置信水平选择 90%和 95%,这意味 着,在未来市场的波动中,资产组合出现损失的可能性相对较低,同时投资者也有望获得相对稳定且可靠的投资收益。这种情境对于那些追求稳健回报、不愿承受过高风险的投资者来说,是一个理想的选择。对于风险厌恶的投资人来说,选择置信水平 99%,意味在未来的市 场变动中,尽管资产组合发生损失的几率非常小,但这同时也意味着投资机会和预期收益的 相对减少。这种情况较为适配风险厌恶型的投资者,他们宁愿牺牲部分潜在的高收益,以确保资金的安全。根据本文的基本情况,将选择 95%,作为均值-CVaR 模型中的置信水平。
利 用 Python 软件进 行 线 性 规划 求解 , 得 出 最优 投 资权 重 向量 为 : [0.14740812 0.21145914 0.21207756 0.21432281 0.21473238],依据最优投资权重向量,投资者可以将 资金按照 0.14740812、0.21145914、0.21207756、0.21432281、0.21473238 比例依次分配给 珀莱雅、科大讯飞、万华化学、天齐锂业和智飞生物的股票,从而在风险较小的情况下达到 股票投资组合收益率最大化的效果。基于股票投资组合比例和每支股票的年化收益率,得出最优投资组合收益率为 35.80%。