mcpField
N
news-reaction-failure-analyzer

news-reaction-failure-analyzer

github.com/tradermonty其他3.4k2.6k 次安装2 天前更新
代码仓库

关于 news-reaction-failure-analyzer

用于检查拥挤市场是否未能对利好拥挤方的消息作出预期反应的研究技能。它结合整理后的事件证据和价格数据评估逆向交易条件,后续价格确认与交易决策仍需人工完成。

主要功能

  1. 01从拥挤检测报告或显式输入获取方向
  2. 02分析整理后的新闻事件及价格反应
  3. 03检验漂移显著性,而非简单响应比例
  4. 04处理事件窗口重叠
  5. 05生成包含证据与排除项的结论

适用场景

  1. 01在相关消息发布后检查拥挤市场
  2. 02评估 Shapiro 风格逆向流程的新闻环节
  3. 03复核逐事件反应及被排除的证据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill news-reaction-failure-analyzer

安装后在 Claude Code 中输入/news-reaction-failure-analyzer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

requirements.txt
references/
news-failure-patterns.md
price-source-map.md
scripts/
analyze_news_reaction.py
reaction_math.py
scripts/tests/
test_analyze_news_reaction.py
test_reaction_math.py

详细介绍

新闻反应失效分析器

概述

实现 Jason Shapiro COT 逆向交易流程的第 2 步:市场被标记为拥挤(cot-contrarian-detector,第 1 步)后,检查市场是否未能对本应让拥挤一方获利的新闻做出反应。拥挤做多的市场在真正的利好消息发布后没有上涨,或拥挤做空的市场在真正的利空消息发布后没有下跌,这是一个核心行为信号,表明拥挤一方已无力继续买入或卖出——这一步用于确认,将“拥挤”转化为逆向交易候选机会(第 3-5 步仍需手动完成:价格走势确认、入场、出场)。

为什么不能简单地检查失效比例:早期设计会在相关事件中“做出反应”的比例不足一半时标记为“新闻反应失效”——但在纯噪声下,约 69% 的单个事件会因偶然而未能做出反应,因此该规则在样本量不同的情况下,会有 48-83% 的概率根据随机噪声给出确认。此技能改为要求市场显著朝着不利于拥挤一方的方向偏离有利新闻(漂移显著性检验,并通过蒙特卡洛验证其原假设下的假阳性率上限),而不是仅仅判断“反应不够”。完整的统计依据请参阅 references/news-failure-patterns.md。

何时使用此技能

英语:

  • “Did the market shrug off [event] even though [asset] is crowded long/short?”
  • “Run a news-failure check on [symbol]”
  • “Is [symbol] confirmed for a Shapiro-style contrarian setup?”
  • 在 cot-contrarian-detector 将市场标记为 CROWDED_LONG / CROWDED_SHORT 后,用户想继续进行第 2 步

日语:

  • 「この市場は好材料に反応しなかった?」
  • 「COTで偏っているこの銘柄のニュース失敗を確認して」

以下情况请勿使用:

  • 市场并不拥挤(分类为 NEUTRAL)——此技能会默认拒绝继续;只有显式指定 --direction 才能覆盖
  • 尚无经过筛选的事件 JSON——必须先运行 WebSearch(见下方第 2 阶段);不得捏造事件或 URL 来得出结论

先决条件

  • **FMP API Key:**必需。设置 FMP_API_KEY 或传入 --api-key。仅用于价格数据(stable/historical-price-eod/light)——不同标的的覆盖范围各异;参阅 references/price-source-map.md。
  • Python 3.9+,并已安装 requests。
  • WebSearch 访问权限,用于筛选事件并整理为 JSON(第 2 阶段)。无法使用时,此技能会妥善说明限制,绝不会捏造事件。
  • **可选:**提供 cot-contrarian-detector JSON 报告(--detector-json)以自动确定标的和方向,或显式指定 --direction。

工作流

第 1 阶段:获取标的和方向

从 cot-contrarian-detector 报告中获取(--detector-json,在 markets[] 中查找标的),或直接由用户提供(--symbol + --direction)。若分类为 NEUTRAL、报告中缺少该标的,或报告早于 --max-detector-age-days(默认值为 10),都会因特定原因默认拒绝继续——只有显式指定 --direction 才能覆盖。

第 2 阶段:通过 WebSearch 整理事件 JSON

使用 4 级来源层级(发行方/一手来源 → SEC/官方统计 → 通讯社 → 门户网站;参阅 references/news-failure-patterns.md),搜索评估窗口(--window-days,默认值为 10)内的新闻。根据 references/news-failure-patterns.md 中的模板,将发现整理成事件 JSON——每个事件包含 event、event_time(带明确 UTC 偏移的 ISO8601)、source_url、source_tier、expected_impact(BULLISH/BEARISH)。

**绝不要捏造事件或 URL。**如果无法使用 WebSearch,请明确说明;只有用户接受 INSUFFICIENT_EVIDENCE 结果(原因 no_events_provided)时,才可在不提供事件 JSON 的情况下继续——若缺少事件文件,CLI 不会抛出异常,而是始终以 0 退出,并提供有说明的原因。

