A 股适配

A 股新闻情绪分析:时间对齐、去重与公告分层怎么处理

老版 StockSight 的全部采集源都围绕英文语境:Twitter 流、Yahoo 新闻页、Yahoo 行情。要把它用到 A 股,需要自己补四件事。

本页不讲「怎么把英文换成中文」这种一句话的事,而是逐条说明换过去之后新增了哪些会出错的环节,以及每个环节该怎么设判据。

针对路线:B 新闻情绪 Skill(自带 A 股源)与自建改造核验日期:2026-09-30本页为方法论整理,未跑具体标的的回测

新闻发布原始时间
抓取入库本次时间
信号生成可决策时间
可交易下一交易日
示意图:四个必须分开记录的时间点。盘后发布的信息不能回填到当日盘中信号,这是 A 股场景最常出错的环节。
StockSight · 缺什么

老版 StockSight 用到 A 股,缺的是哪六样?

先看清缺口,再谈怎么补。

缺口老版 StockSight 的实现换到 A 股后的后果补法
A 股数据源只有 Twitter 流与 Yahoo 新闻页抓不到任何 A 股标的的新闻换用东方财富、巨潮资讯等公开源(B 路线走 akshare)
中文分词nltk.word_tokenize,面向英文中文标题分词结果不可用,token 数门槛失准换 jieba 等中文分词;token 门槛按字数重设
中文情绪模型TextBlob + VADER(实测对中文全为 0)所有中文标题都被判中性换 SnowNLP 或中文金融模型(见情绪模型页)
白名单词表13 个 token,围绕 Tesla / Elon Musk所有 A 股新闻都因「不含默认 token」被丢弃按标的与板块重建词表
交易日历无无法判断某条新闻落在哪个交易日前引入交易日历,做「新闻 → 下一交易日」映射
涨跌停与停牌无相关逻辑涨跌停日的情绪与价格关系被误读按主板/创业板/科创板/ST 分别设阈值

这六项里,前三项决定「能不能跑」,后三项决定「结论能不能用」。很多教程只解决前三项,然后直接输出结论。

StockSight · 时间对齐

A 股新闻时间与交易时间怎么对齐?对不齐会怎样

这是 A 股场景里最容易犯、后果最严重的一类错误。

时间点含义老项目的做法正确做法
新闻发布时间媒体或交易所实际发布的时间没有单独字段,抓取时统一打一个当前时间必须单独保存原始发布时间,且区分时区
抓取入库时间你的程序什么时候拿到这条数据datetime.utcnow().isoformat()与发布时间分开存;延迟量本身就是数据质量指标
信号生成时间情绪分数/聚合信号产出时间与入库时间几乎相同明确到「用于哪一天的决策」
可交易时间A 股 T+1,且受涨跌停与停牌限制无概念盘后信息只能映射到下一交易日
收益观察窗口信号后 1 日 / 5 日 / 10 日无概念分窗口统计,不要只看一个周期
典型错误:把「今天 20:00 发布的业绩预告」的情绪分数,用于「今天 09:30–15:00 的盘中信号」。这条信息在盘中根本不存在,任何因此产生的收益都属于未来信息泄露。判据是:你的信号生成时间必须晚于新闻发布时间,否则该样本必须丢弃。

老版 StockSight 用 UTC 时间打戳(utcnow),而 A 股交易时间按北京时间。换算时要注意 15:00 收盘对应 UTC 07:00,跨日会对齐错误。以你所用数据源的时区标注为准。

StockSight · 去重

同一条新闻为什么会被重复抓取?重复会怎样扭曲情绪信号

中文财经新闻的转载密度远高于英文源,而去重正好是老项目最弱的一环。

