AI智能总结
策略研究·策略解读 证券分析师:王开021-60933132wangkai8@guosen.com.cn 执证编码:S0980521030001 证券分析师:陈凯畅021-60375429chenkaichang@guosen.com.cn 执证编码:S0980523090002 事项: 自AI大模型广泛进入社会各领域生产生活中后,其便捷使用和性能优越的特点受各行各业所青睐,尤其是其所展现的强大信息收集和分析能力有目共睹。价格预测一直以来都是众多投资者最为关注的话题,但由于缺乏关键的非结构化信息而经常导致传统机器学习模型表现波动较大,AI大模型的出现一定程度上弥补了这一漏洞,除了ChatGPT、Gemini、Deepseek等主流人工智能应用外,还有大量的工程师在开源平台上搭建了大量专业分析平台,以提供易用的分析环境和具备参考效力的分析结果。本报告以致力于以TrendIQ开源版和线上客户端为例,通过股价预测案例,为投资者清晰呈现人工智能技术在股价预测上的能力圈。 解读: 全球金融市场的核心特征在于其高度的复杂性、非线性和动态演变性。长期以来,市场参与者致力于寻找能够有效预测资产价格变动的“圣杯”。从目前存量的AI对股价、商品期货价格的预测框架看,过去基于RNN(循环神经网络)和LSTM(长短期记忆网络)的金融资产价格预测方法趋于成熟,在处理结构化数据(如量、价、技术指标)上优势明显,目前海内外已有开源版本能够接入金融数据终端,实现低延时数据响应与预测模型底层数据的更新。与此同时,这样的开源平台通过本地部署可以实现对轻量数据的本地化存储,预测活动亦可在本地进行,对于学界研究和部分存在商业机密需求的机构,具备一定的优势。TrendIQ就是这样一个相对成熟的金融资产价格预测平台,提供了本地化与网页版的选择,前者具备安全性和速度优势,后者则在易用性上更占上风。 一、“门面担当”与“新出路”:深度学习与LLM在股价预测中的迭代演绎 过往学界与工业界倾向于使用LSTM作为价格预测的基础模型。这一模型选择背后主要有2个核心原因:一是于股价预测是高度非线性的,这就要求模型能够处理非线性问题;二是股价本身具有时间序列的特性,适合使用循环神经网络。因此相比于众多ML和DL模型,LSTM在这个问题上有着天然的优势。LSTM模型的1个神经元包含了1个细胞状态(cell)和3个门(gate)机制,三个门分别是输入门、遗忘门和输出门:1)输入门决定将哪些新信息添加到细胞状态;2)遗忘门负责单元状态的权重和激活函数;3)输出门决定输出什么,即隐藏状态的值。 机器学习与强化时代,LSTM基模型下的混合模型层出不穷。机器学习时代,LSTM与XGBoost等模型可以很好地结合,LSTM捕捉历史价格数据的时间依赖性,XGBoost通过建模非线性关系来增强预测,使用情感评分和宏观经济指标作为辅助特征。强化学习不断渗透期间,结合扩展长短期记忆网络(xLSTM)与深度强化学习(DRL)的方法应运而生,其中xLSTM被嵌在DRL的演员与评论家算法内,并利用PPO优化交易,这一方式能够优化传统LSTM网络在处理序列数据时存在的长依赖捕捉困难问题。 LSTM作为金融时间序列预测的“门面当担”,也存在自身局限性。在过往模型杂交结合的历程中不难看出存在下列局限性: 1)模态单一性:LSTM本质上是为处理数值向量设计的。虽然可以通过Word2Vec等早期的词嵌入技术将文本转化为数值输入,但这种转化往往丢失了文本中的句法结构、上下文语境和深层语义。这导致模型只能看到市场的“果”(价格变动),而无法理解市场的“因”(重磅新闻、政策转向)。 2)解释性相对弱:LSTM通常被视为“黑盒”模型。它可能预测明日股价上涨,但无法告知交易员是基于什么逻辑。在机构投资中,无法解释的信号往往意味着不可控的风险,这在合规要求严格的金融监管环境下是难以接受的 3)泛化鲁棒性弱:往往需要在特定股票或特定市场的数据上进行从头训练,难以将在A股市场学到的规律直接迁移到美股,或者从科技股迁移到能源股。 资料来源:AdvancedStockMarketPredictionUsingLongShort-TermMemoryNetworks:A Comprehensive Deep Learning FrameworkRajneeshChaudhary,DepartmentofInformationTechnology,IIITMGwalior,国信证券经济研究所整理资料来源:Wind,国信证券经济研究所整理 资料来源:CSDN官网,国信证券经济研究所整理 资料来源:CSDN官网,国信证券经济研究所整理 Transformer架构彻底改变金融信息处理方式,机制自身优势赋予时序预测“新出路”。在金融领域,Transformer的理论优势有以下三点:1)全局上下文感知:Transformer能够同时关注输入序列中的所有元素,并计算它们之间的关联权重。这意味着在分析一条财经新闻时,模型不仅关注当前的句子,还能结合前文提到的宏观经济背景或公司历史事件。这种“全局视野”使得LLM能够捕捉到极其微小但关键的市场信号;2)零样本与少样本学习(Zero-Shot&Few-Shot Learning):得益于海量通用语料的预训练,LLM具备了强大的迁移学习能力。即使没有针对某种新兴加密货币或衍生品的专门训练数据,先进的模型也能凭借其通用的金融逻辑,通过少量示例(Prompting)快速适应新的预测任务;3)思维链推理(Chain-of-ThoughtReasoning):这是LLM区别于所有深度学习技术的关键。通过CoT提示,LLM可以将预测过程分解为逻辑步骤。例如:“通胀数据高于预期→央行加息概率增加→贴现率上升→高估值 科技股承压→预测纳斯达克指数下跌”。这种推理过程提供了宝贵的“可解释性”。目前,学界已有基于VAE、Transformer和LSTM的模型框架,用于股票价格预测,集成框架相比单一模型和传统方法显示出明显优势。 资料来源:Wind,国信证券经济研究所整理 资料来源:OriolSaguillo,VahidGhafouri.LuciannaKiffer,GuillermoSuarez-Tangil《Unravelling the Probabilistic Forest:Arbitrage inPredictionMarkets》,国信证券经济研究所整理 二、“AI股价预言家”如何炼成:本地化部署与代码解读 我们以TrendIQ项目的开源代码为例,分析这个“AI股价预言家”是如何练成的。 在TrendIQ的代码包中的四个Python程序文件,构成了一个完整的运行框架,从数据准备和模型训练,到状态检查,再到web应用的运行和用户交互。整个链条是离线训练+诊断+在线服务的闭环,确保模型可用后,用户可以通过浏览器进行股票价格预测。关键依赖于共享的data/目录,用于存储数据和模型文件。流程如下: 1.训练阶段(train_multiple.py和quick_train.py):首先收集历史股票数据(使用yfinance),然后预处理(缩放数据),最后训练LSTM模型并保存文件。这里生成app.py所需的模型,是链条的起点。如果没有这个阶段,应用无法预测。 2.检查阶段(check_models.py):验证训练结果,检查文件是否存在和完整性。这是一个辅助环节,帮助开发者诊断问题,确保链条完整。如果检查失败,它会提示运行训练脚本。 3.运行阶段(app.py):启动Flask web服务器,提供用户界面。用户输入股票ticker,应用加载预训练模型进行预测,显示结果(如预测价格、图表、置信度)。这是链条的终点,用户可见的部分。如果模型缺失,它会错误提示,链接回训练阶段。 1.train_multiple.py和quick_train.py 这是数据训练的起点,quicktrain和trainmultiple的主要区别在于前者已经预设好了五只热门股票的训练数据,而后者可以通过用户自定义股票来进行训练: 在先导入核心函数train_multiple_stocks后,我们拥有了直接依赖批量训练的逻辑。其在后面定义了一个QUICK_STOCKS列表,里面有五个热门股票:AAPL、GOOGL、MSFT、TSLA和AMZN,这些正好和app.py里的实时ticker小部件以及check_models.py里的热门股票检查对得上。主程序块先打印启动信息,阐明训练重点和大概要10-15分钟,然后调用input询问是否应当继续。如果输入'y',其就调用 train_multiple_stocks(QUICK_STOCKS)函数完整训练这些股票。训练完后,输出成功消息,证明webapp可以投入使用。倘若不继续,就简单取消并报错。这个脚本适合第一次使用该程序的用户进行设置,确保关键模型快速生成,不用纠结自定义选项。它把CSV历史数据、缩放后的numpy数组、joblib缩放器和HDF5LSTM模型作为app.py预测的基础,通过模块导入和用户进行友好交互。 扩展到训练的核心部分我们可以看到,train_multiple.py作为整个模型创建流程的强大批量处理引擎,首先导入os和sys等系统模块,还有后端函数如collect_data、preprocess_data和train_model,这些假设放在'backend/'子目录里,便于模块化管理。它定义了POPULAR_STOCKS作为一个扩展列表,包括quick_train.py里的五个热门股票外加META、NVDA、NFLX、AMD和INTC,提供更大的灵活性。train_stock函数 封装 了每个 股票 的处 理过程 :先 打印进 度标 题, 然后依 次调 用collect_data用yfinance(雅虎数据库)从默认或自定义日期范围拉取历史数据,preprocess_data来缩放并保存成numpy数组和joblib文件,train_model来构建和训练LSTM神经网络,最终保存为.h5模型文件。整个步骤用try-except包裹,成功返回True,失败时打印错误并返回False。train_multiple_stocks函数负责协调批量操作,打印训练总结,追踪成功和失败的股票列表,最后输出详细报告。main函数提供交互菜单:选项1直接训练所有POPULAR_STOCKS,选项2允许用户输入自定义股票列表并可选自定义日期范围,选项3处理单个股票,还捕捉KeyboardInterrupt来优雅退出。这个脚本结构设计得很灵活,日期参数能确保拉取最新数据,后端调用与yfinance无缝结合。它生成app.py预测路由需要的各种文件,是AI框架的骨干,支持LSTM预测的同时,给用户更多控制训练范围的自由。 资料来源:Github,国信证券经济研究所整理 资料来源:Github,国信证券经济研究所整理 2.check_models.py 为了检查训练的结果,check_models.py像一个诊断仪表板,确保框架在运行前一切就绪。它首先导入os来处理文件操作,datetime虽然没直接用但可能为未来时间戳留着。check_model_status函数为每个股票构建路径,包括CSV、缩放.npy、缩放器.joblib和模型.h5,然后用os.path.exists检查它们是否存在,汇总成一个状态字典。如果模型文件存在,计算其大小(以KB为单位)。get_all_trained_models函数扫描'data/'目录,找出所有.h5文件,提取股票符号并排序。display_status函数打印出格式化的仪表板:先针对热门股票(和QUICK_STOCKS一致),用✅或❌表情符号表示状态,列出对齐的表格。然后列出其他已训练模型的部分。总结区域统计总模型数量和热门股票的就绪情况,后面跟着推荐——如果热门股票有缺失,则