阶段 3:运行 CLI
python3 skills/news-reaction-failure-analyzer/scripts/analyze_news_reaction.py \
  --symbol B6 --detector-json reports/cot_crowding_2026-07-12.json \
  --events-json reports/nrf_events_B6_2026-07-12.json \
  --output-dir reports/

该脚本会获取价格序列(文档中说明了回退链:优先使用期货 代码;如果遇到 402/访问受限或 rows == 0,则使用 ETF 代理;参见 references/price-source-map.md),按事件计算生效日期 / 收益率 / z 分数,聚类 3 个交易日窗口重叠的事件(独立性保护),并综合得出结论。

阶段 4:呈现结论并交接

呈现结论、汇总统计数据(drift_stat、responded_ratio)和 证据表(逐事件收益率 / z 分数 / 反应标签,并显示任何 dropped_events 的原因——不得悄然隐藏)。如果使用了代理 (run_context.proxy_used),请说明跟踪误差方面的注意事项。

为 contrarian-setup-gate(#241,尚未构建)生成交接块:

{"news_failure": {"verdict": "CONFIRMED", "confidence": "HIGH", "report_path": "reports/nrf_B6_2026-07-12.json"}}

输出

  • JSON: reports/nrf_<symbol>_<as-of-date>.json — schema_version、 symbol、direction、expected_direction、actual_reaction (FAILED_TO_RALLY/FAILED_TO_SELL_OFF/RALLIED/SOLD_OFF/ MIXED_REACTION/NO_DATA)、verdict、confidence、 relevant_events_used、aggregate(mean_z3/drift_stat/responded_ratio)、 evidence[]、dropped_events[]、run_context。
  • Markdown: reports/nrf_<symbol>_<as-of-date>.md — 人类可读的 结论、汇总统计数据、证据表、已剔除事件表、代理注意事项(如使用), 以及方法论脚注。

防护措施

  • CONFIRMED 并非交易信号。 它确认的是第 2 步(共 5 步)——价格 行为确认(第 3 步)、入场(第 4 步)和退出(第 5 步)仍需手动完成, 且必须在建立任何仓位前完成。
  • INSUFFICIENT_EVIDENCE 绝不会推进工作流。 可用的相关事件 簇 少于 --min-events(默认值为 3)、缺少检测器报告,或检测器版本 (data_date)缺失、无法解析、晚于 --as-of 或早于 --max-detector-age-days 所允许的日期(数据过期),分类为 NEUTRAL 且没有明确覆盖设置,或没有可用的价格来源,都会产生此结论 ——绝不会崩溃,也绝不会在数据不足时强行给出判断。
  • COT 发布延迟。 读取时,COT 数据已有 3-9 天的滞后 (参见 cot-contrarian-detector);解读新闻未能引发预期反应的证据时, 应考虑这一背景,不应将其视为当日确认。
  • 反方向事件仅作背景参考——会显示在证据表中,但不纳入结论 (只有 expected_impact 与市场群体的 expected_direction 相符的事件 才会计入)。
  • 基于代理的价格会明确标注,不会隐藏。 使用 ETF 代理时 (run_context.proxy_used),报告会明确说明——跟踪误差、费用拖累和 展期时机差异意味着对反应方向的判断是近似的,而非精确的。
  • 极端相关性下仍存在统计残余风险。 在独立同分布噪声下,结论的 零假设误报 CONFIRMED 率经过严格验证(<8%);在现实的残余相关性压力 测试下(AR(1) ρ=0.1,<10%)亦然。在刻意设置的极端相关性压力测试下 (非聚类事件窗口间的滞后 1 期 ρ=0.3——约为流动性期货实测自相关的 10 倍),测得的零假设误报率升至约 11-13%。这是已记录的 v1 局限, 并非未披露的缺口——完整数据见 references/news-failure-patterns.md。如果用户希望在该压力条件下也 保持更严格的 <10% 阈值,可以传入 --drift-z 1.75(代价是会漏掉一些 真实的新闻未能引发预期反应的信号,而不只是噪声)。
  • 不构成投资建议。 仅供研究和教育用途。

资源

references/news-failure-patterns.md

完整方法论:相关事件的判定标准、4 层来源层级、示例、事件 JSON 整理指南 及模板,以及结论阈值的依据(为何采用漂移显著性,而非简单比例;经蒙特卡洛 验证的零假设界限)。

references/price-source-map.md

按市场列出的价格来源回退链、verified/402/0-rows 状态(在实现时通过实时探测验证)、ETF 代理的注意事项,以及没有可行来源的市场(记录在案的 no_price_source 情况:VX、ZQ、HO,以及使用此密钥时的所有农产品市场)。

何时加载参考资料
  • **首次使用/解释方法:**加载 references/news-failure-patterns.md
  • **解释某个市场为何没有判定结果(no_price_source):**加载 references/price-source-map.md
  • **常规执行:**CLI 本身不需要参考资料——第 2 阶段(事件筛选)以及向用户解释结果时需要

评论

支持 Markdown