重复类型表现对情绪统计的影响处理方式
同源转载同一篇稿子被多个平台以不同标题发出正面/负面计数被同一事件多次计入按正文指纹(正文哈希)去重,而不是按标题字面
标题微改标题加前缀「重磅」「独家」标题去重完全失效归一化后再比:去标点、去修饰词、去平台名
滚动更新同一事件连续发多条进展早先的负面判断被后续更正覆盖不了按事件 ID 聚合,保留最新版本并标记曾被修正
进程重启老项目用内存列表去重,重启后清空同一批新闻被重复写入把去重键持久化,或用存储层的唯一约束
链接跟踪开启外链跟随后,同一篇文章从多个入口进入正文被重复打分在入库前统一做正文级去重,而不是在抓取端
老项目源码里的去重是 if htext not in self.headlines,即内存中的标题字符串精确匹配。标题微改一次就绕过,进程重启即清空。这个实现对英文推特流的问题不大,放到中文新闻转载场景会直接失真。
StockSight · 公告分层

公告、财报与媒体新闻的权重怎么定?为什么不该等权相加

它们的信息权威性与时效性完全不同,混在一张情绪均值里会互相稀释。

层级来源示例权威性时效性建议权重
交易所公告巨潮资讯、交易所网站最高(一手、有法律效力)有明确发布时间,通常盘后最高,且必须单独成组统计
定期报告年报、半年报、季报高(经审计或经披露)低频、集中在披露季高,但应与「业绩预告」分开看
业绩预告/快报公司主动披露中高(未经审计)集中在特定时段中高,注意与最终财报的差异
风险提示类关注函、立案调查、退市风险警示高随时高,且应触发独立告警而非并入均值
财经媒体报道门户、平台转述中(可能二次加工)高频中,需要去重后再统计
社交媒体讨论股吧、评论低(情绪噪声大)高频低,或作为独立信号而非同一指标

B 路线的 Skill 文档里写了「优先免费公开公告源(巨潮资讯、东方财富公告),普通新闻只作为兜底背景」,方向与本表一致。但它的输出仍然是一个聚合均值,没有按层级分别加权——需要你自己在调用侧分层统计。以该 Skill 的官方文件为准。

StockSight · 制度约束

涨跌停、ST 与停牌会如何改变同一个情绪信号的解读

这些约束在英文市场里形态不同,直接用会出错。

制度因素影响如果不处理会怎样建议判据
涨跌停限制涨跌停当日价格无法反映真实供需把涨停当成「情绪到顶」或「强势买入」涨跌停日单独标记,不与其他交易日混算收益
板块阈值不同主板 10%、创业板/科创板 20%、ST 5% 等用统一比例判断涨跌停会漏判按板块与是否 ST 分别取阈值
ST 与退市风险风险等级本就不同把 ST 股的日常波动当成异常事件ST/退市风险标的单独分组
停牌无成交、无价格,但可能仍有新闻把停牌期间的情绪计入「当期信号」停牌期样本单独标记;恢复交易日单列
T+1当日买入不能当日卖出用当日涨跌幅衡量「信号当日收益」收益从下一交易日起算
交易日历与节假日春节等长假无法交易把长假前最后一天当成普通交易日引入交易日历,判定「下一交易日」
一个具体后果:如果一个公告在长假前一天盘后发布,它的「下一交易日」可能在一周之后。这期间的市场环境已经完全变了,把它当作短期信号会得到无意义的结论。
StockSight · 落地流程

把 A 股新闻做成可用信号需要哪些步骤

前两步做完再谈模型,否则后面全部白做。

  1. 固定数据源与字段口径

    选定公告源与新闻源各一个起步,明确每条记录至少要有「原始发布时间、标题、正文摘要、来源、标的代码」五个字段。缺发布时间的数据直接不入库。

  2. 做正文级去重

    对正文做归一化后取哈希,作为去重键持久化保存。标题去重不够用,这一点在中文财经新闻里尤其明显。

  3. 按层级打标签

    给每条新闻打上「交易所公告 / 定期报告 / 业绩预告 / 风险提示 / 媒体报道 / 社交讨论」之一,后面统计时分组处理,不要混算。

  4. 选中文情绪模型并建校准集

    用情绪模型页的五步流程。至少要有人工判断过的几十条样本作为参照,否则无法判断模型是否在你的场景里有效。

  5. 对齐交易日历

    把每条新闻映射到「可使用的第一个交易日」,盘后信息一律顺延。这一步做完,你的信号时间戳才有意义。

  6. 分窗口观察,不急着下结论

    按信号后 1 / 5 / 10 个交易日分窗口统计,并单独列出涨跌停日与停牌期。任何单一窗口的良好表现都不足以支撑「信号有效」。

