题材热度判断(theme-heat-judgment)
0. 定位与边界红线
本 Skill 解决什么:当用户看到一个板块/题材在涨,想知道「这是真主线还是骗炮」时,快速给出 7 维加权评分 + 定性评级 + 催化剂归因。
与 mainline-analysis 的关系:它是粗筛温度计——判断一个题材值不值得进一步投入深度精力。如果评分 ≥ 60 分(次级热点以上),下一步再调用 mainline-analysis 做全生命周期分析(信号检测→选股→建仓→退场)。两者不重叠。
边界红线(硬约束,不得违反):
- ✅ 纯题材热度判断工具。
- ❌ 不做个股分析(交给 cross-agent / mainline-analysis)。
- ❌ 不做个股筛选(那是 stock-quick-filter 的活)。
- ❌ 不做仓位建议(那是 position-manager 的活)。
- ❌ 不做 mainline-analysis 的全流程(选股、建仓、退场不属于本 Skill)。
- ❌ 所有数据类结论必须双源交叉验证,单源不得下结论。
- ⚠️ 消息催化归因不分级不评分,仅用于可解释性。
1. Router 调度规则
| 用户意图(关键词) | 路由到 |
|---|---|
| "题材热度 / 这个题材怎么样 / 是真主线吗 / 一日游 / 题材评分" | 完整跑 模块一→四 |
| "这个题材为什么涨 / 有什么催化" | 模块三(催化剂归因)→ 模块四(输出) |
| "对比这几个题材谁更强" | 模块一→二 对每个题材分别跑,模块二综合排序 |
| "扫描所有热点题材" | 先用 tencent-news 获取当日热点 → 对每个热点题材跑 模块一→二 |
2. 模块一 · 数据采集(7 子维度)
对每个待评题材,逐维采集以下数据。维度之间无共享状态,可并行采集。
2.1 涨停家数(权重 20%)
# 主源(tdx,实时):
tdx_screener(message="<题材名> 涨停", rang="AG", pageSize="200")
# 统计返回条数 = 当日该题材涨停家数
# 交叉验证(i问财):
hithink-sector-selector/scripts/cli.py --query "<题材名> 今日涨停<br>"
归一化:raw / 30(阈值 30 家,超过按 30 计),capped at 1.0。
2.2 连板高度(权重 20%)
# 主源(tdx):
# 先取题材内涨停股清单(同 2.1),对每只涨停股查连板属性:
# tdx_screener(message="<题材名>", rang="AG", pageSize="200")
# → 遍历每只涨停股,用 tdx_quotes 或 tdx_kline 判断连板天数
# 取该题材内最高连板天数
# 若 tdx 无法准确判断连板,降级方案:
# tdx_screener(message="<题材名> 2连板", rang="AG")
# tdx_screener(message="<题材名> 3连板", rang="AG")
# 交叉验证:
# WebSearch "<题材名> 龙头 连板" 取市场公认高度
归一化:最高连板 / 7(阈值 7 板),capped at 1.0。
2.3 资金净流入(权重 20%)
# 主源(westock):
# westock data_fund_flow --sector "<题材名>" --period today
# → 取主力净流入占比或金额
# 交叉验证(hithink):
# hithink-market-query --query "<题材名> 主力资金流向"
归一化:
- 主力净流入 > 0 → 1.0(满分)
- 主力净流入 = 0 附近 → 0.5
- 主力净流出 > 0 → 0.0
若连续 2 天净流入,额外 +0.2(但不超过上限 1.0)。
2.4 龙头梯队(权重 15%)
# 主源(tdx):
tdx_screener(message="<题材名> 涨停", rang="AG", pageSize="200")
# → 统计涨停股的板数分布:
# 首板(1板)> 2板 > 3板以上
# 结构齐全(首板+2板+3板以上都有)= 满分
# 缺 3 板以上 = 0.7
# 缺 2 板和 3 板 = 0.3
# 只有首板 = 0.1
归一化见上。只数涨停股中不同板层次数,不单独查每只的完整连板历史(节省工具调用)。
2.5 板块联动(权重 10%)
# 主源(tdx):
# 先取该题材的上下游/关联板块(tdx 板块族谱)
# → 对每个关联板块查 tdx_screener 看是否同步异动
# 联动比例 = 同步异动的关联板块数 / 全部关联板块数
# 交叉验证:
# hithink-industry-query --query "<上下游板块> 今日涨跌幅"
归一化:联动比例直接作为归一化值(0~1)。
2.6 持续性(权重 10%)
# 主源(tdx):
# 查近 3~5 天该题材的涨停家数:
# tdx_kline --code <板块代码> --count 5
# → 判断连续几天涨停家数 ≥ 3(活跃标准)
# 降级:WebSearch "<题材名> 近期表现 连续"
归一化:
- 连续 5 天以上活跃 → 1.0
- 连续 3~4 天 → 0.7
- 连续 2 天 → 0.5
- 仅当天爆发 → 0.2
- 首次出现 → 0.1
2.7 消息催化(权重 5%)
WebSearch "<题材名> 政策 事件 催化 2026年7月"
WebSearch "<题材名> 利好"
归一化:
- 有明确政策/事件催化 → 1.0
- 有传闻/推测性消息 → 0.5
- 无催化可识别 → 0.0
注意:消息催化归因在输出时展开(解释"为什么涨"),但不影响评分分层。
3. 模块二 · 评分引擎
把模块一的 7 维 raw 数据喂给 scorer.py:
python3 scripts/scorer.py --input result.json --out scoring_result.json
result.json 结构:
{
"theme": "人工智能",
"date": "2026-07-12",
"dimensions": {
"limit_up_count": {"raw": 19, "note": "涨停19家"},
"consecutive_limit_up": {"raw": 5, "note": "最高5连板"},
"fund_net_inflow": {"raw": 0.85, "note": "主力净流入"},
"leader_tiers": {"raw": 4, "note": "首板+2板+3板以上都有"},
"sector_linkage": {"raw": 0.6, "note": "联动比例60%"},
"continuity": {"raw": 4, "note": "连续4天活跃"},
"catalyst": {"raw": 1, "note": "有政策催化"}
}
}
加权求和 → 总分 0~100 → 定性映射(详情见 scorer.py)。
多条题材对比:对每个题材分别跑模块一→二,然后用 scorer.py --compare 输出对比排名。
4. 模块三 · 催化剂归因
WebSearch 搜索当日该题材的政策、事件、研报催化:
- 政策催化:国务院/部委文件、产业政策、地方规划
- 事件催化:行业大会、产品发布、海外映射
- 研报催化:头部券商首次覆盖/上调评级
输出格式(供模块四使用):
{
"catalyst": [
{"type": "政策", "content": "工信部发布XX行动计划", "source": "WebSearch", "url": ""},
{"type": "事件", "content": "英伟达GTC大会发布新品", "source": "WebSearch", "url": ""}
]
}
纪律:催化归因不分级不评分(权重仅 5% 已覆盖),仅用于可解释性。不编造催化源。
5. 模块四 · 输出
5.1 落盘
python3 scripts/report.py --input scoring_result.json --catalyst catalyst.json --out report/
生成:
- theme_scores.csv(各题材评分排名)
- theme_detail.md(每个题材详细拆解 + 催化剂归因,含风险提示)
- leading_stocks.csv(各题材龙头股列表)
5.2 展示格式(直接回答)
短格式(快速回答):
> 人工智能题材热度评分:72/100(次级热点)
>
> | 维度 | 得分 | 说明 |
> |------|------|------|
> | 涨停家数 | ████████ 20/20 | 19家涨停 |
> | 连板高度 | ███████ 14/20 | 最高5连板 |
> | 资金流入 | ████████ 18/20 | 主力净流入 |
> | 龙头梯队 | ██████████ 15/15 | 梯队齐全 |
> | 板块联动 | ██████ 6/10 | 联动60% |
> | 持续性 | ████████ 8/10 | 连续4天活跃 |
> | 消息催化 | █████ 5/5 | 工信部政策催化 |
>
> 催化剂:工信部发布XX行动计划…
>
> 结论:次级热点,轻仓试错快进快出。如需深度分析请调用 mainline-analysis。
详细格式(加 --detail 参数走 report.py 落盘文件)。
6. 双源交叉验证规则
| 维度 | 主源 | 交叉验证源 |
|---|---|---|
| 涨停家数 | tdx_screener | i问财 hithink-sector-selector |
| 连板高度 | tdx_screener | WebSearch |
| 资金净流入 | westock data_fund_flow | hithink-market-query |
| 龙头梯队 | tdx_screener | —(单源计算,标注"单源") |
| 板块联动 | tdx 板块族谱 + tdx_screener | hithink-industry-query |
| 持续性 | tdx_kline | WebSearch |
| 消息催化 | WebSearch | 无(搜索本身即是源) |
单源维度输出时在表格末尾标注「仅单源,未交叉」。
7. 已知限制
- 连板高度计算依赖 tdx_screener 返回的准确连板数据,若返回不准确需降级到 WebSearch 人工确认。
- 资金净流入 westock 可能需要板块代码,与题材名之间需做映射(参考
sector_etf_map.json的板块名映射方式)。 - 持续性数据需要板块代码对应的历史 K 线,若无板块代码可精确跟踪,退化为 3 等级粗估(持续多日/仅当日/首次)。
- 多条题材对比时,工具调用量随题材数线性增长,建议每次不超过 3 个题材。
8. 风险提示
⚠️ 风险提示:本结果由 AI 工具自动生成,【仅供参考,不构成任何投资建议】。板块强度与个股表现存在滞后与误判可能;涨停家数/资金流向等实时数据可能存在采集延迟。股市有风险,投资需谨慎。据此操作,盈亏自负。