Cai
2026-08-26 96f271048f97056125ac0b6aeb9ef99a18d871a8
ana-doc/股票估值/股票价格合理性评估操作手册.md
@@ -1,8 +1,8 @@
# 如何判断一只股票的价格是否合理
> 版本:v1.1(在原 v1.0 文件上增补“质量不降级的提速体系”)
> 更新日期:2026-07-31
> 适用范围:以普通工商企业为主,同时说明银行、保险、周期、资源、亏损成长股等特殊情况。
> 版本:v1.3(在同一正式文件上持续更新,不另建历史版本文件)
> 更新日期:2026-08-09
> 适用范围:以普通工商企业为主,同时说明银行、保险、周期、资源、亏损成长股等特殊情况。
> 重要提示:估值不是计算一个“绝对正确价格”,而是在明确假设下计算合理价格区间、预期收益率和下行情景。本手册不构成投资建议。
---
@@ -1419,6 +1419,8 @@
公司类型确定后,模型选择不再从零讨论:
公司类型必须按**主要收入、主要利润、核心资产和现金流来源**确定,不得直接沿用行情软件概念板块、行业调研入池标签、新闻题材或产业链邻接关系。主题相关业务收入或利润尚非主要来源时,只能作为分部成长选项或催化因素,不能决定整家公司主模型和估值倍数;无法取得分部利润时,至少用法定分部收入、毛利率和资产投入验证业务纯度,并对无法证明的题材贡献折价。
| 公司特征 | 默认主模型 | 固定交叉验证 |
|---|---|---|
| 稳定盈利、现金流良好 | 正常化 PE | FCF收益率或DCF |
@@ -1473,6 +1475,14 @@
~~~
这类预测仍可展示为“公告前市场预期”,但不得直接作为当前 NTM 基准。
预测抓取日、网页访问日或批处理运行日不得代替研报发布日期。只有汇总均值而无法证明每一家底层研报日期时,标记:
~~~text
DATE_UNPROVEN_AGGREGATE
~~~
该汇总可以展示为“日期不可证的市场参考”,但不得进入当前一致预期、NTM基准利润或情景上沿;必须补回底层机构、真实研报日期和逐年预测后才能解除。若汇总值后来被证明由最新披露前的旧报告计算而来,应按底层日期分别标记滞后,不得保留抓取日身份。
### 25.4 机构预测的使用顺序
@@ -2010,6 +2020,172 @@
---
## 三十二、最新收盘价日更与单一最新版规则
### 32.1 日更范围和目标交易日
每次收到“按最新价格重新判定全部已估值公司”的要求时,默认处理 MySQL `stock_valuation` 中所有 `active=1`、且存在当日有效正式估值版本的证券,不再逐份打开历史报告手工计算。
目标价格日按以下顺序确定:
1. 先要求正式交易日历 current asset 的 `window_end` 覆盖请求日;
2. 再从该资产中选择请求日以前最近一个 `is_open=1` 的交易日;
3. 只读取 `trading_xuntou.cn_stock_kline_1d_front` 的前复权完整日 K;
4. 日 K 的证券身份、来源、日期、正数收盘价和收盘后更新时间必须通过现有门禁;
5. 周末或休市日使用最近开市日收盘价,不把自然日写成交易日;
6. 日历水位落后时必须先由有权限的上游运维流程刷新正式日历资产,不得使用测试 fixture、旧行情表、网络回退或手工改日历绕过门禁。
### 32.2 增量执行和跳过规则
合理区间、利润预测和估值倍数在没有新财报、业绩预告、重大事件或正式复评时保持不变;日常任务只刷新价格和价格位置判定。
执行前按 `ticker + 目标交易日` 比对:
- 同日价格、来源、估值版本和判定已经存在且完全一致:计为 `unchanged`,直接跳过,不重复写入;
- 有新完整收盘价:只新增该交易日的 `daily_price` 和 `daily_judgement`;
- 单只停牌、港股不受支持或行情证据不完整:该证券零写入并进入固定缺口清单,其余证券继续;
- 同日价格或判定与已存事实冲突:拒绝覆盖,返回不可变冲突;
- 新正式复评出现:先幂等导入新估值版本,再按其生效日参与后续价格判定,不用每日价格更新反向修改合理区间。
### 32.3 单一最新版文档
用户日常读取的正式估值判定只保留以下稳定入口:
- `ana-data/result/股票估值/估值台账/latest.md`
- `ana-data/result/股票估值/估值台账/latest.csv`
- `ana-data/result/股票估值/估值台账/latest_gaps.csv`
每次成功日更直接原子覆盖上述同名文件,不创建带日期、批次号、版本号或 `latest_v2` 一类并列日更文档。`latest.md` 和 `latest.csv` 必须来自同一次数据库快照,任一文件发布失败时恢复上一组文件。
公司基础估值报告、原始披露、计算底稿、manifest 和数据库历史行属于估值依据或审计证据,不是并列的“当前日更版本”,不得因每日股价变化而整批重写。公司发生正式复评时,用户可见的当前入口只指向最新有效报告;旧报告如因证据链必须保留,只能作为历史证据,不得继续冒充当前版本。
### 32.4 日更后的验证与 Git 交付
日更完成后至少验证:
1. 数据库最新交易日与 `latest.md/latest.csv` 一致;
2. 导出证券数等于当日成功判定数,逐股代码、收盘价、估值版本和四档标签复算差异为 0;
3. 缺失或不支持证券全部进入 `latest_gaps.csv`,不得静默丢失;
4. 当日已是最新版时不重复生成、不重复写库;
5. 工作区只暂存本次估值规范和固定 latest 文件,不使用 `git add .` 带入其他角色或用户的改动;
6. 存在有效文件差异时提交当前分支并推送远端;没有内容差异时不制造空提交,但仍确认当前分支与远端同步。
本节规范的是用户可见结果的“单一最新版”和日常交付动作;数据库中按交易日保存的历史价格、判定及估值版本继续用于追溯和复算,不作为多个用户文档版本展示。
---
## 三十三、估值泡沫判定与泡沫原因
### 33.1 泡沫的操作性定义
本手册使用以下可复算定义:
```text
泡沫成立:当前价格 > 基准合理区间上沿
泡沫溢价率
= 当前价格 ÷ 基准合理区间上沿 - 1
相对乐观上沿偏离
= 当前价格 ÷ 乐观情景上沿 - 1
```
该定义回答的是“价格是否已经高于现有基本面基准所能支持的范围”,不等同于公司造假、股价必然立即下跌,也不证明市场参与者具有某一种共同动机。合理区间本身发生正式复评时,泡沫判定必须随新估值版本重算。
泡沫程度按价格位置分为:
| 状态 | 规则 | 含义 |
|---|---|---|
| 未识别估值泡沫 | 当前价不高于基准上沿 | 仅表示没有触发本节定义,不代表一定低估或没有经营风险 |
| 泡沫-轻 | 高于基准上沿不超过 15% | 接近估值误差、短期乐观预期与泡沫的交界 |
| 泡沫-中 | 高于基准上沿 15%—50% | 已经明显提前支付乐观增长 |
| 泡沫-高 | 高于基准上沿超过 50%,但未超过乐观上沿 | 大幅提前资本化乐观情景 |
| 泡沫-极端 | 当前价超过乐观情景上沿 | 现有乐观模型仍不足以解释价格,存在额外叙事、事件期权或情绪溢价 |
### 33.2 原因分析必须分四层
泡沫原因不得只写“市场炒作”。每只触发泡沫的公司必须依次检查:
1. **估值反推层**:价格高于基准上沿多少,是否超过乐观上沿,当前价隐含利润、增长率或估值倍数是否明显高于基础情景;
2. **业务预期层**:市场最可能提前交易什么,包括订单、产能、技术突破、国产替代、景气回升、利润率改善、扭亏、并购重组或资产整合;
3. **量价显影层**:检查近 20/60 日涨幅、相对 60 日均线、成交额变化以及同行业背景,判断动量和交易拥挤是否放大溢价;
4. **事件证据层**:只有公告、监管文件、公司披露或可复核事件链能够证明时,才把具体政策、订单、重组、控制权变化或风险解除写成已验证原因;新闻、论坛和市场叙事只能作为待验证解释。
如果只能完成前两层,原因性质必须写成“基于估值反推和业务驱动的推断”;不得把“最可能解释”改写成“已经证实的上涨原因”。量价只证明市场显影,不能单独证明因果。
### 33.3 泡沫原因标准分类
泡沫公司至少填写一个主要原因;可填写多个次要放大因素:
| 原因分类 | 典型含义 | 主要验证项 |
|---|---|---|
| 盈利修复或扭亏预期提前定价 | 当前利润弱、亏损或普通 PE 不适用,但价格提前交易未来盈利恢复 | 扣非利润、现金流、毛利率、费用率、扭亏持续性 |
| 军工、商业航天或低空经济主题溢价 | 市场提前交易订单恢复、型号放量、卫星/无人机/低空产业预期 | 正式合同、合同负债、收入确认、回款、交付节奏 |
| 半导体国产替代、AI 算力或先进封装预期 | 市场提前交易国产替代、算力需求、制程/良率或新品放量 | 客户认证、收入占比、产能利用率、研发转收入 |
| 机器人、自动化或智能制造成长预期 | 市场提前交易机器人渗透率、核心零部件国产化和规模效应 | 订单、出货量、单价、毛利率、客户集中度 |
| 新能源、储能或电动化成长预期 | 市场提前交易需求增长、产能释放和新技术路线 | 价格、库存、开工率、产能利用率、现金流 |
| 创新药、医疗器械或国产替代预期 | 市场提前交易临床、获批、授权和商业化 | 临床节点、监管审批、销售放量、研发费用 |
| 资源品稀缺性或周期高景气外推 | 把阶段性价格上涨或供给紧张按长期状态资本化 | 商品价格、库存、成本曲线、产量和资本开支 |
| 信创、通信、智能汽车或消费电子主题溢价 | 市场提前交易政策、产品升级、渗透率和需求复苏 | 真实业务占比、客户订单、量产节奏和利润贡献 |
| 并购重组、资产整合或控制权期权 | 当前经营价值之外还计入未完成的资本动作 | 正式公告、交易进度、审批、对价、摊薄和整合风险 |
| 趋势动量与交易拥挤 | 价格趋势、成交和板块共振放大原有预期 | 20/60 日涨幅、MA60 偏离、成交额、行业对照组 |
### 33.4 每只股票的必填字段
`latest.csv` 和 `latest.md` 对全部有数值判定的公司补充以下字段;没有泡沫的公司也不能留空,必须明确写“未识别估值泡沫”:
| 字段 | 内容 |
|---|---|
| `bubble_status` | 未识别、轻、中、高、极端 |
| `bubble_premium_pct` | 当前价相对基准上沿的溢价率 |
| `bubble_vs_optimistic_pct` | 当前价相对乐观上沿的偏离 |
| `bubble_primary_cause` | 一个主要原因 |
| `bubble_secondary_cause` | 乐观情景提前定价、动量拥挤等次要因素 |
| `bubble_reason` | 公司级原因说明,必须包含具体业务驱动和价格位置 |
| `bubble_reason_nature` | 规则判定、推断或已验证事件链 |
| `bubble_confidence` | 高、中、中低;未经事件链验证不得标高置信因果 |
| `bubble_evidence_basis` | 估值反推、正式报告、机构预期、量价或事件证据入口 |
| `bubble_recheck_trigger` | 哪个事实可验证或推翻当前原因解释 |
| `return_20d_pct`、`return_60d_pct` | 前复权 20/60 日涨幅 |
| `distance_to_ma60_pct` | 当前价相对前复权 MA60 的偏离 |
| `amount_ratio_5d_to_60d` | 近 5 日平均成交额相对近 60 日平均成交额 |
| `market_sample_count` | 可用前复权交易日样本数;少于 61 个时,60 日涨幅留空并在原因说明中降级披露 |
### 33.5 信息优先级和结论边界
泡沫原因的信息优先级为:
1. A1 法定披露、交易所和监管文件,用于确认订单、业绩、重组、控制权和风险事件;
2. 当前正式估值报告的业务驱动、利润来源、反向估值和风险段落;
3. 有日期与样本数的机构一致预期,只用于识别市场预期,不作为事实利润;
4. `trading_xuntou.cn_stock_kline_1d_front` 前复权量价,用于确认市场显影和拥挤程度;
5. 新闻、研报观点和 Darkline 线索,只用于提出替代解释;没有关键节点和现实验证时保持 `中低` 置信度。
泡沫原因应使用“主要在提前交易”“最可能来自”“量价可能放大”等表述。只有直接证据闭环时才使用“已由公告确认”“已验证”。不得因为行业上涨就自动认定单只公司的订单、利润或技术突破已经发生。
### 33.6 日更执行、停止规则和质量检查
每日台账成功导出基础 `latest.csv/latest.md` 后,执行:
```powershell
python ai-valuation-analyst/tools/enrich_valuation_bubbles.py --project-root . --write
```
运行前通过本机安全配置向进程提供 `MYSQL_HOST/MYSQL_PORT/MYSQL_USER/MYSQL_PASSWORD`,凭据不得写入命令、脚本、日志或正式文档。脚本只读取当前稳定 CSV、其中引用的正式报告和 `cn_stock_kline_1d_front`,不修改合理区间、基础估值版本或 MySQL 事实表。相同输入重复执行必须达到 `files_changed=false`,不得制造无内容差异的新版本。
完成后必须检查:
1. 输出行数等于当前数值判定行数,代码唯一;
2. `bubble_status != 未识别估值泡沫` 的集合严格等于 `close > base_high` 的集合;
3. 泡沫集合与“偏贵/明显偏贵”标签集合一致,差异为 0;
4. 正式报告解析缺失为 0,前复权量价缺失及不足 61 个交易日的样本必须分别显式列出;
5. 所有泡沫行都有主要原因、原因性质、置信度、证据基础和复核触发器;
6. 所有无泡沫行明确说明未超过基准上沿,不把“无泡沫”误写成“无风险”;
7. 对极端泡沫优先复核基础估值是否存在单位、股本、利润或模型失真;确认估值输入无误后,才讨论额外叙事溢价;
8. `latest.csv/latest.md` 原子覆盖且第二次运行字节不变,再按第三十二节精确提交推送。
---
## 最简结论公式
如果只记住一套流程,记住下面这组:
@@ -2028,7 +2204,9 @@
5. 安全边际 = (基准合理价值 - 当前价格) ÷ 基准合理价值
6. 只有当:
6. 泡沫溢价率 = 当前价格 ÷ 基准合理区间上沿 - 1
7. 只有当:
   基准回报达到要求 + 悲观损失可承受 + 当前隐含假设不激进
   才能认为价格具有吸引力。
```