ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

情绪Alpha:如何把市场情绪变成可交易的量化因子

情绪Alpha:如何把市场情绪变成可交易的量化因子 量化圈子里聊“因子”聊到后来基本就两类一类是量价一类是基本面。但最近几年大家开始高频地提一个词叫“情绪 Alpha”。第一次看到这个标题的时候我第一反应是这不就是量化里那句老话“别人贪婪我恐惧”的科技版吗但真正把情绪数据接进策略之后我才意识到这里面能挖的东西远比想象中深。这篇是“Sentiment News Alphas”系列的第一章核心就一句话把市场参与者的真实情绪做成可计算、可回测、可交易的信号。它不解决“市场为什么涨跌”这种哲学问题它解决的是“当前市场对某只股票的情绪是否已经极端到可以反向押注”这种具体问题。适合谁看如果你手里已经有一套量价或基本面策略想找一种相关性低的增量信号源或者你刚接触另类数据想知道社交媒体、新闻、搜索热度这些东西到底怎么变成因子这篇文章能帮你少走不少弯路。1. 情绪 Alpha 到底在赚什么钱很多人第一次听到“情绪因子”会觉得玄以为是把新闻标题丢进模型里跑个分然后对着分数开仓。这种做法不是不对而是太粗糙。要理解情绪 Alpha 的收益来源得先搞清楚你赚的是谁的钱。1.1 市场参与者的行为偏差才是利润来源市场的价格由边际交易者决定而边际交易者往往不是理性的。某只股票出了利空公告按理说价格应该一步到位但实际上散户看到新闻后第一反应是恐慌卖出机构看到的是错杀机会。这种分歧和反应速度的差异就是情绪因子的利润池。情绪 Alpha 赚的不是公司盈利增长的钱而是市场参与者因为认知偏差、注意力偏差、处置效应而系统性亏掉的那部分钱。散户容易高估新闻的短期影响低估长期基本面机构容易过度自信忽略市场情绪极端值的预测力。这些行为模式是可重复的所以情绪因子本质上是一种行为金融因子的落地实现。1.2 情绪数据与量价、基本面数据的本质区别量价数据是结果是成千上万笔交易撮合出来的价格和成交量它已经是“过去式”。基本面数据是慢变量财报一个季度才披露一次等你能算出来的时候价格已经反应了一大半。情绪数据恰好卡在这两者之间它发生在交易之前是“态度”和“意图”的代理变量而且更新频率可以做到秒级、分钟级、小时级。这也是情绪因子为什么能提供增量信息的原因。它跟价格数据不是同一维度的东西相关性天然偏低。把情绪因子叠加到已有的策略组合里最大的价值不是单独把夏普做多高而是把组合整体相关性降下来。1.3 情绪因子的适用边界不是所有标的都适合用情绪因子。我自己的经验是小盘股、成长股、高换手率个股情绪因子表现最好。逻辑也很简单这些股票的定价权更多掌握在散户和游资手里行为偏差更明显情绪波动对价格的影响更直接。反而是一些超大市值、机构定价为主的蓝筹股情绪因子的预测能力弱很多。红利股和低波策略的持仓情绪因子基本不适用因为它们的定价逻辑从来就不是靠情绪驱动的。如果你要做的是指数增强情绪因子更合适的定位是超额收益的补充而不是主引擎。在做任何情绪策略之前先想清楚你的标的上到底有没有足够的“情绪交易者”如果没有把因子硬塞进去只会增加换手和摩擦成本直接拖累收益。2. 情绪 Alpha 的完整构建流程很多教程一上来就扔给你模型和代码但实际做下来最大的坑基本都藏在数据处理阶段。我把整个流程拆成四个环节每个环节都有容易踩的雷。2.1 第一步数据源的选择与取舍情绪数据的源头分几大类各有利弊。第一类是社交媒体文本比如国内外主流社交平台上用户对股票的自发讨论。它的优势是覆盖广、反应快很多消息在新闻稿还没发出来的时候社交平台上已经有讨论了。劣势是噪音极大全是散户化的表达方式各种 meme、表情包、反讽梗词级别的分类很容易出偏差。第二类是新闻数据包括财经新闻、公司公告、政策报道。新闻数据的信噪比明显高于社交媒体因为这些文本是成体系的有标题、有正文、有来源机构。劣势是覆盖密度低一家中小市值公司可能一个月都没几条像样的新闻。第三类是搜索趋势数据和研报数据搜索趋势代表的是大众注意力的真实流向研报则代表的是卖方观点的变化。我见过很多人做情绪因子只抓一种数据源做出来整个策略对单一数据源过度依赖。实际使用中建议至少两种数据源交叉验证。搜索数据能捕捉注意力社交媒体能捕捉情绪强度新闻能捕捉事件驱动。三者合一互相校验比任何单一数据源都靠谱得多。2.2 第二步文本标准化这件事不能省很多做策略的人一看是文本数据就直接调个预训练模型开始跑情绪打分完全跳过预处理。这是个大坑。你拿到的原始语料不管是爬下来的还是买的都是脏数据。里面充斥着HTML标签、错别字、重复字符、表情符号、信息、链接。这些噪音如果不清理最后的情绪分数会被严重污染。我的处理习惯分四步走先做基础清洗去掉链接、HTML标签、特殊符号这一步写正则或者用现成的清洗库都可以再做分词和词性标注中文用分词工具英文直接用空格切分然后标出词性重点抓形容词、副词和动词因为情绪主要承载在这几类词上然后做停顿词过滤把虚词、代词、无意义连接词全部去掉最后一步是做否定词处理比如“不看好”和“看好”之间的区别如果只做词语级别的情绪匹配会直接把正面句判成负面句这个问题必须做局部依存分析才能解。2.3 第三步情绪分数怎么算情绪打分这一步目前主流做法有两条路线。一条是词典法一条是深度学习方法。词典法的核心是维护一个带权重的情绪词典每个词有对应的情感分数把所有词的情感分求和归一化得到整条文本的情绪分。这个方法简单、解释性强、计算量极小缺点是它锁死了情感表达方式遇到讽刺、反话、语境反转就直接失效。深度学习路线比如用情感分类的预训练模型直接跑一个正向/负向/中性概率输出。优势是能把上下文语境考虑进去像“这只股票跌得让我笑了”这种反讽句词典法会判成负面深度学习模型则有可能捕捉到那个“笑”字底下的别样意味。劣势是它对算力和数据量的要求高而且推理结果不够透明你要向投委会解释每一个预测背后的原因会发现这件事非常困难。我自己常用的做法是双轨制用深度学习模型做粗分类把文本分成正向、负向、中性再用词典法在细分情绪上做加权修正比如“恐慌”“贪婪”“焦虑”“兴奋”这类具体情绪维度。这个组合既能保证准确度又保留了解释性。千万别迷信模型情绪打分的实质仍然是“把人类的表达方式翻译成数字”模型的验证才是核心环节模型本身再花哨验证不足也会翻车。2.4 第四步从文本分数到股票信号单条文本的情绪分数是零散的必须聚合到股票层面才算能用的信号。聚合方式通常有两种一种是把同一只股票在固定时间窗口内所有文本的情绪分数做等权平均或市值加权平均另一种是做事件驱动分析把关键事件前后一段时间的情绪分数变化序列当成一个整体特征。聚合之后还必须做中性化处理。情绪因子跟市值因子有很强的相关性因为小盘股在社交媒体上的讨论热度天然更高。如果不做市值中性化、行业中性化你跑出来的因子表现很可能只是市值因子的镜像。一般做法是用线回归或者分位数映射把情绪因子中跟市值、行业相关的部分剥离掉剩下的残差才是干净的 Alpha 来源。3. 从情绪信号到可交易策略的关键细节算出一个情绪因子只是第一步把它变成能产生持续收益的策略中间隔着大量工程细节。有几次我把回测跑出很漂亮的曲线一上模拟盘就废掉后来发现全是处理细节上的问题。3.1 信号平滑与换手率控制原始情绪信号的换手率非常吓人。因为情绪数据的噪音大可能今天情绪极度悲观明天又来一条反转型新闻情绪分直接从负变成正你要是跟着这种信号频繁调仓手续费和冲击成本就能吃掉大部分收益。我的做法是先对信号做指数加权平滑给近期更大的权重而不是直接等权滚动平均。然后设置调仓阈值信号强度不超过阈值就不做任何操作用这个方式硬性过滤掉低置信度的信号能明显改善净值曲线的平滑度。3.2 长短仓组合的构建方式情绪因子既可以做多头策略也可以做多空组合。做纯多头的时候我一般会选择情绪分数排名前 20% 到 30% 的股票等权持仓。做多空组合时更推荐的方法是多空组合的对手就是市场本身如果你的模型在情绪极端值的判定上足够准确做多前 10% 并做空后 10%效果会显著好于单纯的多头策略。不过这里要特别注意流动性约束很多人做回测时完全忽略可做空名单和融券成本导致回测出来的多空策略收益严重虚高。一套严谨的多空情绪策略至少要把融券费、做空限制、最小交易单位这些现实摩擦全部考虑进去否则未来上了实盘你会被市场教育得很惨。3.3 情绪因子与其它因子的合成情绪因子单独用极端情况下能跑出很高收益但其净值曲线会伴随大幅回撤。更合理的做法是把情绪因子跟动量因子、价值因子或者质量因子做线性合成或非线性合成让每一种策略都在它最舒适的市场环境里贡献收益。一个简单的做法是对每个因子做 z-score 标准化然后按照等权或半等权的方式合成一个综合因子。更进阶的做法是用条件因子模型根据市场状态动态调整各因子权重比如在市场波动率升高时加大情绪因子的权重因为它在这种环境下贡献信息的能力更强。4. 情绪因子落地中的典型问题与排查情绪因子最大的特征是最容易产生“过拟合幻觉”因为可调的自由度太多数据源可以换、文本清洗可以改、打分模型可以调、聚合方式可以选、平滑参数可以降、调仓频率可以变。这么多旋钮你要是怀着一颗“追求最好回测结果”的心去调参几乎必然得到一个在样本内优异、样本外崩溃的模型。我踩过最深的一次坑是在一个项目里用到了某个特定时间段内的社交媒体数据回测效果很好结果后来仔细一查那段数据里有一大批被平台删帖删掉了剩下的都是情绪比较温和的内容等于变相做了一个未来数据清洗。这种坑如果不做数据一致性校验根本发现不了。再就是延迟问题。文本数据从事件发生到数据源收录再到你本地处理完这里面有时间差。有些所谓“实时”的数据源实际上事件发生后 5 到 15 分钟才推给你用于高频策略完全不可行。我的经验是情绪因子比较适合用在日频或小时频的调仓周期上如果要做日内对数据链路的要求会成倍提高。最后说一个小技巧验证情绪因子有没有真实预测力最简单的办法是做事件研究法。选一批情绪极端事件比如某只股票连续 N 天被社交媒体情绪强制看多然后统计事件发生后 5 天、10 天、20 天的累计超额收益。如果这种极端情绪过后收益有明显的反向修正规律说明因子有效。如果事件后收益没有规律那无论你怎么调模型和参数这个因子本身就是个幽灵信号趁早放弃。5. 后续章节与情绪之外的思考这一章只聊了情绪 Alpha 的基础框架但情绪本身不是孤岛。新闻数据结构更规整、来源更权威、事件语义更清晰新闻 Alpha 和情绪 Alpha 的结合能产生很多非常有趣的叠加效应。比如新闻里出现利空事件但社交媒体情绪反应平淡说明市场对该利空尚未充分定价这种“预期差”本身就是一种很有意思的信号。反过来如果新闻平淡社交媒体却情绪高涨又是一种值得关注的背离信号。这一系列的内容我打算按三条线往下推进第二章拆新闻 Alpha 的构建方法第三章把情绪和新闻信号叠到一起讲预期差因子的搭建与验证。这一篇的定位相当于把地基打牢了把“情绪到底能不能变成 Alpha”这个命题先讲清楚。情绪 Alpha 不是一个可以直接抄作业的因子它更像是一套方法论需要你根据自己手上的数据、标的和系统去适配。但如果你能把它真正理解了、搭起来、跑顺了它给你的超额收益会远超那些已经被挖烂的传统因子。希望这个系列对你能有实际帮助。
返回列表