StockSight · 误判清单

A 股情绪分析有哪些看上去合理、实际会出错的判断

这些判断在英文语境里问题不大,放到 A 股会直接改变结论方向。

看起来合理的做法在 A 股会怎样后果替代做法
用抓取时间当作新闻时间回溯抓取历史新闻时,所有新闻都变成「今天」历史时间序列被压成一瞬间,无法做任何时序分析以数据源给出的发布时间为准,缺失的一律不入库
盘后新闻当天就计入当日情绪这条信息在当日盘中并不存在典型的未来信息泄露,回测结果虚高盘后信息顺延到下一交易日
按标题去重转载会改标题同一事件被计多次,情绪均值被放大按正文指纹去重
把公告和媒体新闻放进同一个均值两者权威性、时效性差异极大一条权威风险提示被大量转述稿稀释掉分层统计,风险提示类独立告警
用统一比例判断涨跌停主板、创业板、科创板、ST 阈值不同漏判涨跌停,把受限日当自由交易日按板块与是否 ST 分别取阈值
停牌期间照常计入情绪序列有新闻但无成交、无价格信号与价格错配,统计口径混乱停牌期单独标记,恢复日单列

这六条有一个共同点:它们都不会报错。程序照常运行、照常输出结论,只是结论不可用。因此在 A 股场景里,「跑通了」和「结论可用」之间隔着一整套数据治理工作。

FAQ

关于 StockSight 的 A 股适配常见问题有哪些

有没有现成的 A 股版 StockSight?

没有以这个名字发布的 A 股版本。B 路线(gaaiyun/stocksight-skill)提供了 A 股新闻源与中文模型路由,是三者中最接近的,但它没有公告分层、去重与交易日历逻辑。其余需要自己补。以两个 Skill 仓库的官方文件为准。

为什么一定要单独存新闻发布时间?

因为抓取时间与发布时间经常相差数小时甚至数天(历史回溯时更明显)。如果只存抓取时间,你无法判断这条信息在某个交易时点是否已经存在,时间对齐就无从谈起,样本外验证也做不了。这是判据问题,不是存储洁癖。

标题去重为什么不够?

因为中文财经新闻的转载会改标题:加「重磅」「独家」「解读」等前缀,或换一种表述。只比标题字符串时,同一条稿子会被当成多条独立事件,情绪计数被放大。所以要按正文指纹去重。以你所用数据源的实际情况为准。

公告的情绪分数一定更可信吗?

权威性更高不等于情绪更明确。公告语言高度格式化,通用情绪模型往往给不出强极性(例如「拟回购股份不超过10亿元」在实测里被判成负面)。分层的作用是让你能分别观察,而不是自动提升可信度。以模型实测结果为准。

涨跌停日该怎么处理?

建议单独标记并按板块取阈值(主板 10%、创业板与科创板 20%、ST 5% 等,具体以交易所现行规则为准),在统计收益时剔除或单列。因为涨跌停日的价格无法反映真实的供需,用它计算收益会系统性失真。

本页有没有跑过真实标的的回测?

没有。本页是方法论整理与判据说明,本站未对任何具体标的做过回测,也不提供任何收益数字。所有涉及「怎么判断」的内容都是可自行检验的流程,不是结论。要做回测得先按上一节六步把数据准备好。

数据对齐之后,最关键的问题是:这个信号到底有没有用?

样本外切分、交易成本、概率校准、快照复现——四道检查过不了,结论就不能采信。