Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: news-credibility description: 当你手上有一个信号、统计结论或回测结果,想验证它到底靠不靠谱(是不是伪相关/过拟合)时使用;用户常说「这个结论靠谱吗」「这信号是真的吗」「是不是过拟合」「car 显著是真因果吗」「怎么验证」。注意:本技能做的是信号/结论的统计可信度检验,不是判断新闻消息真假——用户问「这条消息能不能信」属于消息溯源与事实核验,不在本技能范围。
信号可信度检验
⚠️ 命名说明:本技能原名为「消息可信度检验」,但实际做的是信号与统计结论的过拟合检验(DoWhy 三重反驳 / 异质处理效应 / Granger 复核),与新闻消息的真伪判定无关。「这条消息能不能信」「这消息是真的假的」不在本技能范围。若用户想找消息,走news-radar;想算消息的股价冲击,走event-impact。
何时使用
触发本技能的典型话术(都是"手上已有一个结论,检验它"):
- 「这个结论靠谱吗?」
- 「这信号是真的吗,还是噪音?」
- 「我这策略是不是过拟合了?」
- 「怎么验证这个事件真的推动了股价?」
- 「上次那个分析我能信几分?」
- 「帮我把这个结果挑挑刺 / 压力测试一下」
轻问 vs 深问(成本控制)
轻问(30 秒级,1–2 个工具)
- 用户只想快速看一个事件冲击是否显著:直接
causal-event_study出 CAR + p 值,再用causal-refute跑一次三重反驳。 - 输出 3–5 行结论:显著与否、方向、评级、一句话风险提示。
深问(多轮,完整链路 + 结构化报告)
- 用户要「完整可信度评估」:事件研究 → 反驳 → (可选)反事实影响/因果发现 → 完整报告。
- 最贵的一步是 `causal-refute` 与 `causal-event_study_batch` 的多事件批量计算(要跑 placebo / 随机共因 / bootstrap 三轮回测,单次可能数十秒到分钟级)。批量任务先拿
job_id再说,不要在前台傻等。
工具链
第 0 步:确认输入(缺数据就先要数据)
必须拿到,否则无法开跑:
- 标的代码:如
sh600519/002371。 - 事件日期:
YYYY-MM-DD。 - K 线数据 `klines`:
[{date:'YYYY-MM-DD', close:number}, ...],按日期升序,建议事件前至少 90 个交易日、事件后至少 10 个交易日。 - 基准数据 `benchmark`(强烈建议):沪深300 / 中证500 等指数同区间日 K,与 klines 对齐。没有基准只能做绝对收益,结论会被大盘涨跌污染。
数据来源说明:工具本身不拉行情。请用户从券商客户端或行情软件(同花顺/通达信)导出后粘贴;若用户只给「代码 + 日期」而不给 K 线,应明确告诉用户「需要你提供该区间日 K 收盘价」,不要自己编造价格。
第 1 步:算事件冲击(得到因果链)
- 调
causal-event_study,传symbol、event_date、klines、可选benchmark、可选sector_benchmark(有板块指数时启用市场+板块双因子模型,更干净)。 - 返回关键字段:
car_1d/car_3d/car_5d、car_pre1d、p_value、is_significant、direction、alpha、beta_market、r_squared。 - 多个事件一起验(比如「这个策略过去 20 次信号」)→ 用
causal-event_study_batch,传events: [...]与timeout。这是重任务:先提交拿job_id,再用causal-job_status轮询,不要傻等。
第 2 步:三重反驳(核心步骤)
- 用第 1 步的结果组装
chain,调causal-refute:
`` chain = { symbol, event_id, event_title, car_1d, car_3d, car_5d, p_value, direction } ` 其中 car_* 必须来自 causal-event_study`,不要手填。
- 三轮回测的含义(讲给用户听):
- 安慰剂处理(placebo_treatment):把「事件日」随机挪到没有事件的日子,如果照样出现同样的 CAR,说明你测到的不是事件效应。
- 随机共因(random_common_cause):引入随机变量作为混杂因素,检验结论是否依赖某个没控制住的共同驱动。
- 数据子集 bootstrap(data_subset):反复抽样子集重算,检验结论对样本选择是否敏感。
- 返回:逐项
robust/refuted判定、passed/failed计数、总体grade(A–F)、recommendation。
第 3 步(可选,深问才走)
- 想量化「这件事到底带来多少异常收益」:
causal-causal_impact,传symbol、event_date、klines、benchmark,返回cumulative_impact、ci_95、significant,比单点 CAR 更稳。 - 想验「是它领先大盘,还是大盘领先它」:
causal-granger_te,传x(基准收益率序列)、y(标的收益率序列)、max_lag,看lead_lag与transfer_entropy。 - 想验「哪类标的对事件反应更强」:
causal-dml_cate,传treatment(事件哑变量 0/1)、outcome(事件后前瞻收益)、features(特征面板)。
第 4 步:沉淀
记忆回路(前查后记)
| 时机 | 动作 | 工具 | |
|---|---|---|---|
| 执行前 | 检索同标的/同板块/同类事件历史上跑过的三重反驳:当时的评级(A–F)、被哪一项反驳打掉、以及那个评级后来被市场证明是对的还是错的 | causal-memory-search_causal(query=「三重反驳 评级 A-F 结论是否被后续走势验证 存疑/不成立被打掉」,可叠加 task_tag=news-credibility 与标的代码) | |
| 执行后 | 把本次检验结论本身记为一条待验证经验:本次判定(稳健/存疑/不成立)、评级、方向、失败项 | causal-memory-record_decision(decision=<本次结论>,outcome="待验证",context=<事件类型 + 板块 + 样本区间 + 是否含基准>) | |
| 复检时 | 事件窗口走完(T+5 至 T+20 交易日)或用户下次问起同一标的时,用同一条 decision 回填真实结果:CAR 是否兑现、当初「稳健」是否成立、「不成立」是否躲过了伪信号 | causal-memory-record_decision(同一条 decision,outcome=实际结果 + 判断正确/错误) |
本技能的历史参照维度是「被检验结论的最终对错」——不是行情涨跌本身,而是「我们给的评级后来准不准」。参照系分两层:一是同类事件/同板块过去的评级分布与失败项(用于判断这一次是偏乐观还是偏保守),二是过去那些评级在窗口走完后被证实的命中情况,即本技能的自我校准记录。
这个记忆对用户的价值在于:可信度检验本身也会出错——把真信号判成 D 级、或把伪信号判成 A 级,代价都不小。持续回填「评级 → 最终对错」,才能让用户知道这套检验是偏严还是偏松;在输出「类似情境 N 次,其中 X 次判断正确」时,用户拿到的就不是一句孤立的评级,而是一个带历史命中率的判断。
输出格式
Agent 必须按以下契约输出(缺数据的项写「未提供」,不要留空也不要猜):
- 一句话结论:这个结论属于「稳健 / 存疑 / 不成立」。
- 冲击指标表:CAR_1d / CAR_3d / CAR_5d、p 值、是否显著、方向、R²、beta。
- 三重反驳表:逐一列 安慰剂处理 / 随机共因 / 数据子集 bootstrap 的 robust 或 refuted。
- 评级与解读:A–F 评级 + 一句话含义。
- 数据说明:样本区间、基准、K 线来源(用户提供 or 指定数据源)。
- 照此采信的建议:
- A / B 级 → 才算稳健,可以采信,并提示「结论基于历史统计,不保证未来重现」。
- C 级 → 结论不稳定,需补数据或换窗口再验。
- D / F 级 → 明确提示用户不要采信,并指出被哪一项反驳打掉(安慰剂?随机共因?子集敏感?)。
- 如果不显著或事件无法定位:如实说「本次检验未能证明事件与价格存在稳定因果」,不得为了给结论而放宽标准。
历史参照(必填小节):若检索到同类历史,写明「类似情境 N 次,其中 X 次 <本技能的判断维度> 正确」;无历史则写「首次记录此类情境,本次判断已存入记忆供将来对照」。
合规边界
- 只输出统计计算结果:CAR、p 值、置信区间、评级、反驳判定。
- 不输出买入/卖出建议,不输出目标价,不输出收益承诺。
- 不因用户追问就补一句「所以建议买入」——那超出本技能范围,可提示用户转交易流程(本仓库不执行交易,请走你自己的风控流程)。
- 涉及任何预测类模型(Kronos / ML 打分)时,必须声明「模型输出,非承诺」。
- 引用新闻/事件时标注来源,不把传闻当事实;情绪分与叙事只作辅助证据,不作因果证明。
常见问题
- 没有基准就跑,等于白跑。 缺
benchmark时算出来的「异常收益」只是绝对涨跌,牛市里任何消息都显得「显著」。没基准就先跟用户要指数数据,或明确降级标注「未剔除市场收益,可信度下降」。 - 事件日选错,全盘失真。 事件日若落在非交易日,工具会取最近交易日;但如果是盘后发布的消息,真实反应在 T+1,应把
event_date设成消息次一交易日,否则 CAR_1d 会被摊薄。 - p 值小 ≠ 结论真,所以才要三重反驳。 样本小、事件日扎堆、口径反复试,都能造出漂亮的 p 值;安慰剂那一关专门抓这个。评级 D/F 时不要用「样本少」当借口让用户采信。
- 评级是相对稳健性,不是准确率。 A 级只说明「在这次数据上三关都过了」,不说明未来一定赚钱;每次换新数据都要重跑。
- 批量验证先拿 job_id。 超过几个事件的
causal-event_study_batch属于重任务,提交后用causal-job_status轮询;在此期间可以先输出单事件结果,不要空转等待。