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

赛道诊盘仪分析系统

赛道深度分析(P2P Engine,Physical bottleneck to

person作者: user_201a602chubcommunity

赛道深度分析(P2P Engine)— 物理瓶颈到A股定价的五步量化映射

Overview

P2P Engine 从物理约束出发,逆向发现A股投资标的。核心能力:

  1. 物理约束裂口分解:将赛道拆解为5-7条物理瓶颈路径(R1-Rn)
  2. 显性+非显性标的发现:不仅找"概念股龙头",更找上游材料/设备/工具等"卖铲人"
  3. 收入弹性量化:基于TAM×市占率×ASP测算每家标的的收入弹性
  4. 分部估值+透支评估:区分"涨过头"vs"基本面不支撑",6档标签
  5. 产业链价值层级:核心/次核心/可靠性保障/应用层四级分类

When to use

当用户表达以下意图时触发:

  • "用P2P跑一下XX赛道"
  • "对XX做P2P分析"
  • "跑一下XX的P2P"
  • "帮我用P2P引擎分析XX"
  • "XX赛道的物理瓶颈是什么"
  • "分析XX"(如"分析电子布")或"分析XX赛道"(如"分析电子布赛道")
  • "XX赛道"(如"电子布赛道")——仅输入赛道名+赛道二字也触发生成
  • 仅输入赛道/材料/行业名称本身(如"电子布""人形机器人""可控核聚变"),即视为对该赛道发起P2P深度分析并立即开始
  • 总结:用户只要给出"赛道/材料/行业名称"(无论是否带"分析"前缀、是否带"赛道"二字),均按"请对该赛道执行P2P深度分析"处理

What this skill is NOT for

  • 不适用于纯金融/消费/互联网赛道(没有物理瓶颈约束)
  • 不替代基本面分析/技术分析——P2P是物理约束视角的补充
  • 不提供买卖建议——输出的是"物理逻辑下的估值锚点"和"市场定价偏离度"

完整工作流(5步)

Step 1: 物理约束裂口分解(研究阶段)

目标:将赛道拆解为5-7条物理瓶颈路径(R1-Rn)

方法

  1. WebSearch 搜索赛道的核心技术路线和物理瓶颈
  2. WebFetch 深入阅读3-5篇产业分析文章
  3. 识别"没有这个就做不了"的物理约束节点
  4. 每条路径标注:物理约束描述 → 解决方案 → 产业链环节

输出格式

R1 [物理约束名称]:约束描述 → 解决方案 → 产业链环节
R2 ...

关键原则

  • 物理约束必须是硬约束(物理定律/材料极限/工程极限),不是商业约束
  • 每条路径必须能追溯到具体的A股标的
  • 区分"显性"(一眼可见的赛道龙头)和"非显性"(上游材料/设备等卖铲人)

⚠️ 可靠性追问规则(v1.1 新增,经验来自韬定律-回天新材遗漏)

  • "功能实现 ≠ 功能可靠":每条R路径在定义物理约束后,必须追问"实现该功能后,是否有额外的可靠性/耐久性/热管理/密封/应力释放材料需求?"
  • 典型遗漏模式:引擎容易停在"如何实现功能"层(如3D堆叠如何互连→键合/载板),而遗漏"如何保障功能持续运行"层(如互连后的热应力吸收→底部填充胶Underfill、散热→TIM、密封→密封胶)
  • 检查清单:对每条R路径,额外追问以下维度(如任一有新增标的,则扩展该路径):
    • 🔥 热管理:功能实现后是否产生额外热量?需要什么散热/导热材料?
    • 💪 力学可靠性:多层堆叠/高速运转是否产生额外应力?需要什么填充/加固材料?
    • 🛡️ 密封/防护:功能实现后是否需要防潮/防尘/电磁屏蔽?
    • 🔌 电气可靠性:信号传输是否需要额外屏蔽/绝缘材料?
  • 如果追问后发现新的物理瓶颈子路径,编号为 R{主编号}a/R{主编号}b(如 R1a-Underfill、R1b-TIM)

Step 2: 信源验证

对每个关键论断进行信源分级:

  • Tier1证实:权威机构/公司官方数据(如TrendForce、Schaeffler、ISCAS论文)
  • Tier1证实(公告):上市公司公告/年报披露
  • Tier2部分证实:券商研报/行业报告/专家访谈
  • Tier2无法证实:媒体报道/行业推测

Step 3: 标的识别与数据获取

标的识别规则

  1. 每条R路径至少1-2家显性+1家非显性标的
  2. 显性标的:赛道内的知名龙头/概念股
  3. 非显性标的:物理约束链上游的材料/设备/工具供应商,不在概念板块内
  4. 每家标的标注:category(显性/非显性-子类)、value_tier(核心/次核心/可靠性保障/应用层)

数据获取(使用 westock-data skill,或直接调用其脚本):

# 方式一:通过 Skill 工具调用 westock-data(推荐)
# 方式二:直接调用 westock-data 脚本批量获取行情
node "/Applications/WorkBuddy.app/Contents/Resources/app.asar.unpacked/resources/builtin-skills/westock-data/scripts/index.js" quote sh600519,sz000001

# 批量获取财务(用Python脚本提取)
# 见 scripts/data_fetch_template.py

每家标的必须包含的数据字段

{
    "name": "公司名称",
    "category": "显性-xxx""非显性-xxx",  # xxx是产业链子环节
    "value_tier": "核心" / "次核心" / "可靠性保障" / "应用层",
    "value_tier_desc": "为什么是这个层级(一句话)",
    "code": "股票代码(不带sh/sz前缀)",
    "market_code": "sh600519""sz000001",  # 带前缀,用于数据获取
    "price": 当前价格,
    "pe_ttm": 滚动PE,
    "shares": 总股本(亿股),
    "rev_2025": 最新TTM营收(亿元),
    "np_2025": 最新TTM归母净利润(亿元),
    "chg_1m": 近1月涨幅(%),
    "chg_3m": 近3月涨幅(%),
    "chg_1y": 近1年涨幅(%) 或 近60天涨幅(%) 作为替代,
    "pos_52w": 52周位置(%),
    "high_52w": 52周最高,
    "low_52w": 52周最低,
    "industry": "所属行业(用于查找行业PE)",
    "verify_tier": "Tier1证实" / "Tier1证实(公告)" / "Tier2部分证实" / "Tier2无法证实",
    "hr_rev_pct": 0.0-1.0,  # 当前赛道收入占总收入比例
    "gap": "G{编号}-{物理约束描述}",  # 物理约束映射
    "units_per_product": 每单位产品用量,  # 如 kg/台、个/堆、m²/kW
    "price_per_unit_rmb": 单位价格(元),  # 如 元/kg、元/个
    "mkt_share_domestic": 国内市占率(0-1),
    "tech_maturity": "实验室" / "样品" / "小批量" / "量产期" / "成熟期",
    "note": "补充说明(可选)",
    "atr_ratio": 1.0,  # ATR(10)/ATR(60)比值,默认1.0
}

Step 4: 弹性量化 + 估值计算(Python脚本)

核心公式(在Python脚本中实现):

4.1 收入弹性

# 增量收入 = 产量 × 每单位用量 × 市占率 × 单价
incr_rev_neutral = production * units_per_product * mkt_share * price_per_unit / 1e8  # 亿元

# 价格侵蚀因子(量产期降价30%)
pen_adj = 0.7 if tech_maturity == "量产期" else 1.0
incr_rev_neutral *= pen_adj

# 乐观/保守情景
incr_rev_opt = incr_rev_neutral * 2.0
incr_rev_cons = incr_rev_neutral * 0.5

# 基准营收增长(假设10%/年传统增长)
rev_base = rev_2025 * (1.10 ** years_to_target)

# 新业务占比
new_rev_pct = incr_rev_neutral / (rev_base + incr_rev_neutral) * 100

# 利润弹性
np_margin = np_2025 / rev_2025 if rev_2025 > 0 else 0.1
hr_np_margin = np_margin * 0.8
profit_elasticity = (incr_rev_neutral * hr_np_margin) / np_2025
profit_elasticity = min(profit_elasticity, 99.9)  # 封顶

4.2 分部估值

# 行业PE查表(根据industry字段)
industry_pe_map = {...}  # 见下方

# 分部估值
ind_pe = industry_pe_map.get(industry, 40)
traditional_np = np_2025 * (1 - hr_rev_pct)
existing_hr_np = np_2025 * hr_rev_pct

original_val = traditional_np * ind_pe          # 原有业务估值
existing_hr_val = existing_hr_np * 35          # 现有赛道业务估值

# 确定性折扣
certainty_map = {"Tier1证实": 0.8, "Tier1证实(公告)": 0.6, "Tier2部分证实": 0.4, "Tier2无法证实": 0.2}
certainty = certainty_map.get(verify_tier, 0.3)

# 新增业务估值
growth_pe = 35
additional_hr_np = additional_hr_rev * hr_np_margin
new_val = additional_hr_np * growth_pe * certainty

# 显性 vs 非显性估值差异
if "非显性" in category:
    # 非显性:重评逻辑(赛道提供增长催化剂→PE重评)
    growth_premium = 1.3 if new_rev_pct > 2 else 1.15
    re_rated_pe = ind_pe * growth_premium
    target_mcap = np_2025 * re_rated_pe + additional_hr_np * 25 * certainty
else:
    # 显性:标准分部估值
    target_mcap = original_val + existing_hr_val + new_val

mcap = price * shares
upside_pct = (target_mcap / mcap - 1) * 100

4.3 六档透支标签(v3)

if upside_pct >= 0:
    if chg_1y > 0:
        if chg_1y > upside_pct * 2.0:   overdraft = "透支严重"   # #FF4444
        elif chg_1y > upside_pct * 1.0:  overdraft = "部分透支"   # #FF8C00
        else:                            overdraft = "合理预期"   # #FFCC00
    else:
        if upside_pct > 30:              overdraft = "尚未反应"   # #00CC66
        else:                            overdraft = "合理预期"   # #FFCC00
else:
    if upside_pct < -50:                 overdraft = "深度高估"   # #CC0000
    else:                               overdraft = "估值偏高"   # #FF8C00

4.4 吸引力公式

verify_score = {"Tier1证实": 3, "Tier1证实(公告)": 2.5, "Tier2部分证实": 2, "Tier2无法证实": 1}.get(verify_tier, 1.5)
vol_factor = min(atr_ratio, 3.0)
category_bonus = 1.5 if "非显性" in category else 1.0

if np_2025 <= 0 or base_np < 0.5:
    # 亏损或微利(年净利<0.5亿):弹性无意义
    attractiveness = (max(0, remaining) * 0.1 + verify_score * 3) / (1 + vol_factor * 2)
else:
    attractiveness = (remaining * 0.3 + profit_elasticity * 10 + verify_score * 5) / (1 + vol_factor * 2) * category_bonus

Step 5: HTML报告生成

使用 generate_report_template.py 生成完整HTML报告。

报告必须包含的章节

  1. 物理约束裂口传导图:R1-Rn路径 + 显性/非显性标的映射
  2. 价值层级汇总表:核心/次核心/可靠性保障/应用层分组
  3. Top 5 详细卡片:每家包含收入弹性/估值/透支标签/技术面
  4. 全标的排名表:按吸引力排序
  5. 产业链全景图:物理约束→解决方案→A股标的

HTML样式:暗色主题(#0d1117背景),必须引用 assets/report_style.css(手机优先定稿版式),禁止手写桌面定宽样式。

📱 移动端定稿版式(手机优先·强制)

学员主要在手机上打开报告,以下为不可偏离的定稿规范:

  • viewport 必含:每份报告 <head> 必须含 <meta name="viewport" content="width=device-width,initial-scale=1">
  • 手机优先 CSS:样式以 assets/report_style.css 为唯一真源(基础即手机样式,@media(min-width:768px) 仅做桌面增强);生成器运行时自动读取该文件注入报告
  • 单列流式:容器 width:100% 铺满屏幕,桌面端才限宽居中;禁止 max-width 固定为 1200/1500px 这类桌面定宽
  • 宽表横向滚动:表格直接输出 <table>,CSS 已在窄屏(max-width:640px)整体横向滚动,不撑破页面;禁止给列写死固定像素宽度
  • 字号下限:正文 ≥15px,标签/注释 ≥11px;标签/按钮点击目标最小高度 ≥32px
  • 产业链图自适应:手机端竖向堆叠(CSS 已处理),HTML 无需手动改结构
  • 涨跌配色:涨红 #FF4444、跌绿 #00CC66(中国市场惯例)

关键设计规则

产业链价值层级(4层)

| 层级 | 颜色 | 定义 | 示例 | |------|------|------|------| | 核心 | #E74C3C 红 | 不可替代——没有这个,整个赛道做不了 | 谐波减速器/超导线材/ABF载板 | | 次核心 | #F39C12 橙 | 性能增强——有它更强、效率更高 | 永磁材料/碳纤维/CMP抛光液 | | 可靠性保障 | #3498DB 蓝 | 功能实现后的可靠性/耐久性/热管理材料 | Underfill底部填充胶/TIM热界面材料/密封胶 | | 应用层 | #95A5A6 灰 | 锦上添花——实现后的应用或辅助 | 热管理集成/组装/辅助电机 |

:v1.0版本只有3层,v1.1新增"可靠性保障"层。该层的标的往往被传统分析遗漏,但物理上刚性需要,且因不在概念板块内而可能存在定价差。典型案例如回天新材(华为唯一Underfill国产供应商)在韬定律R1路径中被遗漏。

TAM假设框架

每个赛道需定义:

  • 基准年产量:2025E/2026E 的产业规模
  • 目标年产量:2028E/2030E 的产业化规模
  • ASP:单单位产品的平均售价
  • 总TAM = 目标年产量 × ASP
  • 价格侵蚀因子:量产期降价30%(pen_adj = 0.7

行业PE参考表

industry_pe = {
    # 通用
    "通用机械": 45, "工控设备": 40, "专用设备": 40, "电气设备": 30,
    "电子-半导体": 50, "电子-3D视觉": 80, "电子-元件": 35,
    "通信-光模块": 40, "通信-设备": 35,
    # 材料
    "有色金属-稀土永磁": 35, "有色金属-钨": 40, "有色金属-锗": 50,
    "新材料-碳纤维": 60, "新材料-PEEK": 80, "新材料-超导": 80,
    "新材料-特种钢": 30, "新材料-陶瓷": 45,
    "精细化工-氟酮": 50,
    # 电力/电网
    "电力设备-电网": 25, "电力设备-储能": 40, "电力设备-变压器": 20,
    "电力设备-线缆": 20, "电力设备-温控": 35,
    # 半导体
    "半导体-封测": 30, "半导体-EDA": 80, "半导体-功率器件": 40,
    "半导体-晶圆": 30, "半导体-硅片": 30, "半导体-气体": 35,
    # 航天
    "航天-卫星": 50, "航天-材料": 45, "航天-电子": 50,
    # 核电
    "核电-设备": 40, "核电-建设": 15, "核电-运营": 20,
    # 光伏
    "光伏-电池": 25, "光伏-设备": 35, "光伏-电站": 15,
    # 汽车
    "汽车零部件": 30, "汽车零部件-热管理": 35,
    # 其他
    "计算机-软件": 45, "计算机-硬件": 35,
    "环保": 25, "建筑": 12,
}

输出文件

  • HTML报告{workspace}/p2p_output/P2P_{赛道名}_分析报告.html
  • Python脚本{workspace}/p2p_output/generate_report_{赛道英文}.py
  • JSON数据{workspace}/p2p_output/elasticity.json + valuation_final.json

已跑过的赛道(供参考)

| 赛道 | 正向空间标的 | 高估比例 | 关键发现 | |------|------------|---------|---------| | 人形机器人 | 0/15 | 80% | 非显性永磁/碳纤维/PEEK也被定价 | | 韬定律 | 0/17 | 71% | 概念发布5天内全面透支 | | 太空光伏 | 3/17 | 82% | 度电成本差40倍,最远商业化 | | 可控核聚变 | 8/17 | 24% | 唯一大规模正向标的赛道 | | 算电协同 | 1/21 | 95% | 确定性最高但估值最满 |


踩坑经验

  • NeoData API经常返回None(token格式问题),westock-data更可靠
  • 股票代码必须带sh/sz前缀(sh600519/sz000001),指数代码会混淆
  • 微利公司(年净利<0.5亿)弹性虚高,必须用亏损公司公式
  • 行情数据中YTD涨幅可能来自不同字段(chg_1y或chg_60d),需灵活处理
  • ST股票需特别标注但仍可纳入分析
  • 行业PE查表需覆盖各赛道,缺省值用40
  • HTML报告中f-string不能包含Python循环逻辑,需提前生成HTML片段
  • 可靠性追问遗漏(v1.1):韬定律R1路径覆盖了"互连载体"(键合/载板/TSV检测)但遗漏"互连可靠性保障材料"(Underfill/TIM/绑定胶/密封胶)。教训:物理拆解不能停在"功能如何实现",必须追问"功能实现后如何可靠运行"。新增可靠性追问规则(Step 1)。