agentsclimarketplace

Chain radar

Skill ivanyinjc-blip/industry-chain-research/chain-radar

产业链深度研究 8 段对齐 skill · 三角定位法 · A 股强周期实战验证

Install
npx -y skills add ivanyinjc-blip/industry-chain-research --skill chain-radar

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

产业链研究第 0 段 · 行业雷达扫描。激活时机:用户问"研究哪个行业最有价值"、"选赛道"、"板块轮动"。从本地 Tushare DuckDB(1,561 只被动指数型 ETF)出发,用「景气 × 趋势 × 拥挤度」三轴评分筛出值得深入研究的行业 Top 列表。借鉴 invest 多因子 + 三角定位法,与 chain-idea 衔接形成"先选行业 → 再立项"的工作流。

SKILL.md

9.1 KB, ~3.8k tokens by cl100k_base, as published. Nobody here has run it


📋 SKILL 契约(6 字段 · agent 调用入口)

完整的 行业雷达(可选入口) 段契约。Claude/Codex 调用本段时,只需读这一节。

🎯 触发条件

  • 用户问"研究哪个行业/板块最有价值"
  • 用户问"还有什么行业值得看" / "赛道轮动"
  • 周一定时扫描
  • ❌ 不触发:用户已明确具体行业(直接进 chain-idea)

📥 输入文件

  • 无必填(从 Tushare DuckDB 自动扫所有 L 状态被动指数型 ETF)
  • 可选:TUSHARE_DB_PATH 环境变量

📤 输出文件

  • radar.md(行业扫描报告)
  • radar_scores.json(14 行业 × 3 轴评分)

🔑 必填字段

  • 每个行业:{景气分, 趋势分, 拥挤度分, 综合分, 排名}
  • 三轴定义见 chain-radar/SKILL.md

✅ 验收清单

  • 扫描 1,561 只 ETF,覆盖 ≥ 10 个行业
  • 三轴评分有明确区间(0-100)和权重
  • Top 4-6 行业有"为什么入选"说明
  • 输出 markdown 表格,人类可读

⚠️ 失败处理

  • DB 不存在:TUSHARE_DB_PATH 未设置 → 清晰提示
  • 数据陈旧:近 5 个交易日数据缺失 → 跳过该 ETF
  • 三轴全 0:标记为"待观察",不出现在 Top 列表

chain-radar · 行业雷达段(2026-07-06 v4 P1 新增)

灵感:invest 多因子评分 + 三角定位法 产物:radar.md(行业扫描报告) 输入:无(从 Tushare DuckDB 直接扫描所有 L 状态被动指数型 ETF) 输出:行业雷达评分 + Top 行业建议

🎯 这个 skill 干什么

回答用户原话:

"该选择什么行业或者板块研究,有什么标准?"

传统产业链研究的盲点:立项时就已经锁定行业(用户问啥就研究啥),不做横向对比。

chain-radar 解法:在 chain-idea 之前插入一个全行业扫描层,用「景气 × 趋势 × 拥挤度」三轴交叉,从 14 个重点行业里筛出 Top 4-6 个最值得立项的行业。

激活时机:

  • ✅ 用户问"研究哪个行业最有价值"、"选赛道"、"板块轮动"
  • ✅ 用户问"还有什么行业值得看"(横向扫一遍)
  • ✅ 周一定时扫描(自动跟踪主线变化)
  • ❌ 用户已明确具体行业(直接进 chain-idea,不跑雷达)

🧠 核心方法论:「景气 × 趋势 × 拥挤度」三角筛选

三轴定义

指标评分区间含义
景气12M 涨幅[-25%, +25%] → [0, 10]行业过去一年的整体表现
趋势6M 涨幅(绝对值)[-25%, +25%] → [0, 10]行业近期半年趋势
拥挤反向1M 涨幅反向≤-10% → 10, ≥+20% → 0短期是否已被充分交易

权重与综合

雷达分 R = 0.4 × 景气 + 0.3 × 趋势 + 0.3 × 拥挤反向

评级映射

评级阈值含义
★★★★★ 强烈推荐R ≥ 7.5 且 12M > 5%强景气 + 趋势正 + 短期有空间
★★★★ 推荐R ≥ 6.5可立项研究
★★★ 中性R ≥ 5.0不主动立项,特定催化时跟进
★★ 规避R < 5.0 或 12M < -10%暂不研究

为什么用 ETF 而不是直接用行业指数?

维度行业指数行业 ETF
数据获取部分指数需要付费(中证 / 国证)ETF 价格免费可得
实时性日线收盘后 T+1同上
代表性100% 准确跟踪跟踪误差 0.1-0.5%,可接受
样本量通常 1 个指数多只 ETF,可用中位数抗噪
可获取性Tushare 部分覆盖Tushare DuckDB 完整覆盖 1,561 只

→ 用 ETF 中位数作为行业代理,可获取性 + 抗噪性最优。

📐 工作流(可执行版)

1. fetch_radar_data.py
   扫 fund_basic L 状态被动指数型 → 1,561 只
   拉每只最近 250 个交易日收盘价 → 算 1M/3M/6M/12M 涨幅
   按 name + benchmark 关键词 → 行业分类
   输出 radar_raw.json

2. calc_radar_score.py
   按行业聚合,取中位数(抗噪)
   三轴评分 → 雷达分 → 评级
   输出 radar_scores.json

3. gen_radar_report.py
   出 Markdown 报告
   输出 radar.md

🛠 工作流详解

Step 1: 数据采集(全量扫描)

