深圳融克迪特科技有限公司 Logo,金融科技,量化交易,软件开发

深圳融克迪特科技有限公司

RONG CREDIT TECHNOLOGY CO., LTD.

工具实战

【CatBoost 系列 第4讲】在事件驱动策略中的应用:财报与公告特征融合

从事件时间对齐、事件自身特征和市场背景特征出发,说明怎样把财报与公告样本整理成适合 CatBoost 训练的事件驱动数据表。

2026-04-29 智铨研究 阅读时长 6 分钟

目录

CatBoost · 工具实战

  1. 第 1 讲【CatBoost 系列 第1讲】在量化任务中的优势:有序提升与抗过拟合机制
  2. 第 2 讲【CatBoost 系列 第2讲】特征输入规范:类别编码、缺失值与时间切分
  3. 第 3 讲【CatBoost 系列 第3讲】参数调参与早停策略:稳定收益优先配置法
  4. 第 4 讲【CatBoost 系列 第4讲】在事件驱动策略中的应用:财报与公告特征融合
  5. 第 5 讲【CatBoost 系列 第5讲】模型可解释性:特征贡献、样本归因与异常诊断
  6. 第 6 讲【CatBoost 系列 第6讲】概率输出与风险分层在选股模型中的应用
  7. 第 7 讲【CatBoost 系列 第7讲】跨市场迁移:A股与期货数据域适配方法
  8. 第 8 讲【CatBoost 系列 第8讲】模型鲁棒性测试:市场状态切换下的稳定性评估
  9. 第 9 讲【CatBoost 系列 第9讲】生产化部署:批量推理、监控告警与漂移修复

一、为什么到了事件驱动任务,CatBoost 的优势会比普通日频因子表更容易显出来

在普通日频因子任务里,CatBoost 的优势已经相当明显,但到了事件驱动场景,它往往会显得更顺手。原因很现实。事件样本天然混合了大量离散信息,比如公告类型、披露时段、财报季度、修订方向、是否超预期、所属行业、是否停牌、是否经历过前期问询。你很难说哪一列是“纯粹连续”的,也很难用一个简单的线性关系把这些信息压干净。CatBoost 对类别列的处理能力,在这里就会显得格外有价值。

但也正因为事件样本更复杂,它的落地难点并不只是模型选择,而是样本构造本身。你要面对的不只是“一天一行”的普通时点数据,而是一条条事件记录。每一条记录都带着明确的发生时刻、事件属性、事件前市场背景,以及事件后要观测的标签窗口。只要这些边界稍微不清楚,模型学到的就不再是事件影响,而很可能是时间错位之后的伪关系。

所以这一讲真正要做的,不是简单说“CatBoost 适合事件驱动”,而是说明为什么它适合,以及怎样把财报和公告这些复杂离散信息整理成一张真正可以训练的事件样本表。这是事件驱动建模能不能站住的第一步。

二、为什么事件样本和普通日频样本最大的差别,在于“一行不再只是某一天,而是某一次事件”

很多人刚从日频因子建模转到事件驱动时,最容易沿用旧思路,觉得反正都是表格,一天一行、一只股票一行就继续往下做。问题在于,事件驱动样本的核心单位已经变了。一行记录不再只是“某股票在某日的一组特征”,而更像“某股票在某个明确披露节点上发生的一次事件”。这个变化非常关键,因为它会直接影响特征如何组织、标签如何定义,乃至训练验证如何切分。

例如,一条业绩预告事件样本不只是一个日期加若干因子值,它还必须回答:这件事什么时候披露,是盘前、盘中还是盘后,事件本身是什么类型,事件前市场状态如何,标签要看事件后几天表现。只要这一层没先理清,事件样本表就很容易变成“看起来像表、实际上时间语义含混”的东西。到了模型层,问题往往已经来不及救。

因此,本讲最值得先建立的观念就是:事件驱动建模时,一行的最小单位已经从“时点样本”变成了“事件样本”。只要这个单位先看清,后面的样本构造才会顺。

三、为什么事件时间必须精确到“披露发生在交易时段的哪个位置”

