返回 Skill 列表
extension
分类: 数据与分析无需 API Key

全A市场上市公司市值和利润增长背离小技能

A股×港股通「利润-市值背离」全市场量化筛选器。通过权威数据源(腾讯自选股/Wind/同花顺)查询上市公司上市以来的市值增长与归母净利润增长,筛出市值增长低于利润增长0.8倍(估值相对利润被压缩20%以上)的公司,输出含名称、行业、行业地位、ROE的HTML汇总报告。触发关键词:市值利润背离、市值跑输利润、估值压缩筛选、低估筛选、growth-value divergence screening。计算全部由脚本执行,禁止LLM心算。

person作者: user_5a6f5f44hubcommunity

利润-市值背离筛选器 v1.0.0

一、功能概述

A股全部上市公司 + 港股通标的 做全市场量化筛选,找出「利润持续增长、但市值增长显著跑输利润增长」的公司:

  • 主口径市值增长倍数 ÷ 利润增长倍数 < 0.8 即入选(估值相对利润压缩 ≥ 20%)
  • 年化口径:市值 CAGR 与利润 CAGR 对比,作为展示列(不参与入选判断)
  • 数据零幻觉:所有定量数据来自数据源查询结果;计算全部由 scripts/screen_divergence.py 执行,禁止心算
  • 输出:HTML 汇总报告(单列可打印,风格对齐 company-one-pager:白底、深蓝标题、金色强调)

二、输入说明

| 输入项 | 必填 | 说明 | |--------|------|------| | 背离阈值 | 否 | 默认 0.8;可指定(如"低于利润增长的一半"→ 0.5) | | 上市年数门槛 | 否 | 默认 ≥ 5 年 | | 股票池 | 否 | 默认 A股全量 + 港股通;可限定(如"只看消费行业") | | 数据来源 | 三选一 | ① MCP connector(腾讯自选股 westock / Wind / 同花顺,见第五节)② 用户提供数据 ③ 公开渠道检索 | | 结果上限 | 否 | 默认全量输出;可指定 Top N |

触发示例:「帮我筛出上市以来市值增长低于利润增长0.8倍的公司」「A股+港股通里哪些公司利润涨了市值没涨」「跑一次估值压缩筛选」

三、口径定义(核心,不得偏离)

3.1 主口径公式

利润增长倍数 = (最新年度归母净利润 − 上市后首个完整年度归母净利润) ÷ 首个完整年度归母净利润
市值增长倍数 = (当前总市值 − 上市首日收盘总市值) ÷ 上市首日收盘总市值
背离比值     = 市值增长倍数 ÷ 利润增长倍数 < 0.8  ⇒  入选

例:利润增长 300%(倍数 3.0),市值增长 180%(倍数 1.8),比值 1.8÷3.0 = 0.6 < 0.8 → 入选。

3.2 基期定义

| 项目 | 基期 | 末期 | |------|------|------| | 利润 | 上市后首个完整年度年报归母净利润(如 2001-08 上市 → 2002 年报) | 最新已披露年度归母净利润 | | 市值 | 上市首日收盘总市值(不是发行市值!) | 最新交易日总市值 |

  • 全体公司统一使用年度口径;若改用季报/TTM,须全池统一并标注
  • 港股市值与利润同为本币(HKD),倍数为无量纲比值,不受汇率影响
  • A+H 两地上市:单一市场口径计算并标注;需合并口径时用数据源提供的总市值

3.3 门槛规则(剔除噪声,防倍数失真)

  1. 上市 ≥ 5 年(可配置)
  2. 基期利润 > 0 且最新利润 > 0(负数/由亏转盈倍数失真,剔除)
  3. 利润为正增长(利润下滑公司不属于本筛选目标)
  4. 上市首日市值取不到的,剔除并统计——禁止用发行市值替代

3.4 已知口径边界(报告中必须提示)

  • 市值增长已含增发/配股的股本扩张 → 入选者是「即便可能融资扩张、市值仍跑输利润」的更强信号子集
  • 估值压缩可能是合理风险定价(行业衰退/治理缺陷/周期见顶),入选 ≠ 低估,结论须附此边界

四、执行流程

Step 1 检查数据源连接状态(westock / wind / 同花顺 connector)
        ├─ 已连接 → 继续;未连接 → 提示用户连接或改用已连接源;全断 → 停止说明,禁止编数据
Step 2 构建股票池:A股全量 + 港股通名单 → output/universe.json
Step 3 分批取数(每批 50 家,写 output/batch_XX.json 断点,失败批可重跑):
        ① list_date + mcap_now(快照,快)
        ② profit_first_year + profit_latest_year(财报,慢)
        ③ mcap_at_ipo(上市首日历史行情)