python3 scripts/fetch_radar_data.py /tmp/radar_raw.json
# 跑完后会打印 [DuckDB-AUDIT] 本次发起 6245 个 SELECT,无可写操作

Step 2: 评分

python3 scripts/calc_radar_score.py /tmp/radar_raw.json /tmp/radar_scores.json
# 输出:14 个行业雷达分排序 + 4 类分组

Step 3: 报告

python3 scripts/gen_radar_report.py /tmp/radar_scores.json /tmp/radar.md
# 输出:radar.md(完整行业雷达扫描报告)

📊 雷达重点行业(14 个)

RADAR_FOCUS_SECTORS = {
    "AI", "半导体/科技", "机器人/智造", "新能源车", "光伏",
    "储能/碳中和", "医药生物", "军工", "消费", "金融",
    "地产基建", "周期资源", "TMT/传媒", "农业",
}

剔除范围:

  • 宽基 ETF(沪深 300 / 中证 500 / 红利 / 央企)
  • 债券 ETF
  • 商品期货 ETF
  • 海外 / 港股 ETF
  • 其它主题 ETF(分散主题,无明确行业归属)

📁 scripts/ 目录

chain-radar/
├── scripts/
│   ├── fetch_radar_data.py  # 数据采集(DuckDB 只读,1,561 只 ETF 全扫描)
│   ├── calc_radar_score.py  # 三轴评分 + 4 类分组
│   └── gen_radar_report.py  # Markdown 报告
└── examples/
    └── radar-2026-07-06/
        ├── radar_raw.json
        ├── radar_scores.json
        └── radar.md

🚦 何时启用

场景是否启用后续动作
"研究哪个行业最有价值"✅ 必跑选 Top 1-2 行业 → chain-idea
"还有什么行业值得看"✅ 必跑给用户行业清单,等待选择
"AI 产业链怎么看"❌ 跳过直接进 chain-idea
"机器人 12M 涨幅多少"❌ 跳过用 settlement 阶段处理
周日 22:00 自动跑✅ 定时飞书推送雷达变化 Top 3

🔗 与上下游的契约

上游

  • :本段是研究流程的第 0 段,直接面对用户提问

下游

  • chain-idea:雷达筛出的 Top 行业 → 进入 chain-idea 立项(口径拆分 + 周期/政策前置)
  • chain-data:行业研究的环境描述(已在雷达层完成)
  • chain-stockmap + chain-settlement:最终选股落地

与 chain-cycle 的关系

  • 雷达的"景气轴"本质是价格层面的周期位置
  • 但不含产能/库存/价格的完整周期判断
  • 强周期行业(光伏 / 储能 / 周期资源)在 chain-idea 后仍必跑 chain-cycle

⚠️ 红线

  • ❌ 不要跳过雷达直接给"研究 AI"(虽然雷达结果也是这样,但需先跑出来证明)
  • ❌ 不要把"宽基"和"行业 ETF"混合计算基准 — 用行业 ETF 子集算隐含基准
  • ❌ 不要把 1M 涨幅直接当"热度"评分 — 短期过热应该扣分,反向
  • ❌ 不要把 6M/12M 比率当趋势分 — 当 12M 为负时比率反向,语义错误
  • ❌ 不要省略雷达审计日志 — [DuckDB-AUDIT] 必须每次打印

🆕 算法演进历史

v1(已废弃)

  • 趋势分用 6M/12M 比率 → 12M 为负时反向上分,语义错误
  • 例:医药 -2% / -5.85% → 比率 2.84 → 趋势分 8.5 → 反排第一

v2(2026-07-06 当前)

  • 趋势分改为 6M 涨幅绝对值
  • 拥挤反向用 1M 涨幅的分段反向评分(更精细)
  • 强烈推荐加 "12M > 5%" 双重约束(避免超跌行业被误判)

🔒 数据访问约束(沿用 chain-settlement 加固)

fetch_radar_data.py 中的 _ReadOnlyDuckDB 类:

  • 强制 duckdb.connect(DB_PATH, read_only=True)
  • 审计 每次 exit 打印 [DuckDB-AUDIT] 本次发起 N 个 SELECT,无可写操作
  • fallback DB 失败立即终止,不写回(雷达场景不像 settlement 有东财可回退)

🧪 验证(2026-07-06 首次扫描结果)

输入:1,561 只被动指数型 ETF(L 状态) 输出:14 个行业雷达评分

Top 4 强烈推荐:

  1. 光伏(8.71) - 12M +48% 但 1M -10%(超跌机会)
  2. AI(8.30) - 12M +44% + 6M +31%(加速)
  3. 储能/碳中和(8.18) - 12M +35% 但 1M -4%(回调充分)
  4. 机器人/智造(7.96) - 12M +45% + 6M +30%(加速,但 1M +9.5% 已开始拥挤)

推荐:

  • 新能源车(7.31)· 周期资源(6.65)

中性 / 规避:军工 / 半导体 / 金融 / 地产 / 医药 / 农业 / TMT / 消费

对齐人工直觉:✅ 与 2026 上半年 A 股主线高度吻合(AI + 机器人 + 储能为强主线)


📚 借鉴 + 独创

来源借鉴内容类型
harrischen/invest多因子评分借鉴
本 skill 三角定位法三轴交叉 + 评级映射独创
Tushare DuckDBETF 雷达数据源集成
关键词规则分类14 个重点行业分类本段独创

What ships with it: 6 files

651.7 KB alongside SKILL.md, 3 of them executable

scripts/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.