4. 事件识别与标准化:从原始数据到结构化信号

好,我们进入第四章。这一章,说白了就是解决一个核心问题:如何把新闻、公告、社交媒体这些非结构化文本,变成量化模型能吃的结构化数据

我个人习惯把这一步叫做“炼油”。原油不能直接烧,原始事件文本也不能直接喂给模型。你得先检测、再分类、最后提取关键属性。整个过程,我把它拆成三个环节:事件检测、分类体系构建、属性提取。

4.1 事件检测算法:从文本中“抓”出事件

事件检测,就是判断一段文本里有没有发生“事”。不是所有句子都包含事件。比如“今日天气晴朗”就不是事件,但“公司宣布回购10%股份”就是。

我早期做这个的时候,踩过一个坑。当时直接用关键词匹配,比如“宣布”、“收购”、“减持”。结果呢?召回率极低。很多事件用词很隐晦,比如“公司拟向特定对象发行股票”,这其实是“定向增发”事件,但关键词里没有“增发”二字。

后来我改用基于依存句法分析的方法。核心思路是:找谓语动词 + 核心名词。一个事件,通常由一个动作(动词)和一个主体(名词)构成。

举个例子:

文本:“阿里巴巴宣布以95亿美元收购饿了么”
依存分析结果:
- 主语:阿里巴巴
- 谓语:宣布、收购
- 宾语:饿了么
- 修饰:95亿美元

事件检测逻辑:
if 存在“收购”类动词 + 公司主体 + 金额修饰:
    判定为“收购事件”

嗯,这里要注意。纯规则方法虽然可解释性强,但维护成本高。我现在的做法是规则 + 轻量级模型结合。先用规则做粗筛,再用BERT之类的预训练模型做细分类。这样既保证了速度,又提升了准确率。

核心指标:事件检测的F1值,我一般要求不低于0.85。低于这个值,后续的因子构建会引入大量噪声。

4.2 事件分类体系构建:给事件“贴标签”

检测到事件后,你得给它分类。分类体系怎么建?我见过很多团队一上来就搞几十个细分类,结果模型根本学不动。

我的建议是:先粗后细,分层构建

第一层,按市场影响方向分:

  • 利好事件:业绩预增、回购、大股东增持、获得大订单
  • 利空事件:业绩预亏、减持、诉讼、监管处罚
  • 中性事件:人事变动、股权激励、分红方案

第二层,按业务类型分:

  • 资本运作类:增发、配股、并购、回购
  • 经营类:订单、合同、产品发布、产能扩张
  • 治理类:高管变更、股权激励、分红
  • 合规类:诉讼、处罚、问询函

第三层,才是具体的细粒度事件标签。比如“大股东增持”下面,还可以分“竞价增持”和“协议转让增持”。

我在项目中遇到过一个问题:同一个事件,不同来源的表述差异巨大。比如“公司回购股份”和“公司实施股份回购计划”,其实是同一件事。所以分类体系里,一定要做同义词归一化

一个小技巧:分类体系的颗粒度,取决于你的策略周期。短线策略(日内/隔夜),需要细粒度事件;中长线策略(周度/月度),粗粒度就够了。别为了追求精细而过度拟合。

4.3 事件属性提取:时间、主体、类型、强度

分类只是第一步。真正让事件变成Alpha因子的,是属性提取。我把它总结为四个核心属性:

属性 含义 提取方法 常见坑点
时间 事件发生/公告的时间点 正则匹配 + 时间解析库(如dateparser) 注意“拟”、“计划”等未来时态
主体 事件涉及的公司/人物 命名实体识别(NER) 简称、曾用名、股票代码映射
类型 事件所属的分类标签 分类模型/规则匹配 多标签事件(如“收购+增发”)
强度 事件对股价的潜在影响程度 情感分析 + 金额/比例量化 主观性太强,需结合历史回测

时间提取,我吃过亏。有些公告写的是“公司于近日收到通知”,这个“近日”怎么处理?我的做法是:优先取公告发布日期。如果文本里有明确日期,再覆盖。千万别用“近日”这种模糊词去猜。

主体提取,核心是实体链接。比如“茅台”要映射到“贵州茅台(600519.SH)”。我维护了一个公司简称-全称-代码的映射表,定期更新。这个表,是事件驱动策略的基础设施。

强度量化,是最难的部分。我个人习惯用事件冲击系数

冲击系数 = 事件涉及金额 / 公司市值 × 情感极性

举例:
- 回购10亿,市值1000亿,情感为正 → 冲击系数 = 0.01
- 减持5亿,市值100亿,情感为负 → 冲击系数 = -0.05

这个系数,我一般会结合历史回测做校准。比如历史上“大股东减持5%”的平均冲击是-3%,那这个事件的强度就标为-3%。

曾经有个坑:我早期做强度量化时,直接用新闻情感分析的结果。结果发现,很多利空新闻被媒体写得“很乐观”,比如“公司亏损但积极转型”。情感分析给出正面,但股价实际大跌。后来我改用事件本身的经济含义来定强度,而不是文本情感。切记:事件强度 ≠ 文本情感

4.4 知识体系总览

下面这张图,是我对这个流程的总结。你可以把它当作一个事件处理流水线的蓝图。

事件识别与标准化流程 原始文本数据 阶段1:事件检测 依存句法分析 + 规则/模型 阶段2:事件分类体系 第一层:利好/利空/中性 第二层:资本运作/经营/治理/合规 阶段3:事件属性提取 时间 | 主体 | 类型 | 强度 dateparser | NER | 分类模型 | 冲击系数 结构化事件数据

你看,整个流程是串行的。前一步的输出,是后一步的输入。任何一个环节出问题,都会传导到最终因子。所以我建议,每个环节都要做质量监控。比如事件检测的召回率低于阈值,就触发告警。

最后说一句。事件识别与标准化,是事件驱动策略的地基。地基不稳,上面盖的楼再漂亮也没用。我见过太多团队,花大量精力在因子组合和回测上,结果发现事件数据本身就有问题。嗯,先把这一步做扎实了,后面的事就顺了。

本章核心要点

  • 事件检测:规则+模型结合,F1不低于0.85
  • 分类体系:先粗后细,三层结构
  • 属性提取:时间、主体、类型、强度,缺一不可
  • 强度量化:用经济含义,别用文本情感

公众号:蓝海数据掘金营,微信deep3321