Step 4 跑计算引擎(见 5.2)→ 得到入选清单
Step 5 仅对入选公司补充:industry / industry_rank / roe_latest / roe_avg5(省 90% 调用量)
Step 6 关键数字双源交叉验证(首年利润、最新利润、首日市值、当前市值)
Step 7 套用模板生成 HTML 报告 → output/利润市值背离筛选报告_YYYYMMDD.html

行业地位判定纪律:优先「行业内总市值排名」(如「白酒行业市值第 2/20」);数据源提供营收排名或市占率时一并列出;均不可得标「数据暂缺」——禁止无排名支撑的定性词(如「行业龙头」)。

五、数据源与计算

5.1 数据源优先级

腾讯自选股(westock-mcp / westock-data)→ Wind(wind-finance)→ 同花顺(kuaicha-search)→ 通达信 / 东方财富妙想 → 公司 IR/交易所披露(仲裁源)。建议 ≥ 2 源交叉验证;单源时报告标注「⚠️ 单源数据」。

字段映射、接入方式、常见坑(港股货币、A+H、老股首日市值缺失、非自然年财年)详见 references/data-source-guide.md——取数前必读

5.2 计算纪律(脚本强制)

  1. 把取数结果整理为 JSON 数组(字段见下表),保存为 output/companies.json
  2. 执行:python scripts/screen_divergence.py output/companies.json --ratio 0.8 --min-years 5
  3. 脚本输出 screen_result.json(含 selected / all_results / 剔除统计),报告数字以脚本输出为准
  4. 纯标准库,Python 3.8+ 可运行;同一输入同一输出

输入字段表

| 字段 | 必填 | 类型 | 说明 | |------|------|------|------| | code / name / market | ✓ | str | 代码 / 名称 / A或HK | | list_date | ✓ | str | 上市日期 YYYY-MM-DD | | mcap_at_ipo / mcap_now | ✓ | number | 上市首日收盘市值 / 最新市值(亿,本币) | | profit_first_year / profit_latest_year | ✓ | number | 首个完整年度 / 最新年度归母净利润(亿,本币) | | profit_latest_year_label | ✓ | str | 如 "2025年报" | | industry / industry_rank | 仅入选 | str | 行业 / 行业地位 | | roe_latest / roe_avg5 | 仅入选 | number | 最新 ROE % / 近5年均值 % | | currency / data_source | 建议 | str | 本币 / 来源标注 |

5.3 配置文件

config/config.example.json 复制为 config/config.json:数据源 connector id、阈值、门槛、批大小、输出目录。connector 密钥只能经 WorkBuddy 连接器授权注入,禁止明文写入任何文件。

六、输出说明

  • 文件output/利润市值背离筛选报告_YYYYMMDD.html(模板见 templates/report-template.html,替换占位符时保留 CSS 与布局)
  • 必含要素(顺序固定):页眉(基准日/股票池/入选数/阈值/数据源)→ 指标卡(总数/通过门槛/入选/最深背离/两组中位数)→ 方法论(公式+口径+门槛+边界提示)→ 入选公司汇总表(按背离深度升序:名称、代码、市场、行业、行业地位、背离比值、利润增长倍数与年化、市值增长倍数与年化、ROE 最新与5年均值、上市年数)→ 剔除统计 → 免责页脚
  • 数值格式:倍数 0.75x、年化 23.5%、ROE 15.3;正增长用红色(中国市场惯例:涨红跌绿);数据缺失写「数据暂缺」,禁止编造
  • 报告用词纪律:定量优先,禁止「严重低估」「黄金坑」类无数据支撑的判断词

七、目录结构

profit-cap-divergence-screener/
├── SKILL.md                          # 本文件
├── scripts/
│   ├── screen_divergence.py          # 计算引擎(倍数/比值/CAGR/门槛/排序)
│   └── test_companies.json            # 测试样例(7家,覆盖各剔除路径)
├── references/
│   └── data-source-guide.md           # 数据源优先级/字段映射/常见坑(取数前必读)
├── templates/
│   └── report-template.html          # HTML 汇总报告模板(含占位符)
└── config/
    └── config.example.json           # 配置模板

八、检查点

  • CP1 取数后:股票池是否覆盖 A股全量+港股通?市值是否同一交易日?首年利润是否"完整年度"?不合格重取该批
  • CP2 计算后:抽样 3 家手验倍数比与脚本输出一致?剔除原因分布合理(次新/亏损转盈占比应可观)?
  • CP3 交付前:入选表按背离深度排序?行业地位有排名支撑?单源数据已标注?口径边界提示在报告内?港股货币已标注?

九、版本记录

  • v1.0.0(2026-08-27):首版。主口径(倍数比<0.8)+ 年化展示口径;门槛规则(≥5年/基期为正/正增长);分批取数与断点续跑;脚本化计算引擎(含 7 家测试样例覆盖全部剔除路径);HTML 汇总报告模板;数据源优先级与字段映射指南