公告分类与标签化:业绩预增、重大合同、资产重组、分红送转、股东增持
做事件驱动策略,第一步就是给公告打标签。
很多人觉得这步简单,不就是看标题嘛。我刚开始也这么想,结果回测数据一塌糊涂。后来才发现,公告分类这件事,做对了是超额收益的起点,做错了就是过拟合的坑。
为什么需要分类与标签化?
你想想看,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万 | 中增持 | ★★★★ |
| 员工持股计划 | 弱增持 | ★★★ |
| 增持计划(未实施) | 意向增持 | ★★ |
你想想看,大股东花几千万真金白银买自家股票,和只是发个增持计划公告,完全是两码事。所以标签里一定要区分「已实施」和「计划中」。
标签化系统的核心逻辑
说了这么多,其实标签化系统就三个步骤:
- 文本解析:从公告标题和正文中提取关键词
- 规则匹配:用正则或关键词库打上主标签
- 量化打分:根据金额、比例、时间等维度给标签打分
下面是我画的一张标签化流程图,帮你理清思路:
代码示例:一个简单的标签分类器
下面是我写的一个简易版公告分类函数,用关键词匹配来打标签:
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