社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

基于机器学习的动态股票推荐方案,跑赢标普500指数

灵度智能 • 7 月前 • 280 次点击  

A Practical Machine Learning Approach for Dynamic Stock Recommendation


盈利报告对股票推荐至关重要,分析师基于公司盈利预测进行买卖建议。盈利预测依赖于分析师对公司增长和盈利能力的估计,通常通过财务模型来预测未来收入和成本。传统选股方法一是基于预设标准(如市盈率),但效果不稳定;二是联合多个标准(如市盈率、销售比率等),但未考虑不同因素间的相关性,增加了风险。


本文提出了一种基于机器学习的股票推荐方案,针对S&P 500股票。方案核心是动态持有前20%的股票。通过最低均方误差选择最佳模型,增强商业决策的可靠性,提高金融投资的安全性。实证结果显示,研究表明,所提策略在市场表现上优于S&P 500指数,尤其在训练期和整体交易期均表现良好。



【 扫描文末二维码加入星球获取论文,源码 


摘要


本文提出了一种基于机器学习的股票推荐方案,针对S&P 500股票。方案核心是动态持有前20%的股票。选择具有良好解释力的股票指标。使用线性回归、岭回归、逐步回归、随机森林和广义提升回归等五种机器学习方法建模。在每个周期选择均方误差最低的模型进行股票排名。通过等权重、均值方差和最小方差等投资组合方法测试选定股票。实证结果显示,该方案在夏普比率和累计收益方面优于长期持有策略。


简介


盈利报告对股票推荐至关重要,分析师基于公司盈利预测进行买卖建议。盈利预测依赖于分析师对公司增长和盈利能力的估计,通常通过财务模型来预测未来收入和成本。交叉模型生成的盈利被认为优于分析师预测,用于估算隐含资本成本(ICC)。回归模型可用于预测净收入,深度学习算法也被应用于股票市场数据建模。传统选股方法一是基于预设标准(如市盈率),但效果不稳定;二是联合多个标准(如市盈率、销售比率等),但未考虑不同因素间的相关性,增加了风险。


价值投资强调股票的“内在价值”,与市场无关,基于公司规模、资产、股息、财务实力、盈利稳定性和增长等因素。投资者应关注内在价值,以避免在牛市或熊市中的误判,长期来看,股价会回归内在价值。财务比率(如市盈率、每股收益、股本回报率、利润率和速动比率)反映公司的盈利能力、稳定性、运营效率和未来现金流生成能力。财务比率提供标准化数据,使不同规模的公司具有可比性。


本文提出基于收益因素的股票未来价格回报预测新方案,使用五种机器学习算法(线性回归、随机森林、岭回归、逐步回归、广义提升回归)动态分配权重。每季度根据最佳算法的预测回报排名选择前20%股票,采用滚动方式进行再平衡。通过最低均方误差选择最佳模型,增强商业决策的可靠性,提高金融投资的安全性。在1990-2007年间使用样本数据测试均值方差、最小方差和等权重配置方法,结合最大夏普比率进行风险管理。所有三种资产配置方法均优于标准普尔500指数,验证策略的有效性。


股票推荐计划


基于滚动窗口的数据分离


滚动窗口用于数据划分,训练窗口为16至40个季度,测试窗口为1年。交易依据测试结果进行,交易日期延长至季度末后两个月,以适应非标准季度末日期。



数据预处理


数据来源于Compustat数据库,通过WRDS访问,涵盖1990年6月到2017年6月的27年数据。包含约1142只历史S&P 500成分股,生成6438964条日交易数据和91216条季度基本面数据。删除了0.84%的异常记录,确保99%的公司在交易日有可用的财报。



数据集分为三个时期以便进行回测。选取20个流行财务比率,按GICS行业分类处理缺失数据,删除46只缺失数据较多的股票,最终每个行业的缺失数据减少到7%以下,并删除这部分数据。



方法


