赛道深度分析(P2P Engine)— 物理瓶颈到A股定价的五步量化映射
Overview
P2P Engine 从物理约束出发,逆向发现A股投资标的。核心能力:
- 物理约束裂口分解:将赛道拆解为5-7条物理瓶颈路径(R1-Rn)
- 显性+非显性标的发现:不仅找"概念股龙头",更找上游材料/设备/工具等"卖铲人"
- 收入弹性量化:基于TAM×市占率×ASP测算每家标的的收入弹性
- 分部估值+透支评估:区分"涨过头"vs"基本面不支撑",6档标签
- 产业链价值层级:核心/次核心/可靠性保障/应用层四级分类
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)
方法:
- WebSearch 搜索赛道的核心技术路线和物理瓶颈
- WebFetch 深入阅读3-5篇产业分析文章
- 识别"没有这个就做不了"的物理约束节点
- 每条路径标注:物理约束描述 → 解决方案 → 产业链环节
输出格式:
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: 标的识别与数据获取
标的识别规则:
- 每条R路径至少1-2家显性+1家非显性标的
- 显性标的:赛道内的知名龙头/概念股
- 非显性标的:物理约束链上游的材料/设备/工具供应商,不在概念板块内
- 每家标的标注: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报告。
报告必须包含的章节:
- 物理约束裂口传导图:R1-Rn路径 + 显性/非显性标的映射
- 价值层级汇总表:核心/次核心/可靠性保障/应用层分组
- Top 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)。
微信扫一扫