事件驱动里最常见、也最容易被低估的错误,就是只保留一个日期字段,却没有认真区分事件到底发生在盘前、盘中、盘后还是非交易日。这种简化在普通资料整理时或许还能忍,但一旦进入模型训练,就会立刻带来标签起点错位。因为不同披露时段意味着市场第一次能够反应的时点完全不同。

盘前公告,市场通常从当日开盘开始定价;盘后公告,更合理的标签起点往往是下一个交易日;盘中公告则可能还要进一步考虑流动性和公告发布具体时刻。若你把这些事件都粗暴归到同一日、同一起点,模型学到的就不是真实的事件反应,而是大量被时间错位污染的收益响应。

这也是为什么事件时间在这一讲里位置极重。它不是附属字段,而是整张事件样本表的时间锚点。只要这个锚点不准,后面的市场背景特征、标签窗口和验证结果都会跟着歪掉。对事件驱动来说,这几乎是第一层底线。

四、为什么事件样本表里的特征,最好先拆成“事件本身”和“事件发生时的市场背景”两层

构造事件样本时,一个很常见的混乱来源,就是把所有能想到的列都平铺到一张表里,却没有先分清这些列在回答什么问题。更稳的做法,是至少先把特征拆成两层。第一层是事件本身的信息,也就是这件事到底是什么,例如公告类型、财报季度、是否修订、预告方向、披露时段。第二层是事件发生时的市场背景,也就是事件落在什么环境里,比如事件前 5 日收益、20 日波动率、换手率、行业状态、市值层级等。

这两层拆开非常有价值。因为前者回答“发生了什么”,后者回答“发生时市场处在什么状态”。一旦你不做这种区分,后面无论解释模型还是排查异常,都会很痛苦。你很难知道模型到底是在学事件本身,还是在学事件发生时的市场环境。对量化研究来说,这两者虽然都重要,但含义完全不同。

因此,本讲里样本表整理的关键,不只是多收集特征,而是先把特征分层。只要分层清楚,后面的训练和解释都会容易得多。

五、为什么财报和公告样本里,类别特征往往比连续特征更值得优先设计清楚

事件驱动和普通横截面因子任务一个很大的不同,是类别语义更重。公告类型、披露时段、财报季度、行业类别、板块属性、是否修订,这些列的业务含义非常强,而且很多时候比一两个连续数值更先决定了事件的结构。也正因为如此,在事件样本表里,类别特征往往应该被更认真地设计,而不是被当作顺手附带的字段。

这恰恰也是 CatBoost 在事件任务里显得特别合适的原因。你不需要把这些列硬做成大量 one-hot 扩展,也不用把它们粗暴压成连续编号,而可以更自然地保留类别语义交给模型。对财报和公告这类信息密集、类别关系复杂的任务来说,这会显著减少前处理扭曲。

但这里要注意,优先设计清楚类别特征,并不等于连续特征不重要。连续特征更像是市场背景和事件强度的补充,而类别特征往往更像是在定义事件自身的形状。两者结合起来,样本表才会更完整。只是从事件任务的第一步看,类别层的整理往往更不能马虎。

六、为什么标签不能只盯单天收益,而要先根据交易动作定义你真正关心的响应窗口

事件驱动任务里,另一个非常容易被偷懒处理的地方是标签。很多人图省事,会直接拿公告后次日收益当标签,好像只要有个响应值就能训练。这个做法有时并不是完全错,但如果你没有先想清楚策略真正关心的是什么,就很容易把标签定义得过窄。因为不同事件对市场的影响节奏不一样,有些是一日反应完成,有些会持续几天,有些则更像先过度反应再回归。

因此,标签设计应该先回到交易动作本身。你到底是要筛出事件后 3 到 5 天持续走强的机会,还是只关心公告后一日的冲击,或者更在意事件后阶段性跑赢行业基准的概率。只要这个目标没先想清楚,标签就很容易只是“为了能训练而训练”。CatBoost 无论做回归还是分类,都需要一个真正贴近下游动作的标签定义,否则模型输出再漂亮也很难直接转成可执行规则。

所以,本讲里讲标签,不是为了列更多定义方式,而是在强调:事件任务的标签要围绕你的交易目标来设计,而不是只图方便选一个最容易算的收益数值。

七、为什么事件样本里最危险的问题,不是特征太少,而是时间对齐悄悄错了