目标是预测S&P 500的前一季度对数收益率,使用历史数据构建的20个金融因素作为预测变量。1季度前对数收益率定义为股票价格的对数变化。




使用普通最小二乘法(OLS)进行回归,模型包括20个金融比率和随机误差。采用多重回归估计提高准确性,使用线性回归、逐步回归、岭回归、随机森林和广义提升回归模型(GBM)等五种模型。选择这些模型的原因是进行特征选择,减少过拟合,提高模型准确性。



评估指标为均方误差(MSE)。


实现细节


模型选择:通过训练和测试五个模型,选择均方误差(MSE)最低的模型,赋值1给选中模型,0给其他模型。


模型应用:在特定日期选择MSE最低的模型进行股票选择,例如1995年6月1日选择岭回归,1995年9月1日选择随机森林。



股票筛选:使用选中模型预测下季度收益,挑选每个行业的前20%股票进行交易,并根据持有股票的权重调整股份。




模型验证:检查模型特征及其系数或重要性,确保结果正常,完成所有11个GICS行业的步骤,最终生成包含股票名称、预测收益和交易周期的表格。




投资组合分配和风险管理


投资组合配置在投资策略中至关重要,通过建模个别资产的权重来平衡风险和收益。常用的投资组合配置方法有均值-方差和最小方差,旨在通过约束均值、波动率和相关性输入来减少抽样误差。本文中使用均值-方差和最小方差方法确定每只股票的权重,并以等权重投资组合作为基准。这些方法通过Matlab金融工具箱的投资组合对象实现。


均方差约束和最小方差约束


使用均值-方差优化进行股票配置,图中黄色星标为首次交易的均值-方差结果,其他点为股票的预测收益与标准差。均值-方差优化约束条件:

  • 预期收益:下一季度的预测收益。

  • 协方差矩阵:使用1年历史日收益。

  • 仅做多:上限5%,下限0%。

  • 完全投资:权重总和为100%。

  • 不使用杠杆:预算上下限均为1。



尝试最小方差优化,预期收益设为0,其他标准与均值-方差方法相似。


交易成本


交易费用包括经纪费、交易所费用和SEC费用,实际执行成本可能因多种因素而异。经过多种情境分析,假设交易成本为交易价值的千分之一,认为这一假设合理。


交易成本计算公式为:



其中 S_{t,i} 为当前时间的持股数量,S_{t-1,i} 为前一时间的持股数量,P_i 为当前股票价格。


风险管理


采用长仓策略,通过投资组合优化方法控制风险。目标是最小化方差和最大化夏普比率。设定最大持仓比例为投资组合价值的5%。不使用杠杆。


性能评估


研究表明,所提策略在市场表现上优于S&P 500指数,尤其在训练期和整体交易期均表现良好。尽管等权重投资组合的价值高于最小方差和均值方差投资组合,但最小方差投资组合在实际交易中更可靠。等权重投资组合依赖于模型预测收益,缺乏稳健性;而最小方差投资组合考虑风险因素,表现更佳。在训练期,最小方差投资组合的夏普比率高于等权重投资组合,因此选择最小方差作为投资组合配置方法。





总结


应用机器学习算法筛选出盈利较差的股票,优化选股策略。最小方差法、5%持仓规则、无做空和杠杆规则提供风险管理和多样化,降低投资组合风险,提高夏普比率。该交易策略优于标准普尔500指数,且组合配置方法提升整体表现。三种投资组合方法的夏普比率显示策略超越市场。未来工作将处理异常数据,并通过张量时间序列建模股票指标以提高预测准确性。


▌关于我们

我们致力于人工智能、量化交易领域前沿研究,分享前沿论文、模型代码、策略实现。如有相关需求,请私信与我们联系。

▌商务合作

请加微信“LingDuTech163”,或公众号后台私信“联系方式”。


关注【灵度智能】公众号,获取更多AI资讯。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/189815