ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

LLM+小市值交易:信号融合与回测验证的工程实践

LLM+小市值交易:信号融合与回测验证的工程实践 “LLM 小市值交易”这个组合看起来确实很吸引人让大语言模型去读新闻、看宏观指标、再叠加技术信号最后生成一个买卖建议。但作为一个常年跟数据和策略打交道的人我想先泼一盆冷水这个方向真正难的不是让模型“读懂”新闻而是把三类不同频率、不同来源、不同可信度的信号放在一条不能撒谎的时间线上并且用一个不会自我欺骗的回测流程去验证它。如果你研究过传统多因子应该能感受到一个明显的瓶颈财务数据、行情数据、分析师预期都是结构化的模型很容易处理。但市场里大量信息是以文本形式存在的比如公司公告、行业新闻、宏观数据解读、市场情绪报道。尤其对于小市值股票公开覆盖少、信息不对称程度更高新闻一旦出现可能意味着一个短暂但重要的事件窗口。而大语言模型刚好擅长把非结构化文本转化成结构化判断比如新闻情绪打分、事件分类、宏观数据解读。我的核心判断是LLM 驱动的这种交易研究真正改变的不是“预测准不准”而是它把非结构化文本变成可迭代的因子把“灵光一现的想法”变成一条可复用的研究管线。但这有一个前提你愿意在数据工程、回测设计和风控边界上花大量笨功夫。1. 先理清这个方向到底要解决什么问题这个标题看起来像一篇论文也像一个研究项目。不管它具体来自哪里都可以把它拆成三个关键部件大语言模型、小市值股票、三种信号融合。很多人第一眼看到时会把注意力放在“大语言模型”上觉得只要模型够聪明策略就能跑赢。但从实际落地看模型只是其中一环真正决定研究质量的是前面数据怎么来、中间信号怎么对齐、后面结果怎么验证。1.1 小市值股票的独特信息环境为什么要强调“小市值”这不是为了追热点而是因为小市值股票的信息环境和大市值股票有本质区别。大市值股票被大量机构覆盖研究员多、新闻多、公告传播快。几乎每一条公开信息都会被快速消化想靠“读新闻”获得增量边际空间很小。小市值股票则不一样分析师覆盖少媒体报道稀疏很多公司新闻出现后市场价格不一定能在几分钟内充分反应。也就是说非结构化信息在小市值股票上的定价效率更低留给文本挖掘的潜在增量更大。但这同时带来两个麻烦。第一小市值股票的流动性通常较弱信号就算有效也不一定能以合理成本成交。第二小市值股票对单一新闻更敏感情绪容易被放大回测和实盘之间的差距可能非常夸张。所以小市值更像一个“研究样本”而不是一个可以无脑下注的标的池。1.2 传统多因子研究的盲区在哪儿传统多因子研究通常建立在结构化数据上财务报表、行情序列、估值指标、分析师盈利预测。这些东西干净、可比较、容易批量计算但有一个共同点它们是“已经被抽象好的信息”。市场每天还有大量没被抽象好的信息比如一篇关于行业景气变化的深度报道一条公司回应传闻的公告一条宏观数据公布后的市场解读。这些信息很难用字段去描述过去只能靠人工阅读或者用简单的词典情绪打分。但词典方法的问题很明显相同的词在不同语境下含义完全不同否定句、反讽、因果关联、转折都会让简单打分失效。大语言模型的优势就在这个位置它能把一段文本转化成带有语义理解的情绪判断、事件分类、主体关联和影响方向。这并不意味着它一定正确但它提供了一条把非结构化文本“因子化”的技术路径。所以这个方向真正解决的核心问题不是“用 AI 替代基金经理”而是把传统因子研究覆盖不到的文本信息变成可以进入统一特征矩阵的信号。2. 三类信号的本质差异决定了你能不能用“拼接法”很多刚开始做的人会有一个直觉先用 LLM 把新闻情绪打一个分再把宏观指标、技术指标都放到同一个表格里然后丢给模型训练。这个流程看起来没错但实际做起来会发现三类信号的时间尺度、更新频率、噪音水平和可信度都不一样直接拼接会产生大量错误样本。2.1 新闻情绪稀疏、强时效、非结构化新闻情绪信号最大的特点是“稀疏”。一只小市值股票可能连续很多天没有新闻也可能某一天冒出好几条。如果把没有新闻的日期当作“中性”会增加大量没有信息量的样本如果只保留有新闻的日期又会引入严重的样本选择偏差。处理新闻情绪至少要解决三个问题去重和过滤同一条新闻被多个平台转载不能重复计算情绪。相关性判断新闻主体是不是这家公司还是仅提到了行业关键词。时效性一周前的旧闻对今天的情绪影响可能已经衰减需要用时间衰减或事件窗口。LLM 在这里更多是扮演“语义理解引擎”而不是最终决策器。它的输出最好包含一个分数同时包含一个置信度或者摘要方便后续人工检查。2.2 宏观指标与技术信号低频滞后和高频噪音宏观指标通常是月度或季度更新例如采购经理人指数、居民消费价格指数、货币供应量、社会融资规模等。这类数据有两个容易被忽略的问题。第一是“发布滞后”。统计区间是上个月但数据公布日可能在几周之后。如果你按统计区间所属月份去填充就会用到未来数据。第二是“预期差”。真正引起市场波动的往往不是绝对值而是公布值和市场预期之间的差距。如果没有预期数据可以用公布时刻前后的资产价格变化作为间接代理但这需要额外处理。技术信号则相反它是高频的基于价格、成交量就能计算例如动量、均线偏离、相对强弱、成交量变化。技术信号的优势是连续、可批量计算劣势是噪音高单独使用时容易过度拟合而且在小市值股票上成交量稀疏和涨跌停现象会让普通指标严重失真。2.3 统一时间轴是落地最难也最关键的一步如果只是把三类信号放在同一行记录里处理起来不难。但“同一行记录”必须回答一个关键问题这个特征是在什么时点生成的它使用了哪些在此之前已经公开的数据一个稳健的设置方式是以交易日为最小时钟。新闻按“发表时间”聚合到当天而不是按“抓取时间”或“入库时间”。宏观数据按“投资者最早可获得该数据的日期”填充不能按统计区间填充。技术指标只能用截至当日收盘已经产生的数据计算不能用未来数据。当天生成的信号最早只能用于下一交易日的开盘或盘中决策。听起来像常识但很多回测结果离谱地好问题就出在这些时间细节上。统一时间轴这件事比选哪一个 LLM 重要得多。注意如果你在回测中发现策略收益高得不像真实市场第一步不是继续调参而是检查所有特征是否严格满足“当时可得”原则。3. 从研究标题到工程管线一个可以复用的实现框架有了对三类信号的理解下一步是把标题变成一套可执行的工程流程。我建议不要一上来就搭一个庞大的分布式系统而是先搭一条最小研究管线把它跑通之后再逐步扩展股票池、信号源和模型复杂度。3.1 五层研究管线数据、特征、融合、验证、风控一个比较完整的研究管线可以分成五层每一层都有自己的职责和最容易出错的地方。第一层是数据层。需要准备公开新闻、公司公告、宏观数据发布日历、行情数据和股票池名单。数据来源必须合规并注意版权和平台使用条款。新闻数据至少包含发布时间、标题、正文和关联公司。第二层是特征层。用 LLM 对每一条新闻生成情绪分、事件类型、相关主体用规则或量价计算技术指标用宏观发布日历构造宏观预期差或方向性变化。第三层是融合层。把不同频率的特征按交易日对齐生成“每日股票特征向量”。这一步要特别处理好缺失值比如没有新闻、没有宏观发布、停牌等情况。第四层是验证层。设计标签划分训练集、验证集和样本外测试集。不能随机打乱数据必须按时间切分。第五层是风控层。评估流动性、成交额限制、最大持仓比例、回撤约束并把这些约束放进回测而不是在选出股票之后才想起来。3.2 最小可用流程先跑通一只股票、一段区间如果你想验证这个方向是否可行我建议从“一只股票、一段三个月到一年的时间区间、一个新闻源”开始。这样做的原因是方便人工核对情绪分数对不对新闻是否重复时间对齐是否准确一眼就能看出来。下面是一个示意性的研究循环# 示意结构不代表完整可运行代码 for trading_day in trading_days: # 1. 读取当天公开新闻 news_items load_news(trading_day) # 2. 用 LLM 给每条新闻打分 sentiment_score llm_sentiment(news_items) # 3. 加载当天已经公布的宏观数据 macro_signal load_macro_by_release_date(trading_day) # 4. 只用截至当天收盘前可用的行情计算技术指标 tech_signal compute_technical_signals(up_to(trading_day)) # 5. 按交易日合并成一行特征 features.append(merge_features( sentiment_score, macro_signal, tech_signal, datetrading_day )) # 6. 构造未来 N 日收益作为标签 labels future_return(price, horizonN) # 7. 按时间切分并评估 evaluate(features, labels, split_by_timeTrue)这段代码只体现流程不包含真实数据源。但它能帮助你把注意力放在正确的地方每天生成什么特征、什么时候能拿到、什么时候可以做决策。3.3 特征融合不是“把分数扔给模型”就结束了把三类信号拼在一起之后还要考虑它们之间的关系。比如一条正面新闻出现同时技术指标处于超跌状态这也许是一个更值得关注的组合如果新闻偏正面但当天成交量极度萎缩可能说明市场并不认可这个消息。一个实用做法是不要直接让模型只看原始拼接向量而是增加一些组合特征新闻覆盖量当天有效新闻条数用来衡量信息强度。情绪极值最近 3 日情绪分最大值或最小值用于捕捉事件冲击。情绪变化当日情绪分相对前 5 日平均情绪分的变化。宏观方向与技术动量的共振比如宏观情绪偏暖且个股动量向上作为强弱过滤。情绪置信度LLM 对低置信度文本会输出模糊判断这类样本需要单独处理或降权。这些特征没有一个是复杂的但它们能让模型有机会学习“信号之间的组合模式”而不是只看到单调的数字。4. 回测研究中最容易出现的几类“自欺”错误这个方向最危险的地方不是市场不给你机会而是回测结果给你一个“明明不可实现却非常好看”的曲线。小市值股票研究尤其容易放大这类问题因为样本少、波动大、交易约束强。下面几类错误几乎每个踩过坑的人都遇到过。4.1 前视偏差回测结果好看的第一嫌疑前视偏差指的是“用到了当时无法获得的信息”。最常见的有三种用当天全部新闻的情绪去预测当天收盘价但新闻是逐步到达的收盘前并不一定知道后面还会出什么新闻。用宏观数据的最终修订值去回填历史区间但当时投资者看到的是初值不是修订值。用未来一段时间的价格调整数据清洗异常值或填充缺失值。要避免前视偏差最直接的办法是给每条特征打上“数据可用时间”并让特征时间严格早于标签形成时间。宁可损失一点数据量也绝不能让未来信息混进去。4.2 幸存者、停牌和流动性小市值研究的放大器幸存者偏差是指用今天仍然上市交易的股票去回测过去退市股票被排除在外。小市值股票里退市和长期停牌的比例更高如果不处理回测收益会被系统性高估。即使没有幸存者问题流动性也会制造假象。小市值股票的成交额可能很小当策略按信号买入时价格冲击和滑点会非常明显。更常见的情况是回测模型假设“当天收盘价可以成交”但实际盘中根本没有足够的卖单。一个稳妥的处理方法是在回测中加入流动性过滤当日成交额低于某个阈值的股票直接排除。信号买入量不超过当日成交量的一定比例。考虑涨跌停和停牌约束无法成交的日期跳过。手续费和滑点按保守水平计提。4.3 抽查链路当结果好到不敢相信时按这个顺序排查如果你发现一个策略的年化收益高得离谱不要先高兴而是按这个顺序检查先看时间戳新闻、行情、宏观数据的时点是否准确。再看对齐宏观数据是否用了发布日而不是统计区间。再看特征技术指标是否只用到了当时已产生的数据。再看标签未来收益是否用了复权价窗口是否包含停牌。再看交易约束是否考虑了涨跌停、停牌、成交额和滑点。最后看样本外训练期和验证期是否严格分离参数是否被反复调过。这个顺序不是随便排的因为数据层错误会直接污染后续所有环节。先排除数据问题再检查流程问题最后才是模型问题。提醒如果你的模型在训练集上表现很好但一到样本外就失效常见原因不是股票变了而是训练过程已经“记住”了训练期里的噪音。5. 怎么评估以及这条路的长期价值评估一个 LLM 驱动的交易研究是否有效不能只看收益曲线。尤其当你把新闻情绪、宏观指标和技术信号叠在一起时很容易出现“多因素一起堆出来的结果”但你根本不知道是哪一个信号在起作用。5.1 不要只看收益率换手、回撤、信息系数、衰减速度我建议至少从四个维度评估。评估维度关注指标常见误区收益质量年化收益、最大回撤、卡玛比率只看年化收益忽略回撤深度交易成本换手率、滑点敏感性、成交量限制忽略手续费和冲击成本预测能力信息系数 IC、胜率、多空组合表现只看方向准确率不看预测稳定性信号周期未来 1/3/5/10 日预测能力衰减把短周期信号强行拉长持有其中“信号周期”很容易被忽视。新闻情绪通常是短周期信号随着时间推移影响会快速衰减。如果你构造的是未来 5 日收益标签却用未来 20 日持有逻辑去解释逻辑上就说不通。可以通过滚动计算 IC 的衰减曲线判断一个信号到底能管几天。5.2 适用边界什么人适合什么人不适合这个方向适合以下几类人已经有一定数据工程能力想探索非结构化因子的人。把 LLM 当作“文本特征生成器”而不是“全知全能交易员”的人。愿意花时间做回测校验、滚动样本外验证和成本敏感性分析的人。对小市值股票的风险有清醒认识并设置了严格仓位和止损规则的人。不适合以下场景没有稳定、合规、有版权授权的数据源想靠抓几次新闻就直接交易。把回测收益直接当作实盘预期收益忽略流动性和滑点。用一只股票、一段区间反复调参直到曲线好看为止。没有风控意识把全部资金押注到一个可能失效的信号上。重要提醒本文讨论的是研究方法和工程流程不构成任何投资建议。任何量化策略都需要经过充分验证并充分认识可能亏损的风险。5.3 长期价值沉淀管线比追逐必涨策略更重要回到文章开头的主判断。LLM 驱动的小市值交易研究真正的长期价值不在于找到某条“必胜策略”而在于建立一条能持续处理非结构化信息的研究管线。今天你可能用 LLM 做新闻情绪下一次可以把它用到公告事件研究、宏观数据解读、行业舆情监控今天你处理的是三类信号明天可能加入另类数据、供应链关系、专利信息。如果底层的数据对齐、特征提取、回测验证和风控框架是稳定的那么接入新数据源的成本就会很低。反过来如果只想得到一个“高收益策略”很容易陷入过度拟合和侥幸心理。市场风格切换、宏观环境变化、某类新闻源无效都可能让策略迅速失效。能长期留下来的一定是你对数据的理解、对时间对齐的敬畏、对回测结果的怀疑以及把想法变成可复现流程的能力。所以下次再看到类似“LLM 交易”的项目你可以先问三个问题数据从哪里来时间怎么对齐回测怎么证明。这三个问题想清楚比换一个更大参数的模型更有价值。
返回列表