事件驱动建模里,最让人头疼的一类错误,往往不是代码报错,而是时间对齐看起来正常、实际上已经错位。比如盘后公告被按盘前可见处理、事件发生后的价格背景被错误拼回事件前特征、同一个事件簇中的多次披露被当成彼此独立且标签窗口重叠的样本。这些问题不会像语法错误一样立刻暴露,却会非常安静地污染样本表。

也正因为如此,事件任务里最危险的从来都不是“特征列不够多”。特征少一点,最多让模型弱一些;时间对齐一旦错了,模型学到的就是完全不该学的信息。对研究者来说,这种问题尤其麻烦,因为你可能会得到一份非常好看的线下结果,却很难察觉它为什么上线后完全失灵。

所以本讲反复强调时间线,不是因为它比特征工程更好讲,而是因为它真的比特征多少更决定事件模型能不能信。只要时间对齐还没先稳住,别的优化都应该后放。

八、这一讲真正建立的,是“事件样本治理”而不是“多收集几列公告字段”

如果把这一讲往更高一层概括,它真正建立的不是某几列具体特征,而是一种事件样本治理意识。也就是你开始知道:事件样本表不是把公告字段和几列价格快照拼起来就算完事,而是要系统地处理事件时间、事件类型、市场背景、标签窗口和重复事件边界。只有这些层都被治理清楚,CatBoost 才有机会真正发挥出对类别信息和混合特征的优势。

这种治理意识非常重要,因为后面无论你做的是财报预告、正式财报、重大合同公告还是行业政策事件,底层都要面对同样的问题。只要你现在先学会围绕时间线和样本边界治理数据,而不是只想着多收几列字段,后面很多事件任务都会顺很多。

所以本讲不是在堆积素材,而是在搭一个更稳的事件建模工作台。对整个 CatBoost 系列来说,这一步非常关键。

九、为什么这一讲做完后,最好已经形成“事件表不是普通面板表”的判断

事件驱动样本最容易被做坏的地方,就在于把它误当成普通日频面板表。第 4 讲更值得留下的一层判断是,事件表的基本单位不是某一天的常规横截面,而是一次具备明确时间戳、信息触发点和后续反应窗口的事件。只要这层判断已经建立,你在设计样本表时就会更自然地先问事件何时发生、何时可交易、何时计入标签,而不是先急着堆更多字段。

这层判断非常关键,因为它决定了你后面看待特征、标签和对齐关系的方式。只要基本单位判断错了,后面很多细节即使做得很努力,也还是会偏。

十、这一讲也在帮你建立“事件治理先于事件特征丰富度”的意识

对于事件模型来说,一个常见误区是过早追求特征丰富度,好像把更多公告字段、多一点行业上下文、多几列价格特征拼进去,模型就会自然变好。第 4 讲更强调的是,事件治理先于事件特征丰富度。也就是先把时间线、事件边界、标签窗口和重复样本关系治理清楚,再谈特征扩张。只要这层顺序已经站稳,后面的建模质量通常会更可靠。

这层顺序感特别值钱。因为事件任务最怕的不是特征少,而是样本边界先天混乱。第 4 讲先把这个底座立住,后面解释性分析和输出治理才真正有意义。

十一、总结

这一讲的重点,不是简单说明 CatBoost 也能做事件驱动,而是讲清楚怎样把财报和公告整理成真正可训练的事件样本表。你需要先把一行看成一次事件而不是一个普通日期样本,精确处理披露时段,拆开事件本身信息和市场背景特征,围绕实际交易动作设计标签窗口,并把时间对齐当成最先要守住的底线。只要这些层已经立住,这一讲就真正完成了。

十二、系列衔接

本讲是《CatBoost量化建模完整学习计划》的第 4 讲,当前主题是《CatBoost 在事件驱动策略中的应用:财报与公告特征融合》。上一讲已经把输入规范、类别列、缺失值和时间切分这些基础前提讲清楚,这一讲则把视角推进到更复杂也更贴近实战的事件样本。下一讲会继续往后走,专门讨论 CatBoost 训练完成以后,如何用解释性工具检查特征贡献、单样本归因和异常失真。

十三、风险揭示与免责声明

风险揭示与免责声明

本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。

本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。

市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。

读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。