公告分类与标签化:业绩预增、重大合同、资产重组、分红送转、股东增持

做事件驱动策略,第一步就是给公告打标签。

很多人觉得这步简单,不就是看标题嘛。我刚开始也这么想,结果回测数据一塌糊涂。后来才发现,公告分类这件事,做对了是超额收益的起点,做错了就是过拟合的坑。

为什么需要分类与标签化?

你想想看,A股每天几百份公告,人工看根本来不及。量化策略要的是机器能理解、能打分、能排序。所以我们要把非结构化的公告文本,转成结构化的标签数据。

说白了,就是给每份公告贴个「身份标签」。比如「业绩预增」、「重大合同」、「资产重组」等等。这样策略才能快速筛选出有效信号。

核心原则:标签要互斥、要完整、要可量化。一份公告只能属于一个主标签,但可以有多个副标签。

五大核心公告类型详解

1. 业绩预增

这是我最喜欢的一类。业绩预增公告,说白了就是公司提前告诉你「我今年赚得不错」。但这里有个坑——预增幅度和实际增速往往有偏差。

我个人习惯把业绩预增分成三档:

  • 略增:增幅0%-30%,市场基本没反应
  • 预增:增幅30%-100%,有博弈空间
  • 大幅预增:增幅超过100%,容易出涨停

我在项目中遇到过一家公司,预告增长150%,结果第二天高开低走。为什么?因为市场早就预期到了。所以光看增幅不够,还要看「超预期程度」。

我的经验:业绩预增公告发布后,如果当天涨幅小于5%,且换手率不高,后续3-5天往往还有空间。如果当天直接涨停,那就别追了。

2. 重大合同

重大合同公告,常见于建筑、工程、IT服务等行业。这类公告的核心看点是合同金额占营收的比例。

我一般这样分类:

合同金额占比 标签 市场反应
< 5% 普通合同 几乎无影响
5% - 20% 重要合同 小幅上涨
> 20% 重大合同 容易涨停

嗯,这里要注意:合同公告里经常有「框架协议」这种字眼。我曾经吃过亏,看到一份10亿的框架协议就冲进去,结果人家只是意向,根本没落地。所以标签里一定要区分「正式合同」和「框架协议」。

3. 资产重组

资产重组是A股最刺激的公告类型。停牌前买入,复牌后数板,这是很多人的梦想。但现实是,重组失败的概率也不低。

我一般把资产重组分成:

  • 重大资产重组:涉及控制权变更、借壳上市
  • 一般资产重组:收购、出售子公司等
  • 重组终止:这个标签很重要,往往是利空

我记得有一次,某公司公告重组停牌,我按模型算出来复牌后至少3个板。结果复牌当天就开板了,因为重组方案不及预期。从那以后,我加了一个「重组方案质量」的评分标签。

避坑指南:我曾经因为没区分「重组进展」和「重组完成」两个标签,导致策略在重组进展公告时买入,结果股价反而跌了。后来我规定:只有「重组完成」才触发买入信号。

4. 分红送转

分红送转公告,很多人觉得是利好。其实不然。高送转在2015年前后是爆炒题材,现在监管严了,市场也理性了。

我这样分类:

  • 现金分红:股息率 > 3% 才算有效信号
  • 送转股:10送10以上才算高送转
  • 分红预案 vs 实施:预案阶段炒作空间大,实施阶段反而容易见光死

我个人习惯,分红送转的标签要结合股价位置看。如果股价已经涨了30%以上,那分红公告大概率是出货信号。

5. 股东增持

股东增持,尤其是大股东或高管增持,往往被解读为「内部人看好」。但这里有个细节——增持金额和增持方式。

我一般这样打标签:

增持类型 标签 信号强度
大股东增持 > 1% 强增持 ★★★★★
高管增持 > 100万 中增持 ★★★★
员工持股计划 弱增持 ★★★
增持计划(未实施) 意向增持 ★★

你想想看,大股东花几千万真金白银买自家股票,和只是发个增持计划公告,完全是两码事。所以标签里一定要区分「已实施」和「计划中」。

标签化系统的核心逻辑

说了这么多,其实标签化系统就三个步骤:

  1. 文本解析:从公告标题和正文中提取关键词
  2. 规则匹配:用正则或关键词库打上主标签
  3. 量化打分:根据金额、比例、时间等维度给标签打分

下面是我画的一张标签化流程图,帮你理清思路:

公告标签化处理流程 原始公告文本 关键词提取 + 正则匹配 规则引擎:匹配五大公告类型 业绩预增标签 重大合同标签 资产重组标签 超预期评分 金额占比评分 重组质量评分

代码示例:一个简单的标签分类器

下面是我写的一个简易版公告分类函数,用关键词匹配来打标签:

def classify_announcement(title, content):
    """
    公告分类与标签化
    title: 公告标题
    content: 公告正文(前200字)
    """
    text = (title + content).lower()
    
    # 业绩预增
    if any(kw in text for kw in ['业绩预增', '净利润增长', '大幅上升']):
        return '业绩预增'
    
    # 重大合同
    if any(kw in text for kw in ['重大合同', '签订合同', '中标公告']):
        return '重大合同'
    
    # 资产重组
    if any(kw in text for kw in ['资产重组', '重大资产', '收购', '借壳']):
        return '资产重组'
    
    # 分红送转
    if any(kw in text for kw in ['分红', '送转', '利润分配', '转增']):
        return '分红送转'
    
    # 股东增持
    if any(kw in text for kw in ['增持', '增持计划', '股东增持']):
        return '股东增持'
    
    return '其他'

这个函数虽然简单,但实际项目中我用了类似的逻辑,只是关键词库扩充到了200多个,还加了权重打分。嗯,这里要注意:关键词匹配容易误判,比如「增持」和「减持」只差一个字,所以正则里要加负向排除。

避坑指南:标签化常见的三个坑

  • 坑一:同一份公告可能包含多个事件。比如「业绩预增+分红送转」同时出现。我的做法是:取权重最高的作为主标签,其他作为副标签。
  • 坑二:公告日期和实际披露日期可能不一致。有些公司晚上发公告,算当天还是第二天?我统一按「公告日期+1」处理,避免盘中临时决策。
  • 坑三:标签要定期更新。比如「高送转」这个标签,2018年之前和之后的市场反应完全不同。我每年都会重新跑一遍历史数据,调整标签权重。

我的建议:刚开始做公告标签化,别追求完美。先搞一个粗粒度的5分类,跑通流程再说。等策略稳定了,再慢慢细化到10个、20个标签。迭代比一步到位更重要。

好了,公告分类与标签化就讲到这里。记住一句话:标签是策略的起点,但绝不是终点。真正赚钱的,是标签背后的量化打分和择时逻辑。


公众号:蓝海资料掘金营,微信deep3321