价值发现 — 完整实施方案规范

基于张景东 (Zhang Jingdong),价值发现 (Value Discovery) (2019)


目录

  1. 概述
  2. 内在价值定义
  3. 估值方法
  4. 财务报表深度分析
  5. 行业与竞争分析
  6. 安全边际
  7. 催化剂识别
  8. 入场规则
  9. 出场规则
  10. 投资组合构建
  11. 风险管理
  12. 行为纪律
  13. 常见错误 — 价值陷阱
  14. 完整投资生命周期示例
  15. 实施伪代码
  16. 核心原则

1. 概述

张景东的《价值发现》呈现了一个系统性的、以实践者为导向的框架,通过严格的基本面分析识别中国A股市场中被低估的股票。本书既拒绝投机型追涨杀跌,也拒绝被动跟踪指数的策略,而是采用一种纪律严明的自下而上流程,将每一次股票购买视为收购一家真实企业的部分股权。

核心论点

A股市场结构性低效。信息不对称、散户情绪主导、政策驱动的波动性、机构管理者的短期业绩压力,这些因素创造了持续存在的错误定价。具备估算内在价值能力的耐心投资者——以及有能力基于价格与价值之间的差异采取行动的定力——能够以远超市场平均水平的速率实现财富复利。

价值发现流程

张将整个投资工作流程组织为五个顺序阶段:

  1. 筛选。 使用量化过滤器将4000多家上市公司缩减为30-50个候选股票的可行观察名单。
  2. 分析。 对每个候选股票进行深入基本面研究——财务报表、商业模式、竞争地位、管理层质量。
  3. 估值。 使用多种独立方法估算内在价值,并三角定位到一个合理区间。
  4. 等待。 耐心等待市场提供足够低于内在价值的价格,以提供足够的安全边际。
  5. 行动。 当折扣足够时果断买入,持续持有直至价值实现,当论点实现或破裂时卖出。

为什么价值发现在中国有效

张确定了价值投资在中国市场特别有回报的四个结构性原因:


2. 内在价值定义

2.1 概念

内在价值是企业将为其所有者产生的所有未来现金流的现值,以适当比率折现,反映资本的风险和机会成本。这是一个估计值——一个区间,而非一个点——它独立于当前市场价格而存在。

2.2 内在价值的三大支柱

张将内在价值分解为三个可衡量组成部分:

支柱 定义 主要指标
资产价值 企业拥有的资产,扣除负债后的净额 净资产值 (NAV)
盈利 power 价值 企业在正常化、稳态下赚取的收益 正常化每股收益 × 倍数
增长价值 以高于资本成本进行再投资的附加价值 增量自由现金流的DCF

2.3 价值层次

并非所有价值组成部分都具有相同的确定性:

确定性水平:

  高    ████████████████████  资产价值
        ████████████████      盈利 power 价值
  低    ████████████          增长价值

规则: 永远不要为主要为增长价值付费。一项合理的投资应该仅凭资产价值和盈利 power 就能成立,增长作为免费期权。

2.4 区分价值与价格

张强调价值与价格之间的绝对区别:


3. 估值方法

张坚持使用多种估值方法并进行三角定位。没有任何单一方法是足够的;每种方法都有盲点。投资者应寻求方法间的收敛。

3.1 现金流折现 (DCF)

理论上最严谨的方法,但也是对假设最敏感的方法。

公式:

内在价值 = Σ(FCF_t / (1 + r)^t) + 终值 / (1 + r)^n

其中:
  FCF_t     = 第t年的自由现金流
  r         = 加权平均资本成本 (WACC)
  n         = 显性预测期(通常5-10年)
  终值     = FCF_n × (1 + g) / (r - g)
  g         = 永续增长率(中国永不超过3%)

张的DCF实用指南:

参数 保守默认 备注
预测期 5年 仅对极稳定的企业用10年
折现率 (WACC) 10-12% 周期性企业、小盘股用更高比率
永续增长率 0-3% 默认用GDP增长率或更低
FCF计算 NOPAT - 净CapEx 使用维护性CapEx,而非总CapEx
收入增长 行业平均或更低 永远不假设加速
利润率趋势 稳定或收缩 永远不假设扩张

敏感性检查: 始终以三种情景运行DCF——基准、乐观、悲观。如果股票仅在乐观情景下被低估,那它就不是价值投资。

3.2 资产基础估值

最适合资产密集型企业——房地产、银行、控股公司、资源公司。

净资产值 (NAV):

NAV = (资产公允价值) - (总负债) - (少数股东权益)

账面价值调整:
  + 以历史成本入账的房地产  -> 重估至市场价值
  + 按成本计价的投资证券     -> 重估至市场价值
  + 通胀环境下的FIFO存货    -> 调整至重置成本
  - 因过度收购产生的商誉     -> 减记至零
  - 无可分离价值的无形资产   -> 减记至零
  - 表外负债                -> 加回(担保、租赁)

清算价值(地板价):

清算价值 = 现金 + (0.75 × 应收账款) + (0.50 × 存货)
        + (0.30 × 财产厂房设备) - 总负债

规则:如果市值 < 清算价值,强力买入信号。

3.3 盈利基础估值

对大多数运营公司而言的主力方法。

正常化盈利:

正常化每股收益 = (整个商业周期内每股收益的平均值,通常5-7年)

调整:
  - 移除一次性收益/损失
  - 移除资产减值(如果经常性减记掩盖了真实盈利,则加回)
  - 调整股票薪酬费用
  - 调整周期性高峰/低谷(使用中期利润率)

盈利 power 价值 (EPV):

EPV = (正常化EBIT × (1 - 税率)) / WACC

如果 EPV > 资产价值  -> 存在特许经营价值(竞争护城河)
如果 EPV < 资产价值  -> 管理层正在摧毁价值(红旗)

基于市盈率的公允价值:

公允价值 = 正常化每股收益 × 合理市盈率

合理市盈率取决于:
  - 增长率:增长越高 -> 市盈率越高
  - ROE:ROE越高 -> 市盈率越高
  - 派息率:如果ROE < 股权成本,派息率越高 -> 市盈率越高
  - 风险:风险越低 -> 市盈率越高

张的A股市盈率指南:
  低增长,低护城河     :  8-12倍
  中等增长,一些护城河  : 12-18倍
  高增长,强护城河     : 18-25倍
  特殊特许经营        : 25-35倍(罕见;必须单独论证)

3.4 比较估值

用作合理性检查,从不作为主要方法。

同行比较框架:

步骤1:识别5-8个直接竞争对手(相同行业、相似规模)
步骤2:计算每个竞争对手的关键倍数:
        - 市盈率(滞后、远期、正常化)
        - 市净率
        - EV/EBITDA
        - 市现率
步骤3:按质量指标对目标与同行进行排名:
        - ROE、ROIC
        - 收入增长(3年CAGR)
        - 利润率稳定性
        - 资产负债表强度(D/E)
步骤4:目标应相对于同行中位数享有溢价/折扣,基于质量排名

历史估值区间:

绘制股票过去10年的市盈率(或市净率)。
识别中位数、第25百分位和第75百分位。

  低于第25百分位  -> 可能被低估(调查)
  接近中位数      -> 合理估值(不行动)
  高于第75百分位  -> 可能被高估(考虑卖出)

警告:历史倍数仅在企业基本面未发生根本变化时才有意义。
衰退的企业应比其自身历史享有更低的倍数。

3.5 三角定位协议

最终内在价值区间 = 以下各方法的交集:
  1. DCF估值区间(悲观到基准情景)
  2. 资产基础地板
  3. 盈利 power 价值
  4. 比较估值隐含区间

如果方法差异很大(>50%利差),投资不确定性太高,无法行动。
转至下一个候选。

如果方法在20-30%区间内收敛,取保守端作为内在价值的工作估计。

4. 财务报表深度分析

张用持怀疑态度的 forensic 视角详细关注阅读财务报表。目标不是表面接受报告数字,而是重建企业的经济现实。

4.1 利润表分析

收入质量检查清单:

检查项 红旗
收入增长 vs 行业 远超行业且无明确原因
收入集中度 前5大客户 > 收入的50%
渠道填充信号 Q4收入激增,Q1退货/反转
关联方收入 > 10%来自关联方
收入确认政策 激进(待完成合同、完工百分比滥用)

利润率分析:

5年毛利率趋势:
  稳定或改善  -> 定价权,好迹象
  下降        -> 竞争压力,调查

营业利润率 vs 毛利率:
  差距扩大     -> SGA膨胀,失去运营杠杆
  差距收窄     -> 效率改善

净利润率 vs 营业利润率:
  差距大       -> 利息负担重或一次性项目

4.2 资产负债表分析

资产质量记分卡:

现金及等价物      : 用现金流表验证(如果现金高但经营现金流低,现金可能受限制)
应收账款 / 收入   : 应稳定或下降;比率上升 = 收款风险
存货 / 销货成本    : 比率上升 = 潜在过时或需求疲软
商誉 / 总资产     : > 30%危险;减值风险
PP&E年龄          : (累计折旧 / 总PP&E)> 70%意味着
                    资产老化,未来CapEx悬崖

负债警告信号:

短期债务 / 总债务       > 60%  -> 再融资风险
利息覆盖(EBIT / 利息) < 3倍  -> 财务困境风险
表外担保                      -> 隐藏负债
附注中的或然负债              -> 诉讼/监管风险

4.3 现金流量表分析

张认为现金流量表是最重要的单一财务文档,因为它最难操纵。

现金流质量框架:

经营现金流 / 净利润(3年):
  > 1.0   -> 盈利以现金背书(高质量)
  0.7-1.0 -> 可接受,调查营运资本变动
  < 0.7   -> 盈利可能是纸上利润(红旗)

自由现金流 = 经营现金流 - 维护性CapEx
  正且增长  -> 企业产生真实经济价值
  连续3年+为负 -> 企业消耗现金(除非转型,避免)

CapEx分类:
  维护性CapEx = 折旧(近似值)
  增长性CapEx = 总CapEx - 维护性CapEx
  如果公司声称大部分CapEx是"增长"但收入停滞,
  管理层要么在撒谎要么能力不足。

4.4 Forensic会计红旗检查清单

张编制了一份A股公司常见会计操纵清单:

  1. 通过关联方虚增收入。 以高于市场价格向关联公司销售商品以提升 top line。
  2. 费用资本化。 将运营成本作为"开发支出"或"在建工程"移至资产负债表。
  3. 通过准备金平滑盈利。 在好年份提取大额准备金(饼干罐储备),在差年份释放。
  4. 激进商誉。 过度支付收购,将现金(在资产负债表上)转化为商誉(推高总资产而无生产性价值)。
  5. 现金流操纵。 将运营流出分类为投资活动或将融资流出分类为运营流入。

规则: 如果五个红旗中的任何两个同时出现,无论股票看起来多便宜,都将其从候选中剔除。


5. 行业与竞争分析

5.1 行业选择框架

张认为行业选择是成功的一半。即使是处于糟糕行业中的最佳公司也会表现不如处于良好行业中的普通公司。

行业吸引力评分:

因素 权重 评分(1-5)
行业增长率 20% 5 = >15% CAGR,1 = 下降
竞争集中度 20% 5 = 寡头垄断,1 = 分散商品
进入壁垒 20% 5 = 不可逾越,1 = 无
监管稳定性 15% 5 = 支持/稳定,1 = 敌对/不确定
周期性 15% 5 = 非周期性,1 = 高度周期性
资本密集度 10% 5 = 轻资产,1 = 极高资本密集

阈值: 加权分数 >= 3.5 才能进行公司层面分析。

5.2 竞争护城河评估

张为中国市场条件调整了巴菲特/Morningstar 护城河框架:

护城河类型(中国耐久性排名):

1. 政府许可证/特许经营权   (在中国监管经济中最强)
2. 网络效应               (互联网平台、支付系统)
3. 转换成本               (企业软件、银行关系)
4. 品牌和声誉             (消费品、奢侈品、白酒)
5. 成本优势/规模经济       (制造、物流)
6. 专利/知识产权           (由于执法差距,在中国最弱)

护城河证据检查清单:

[ ] 5年以上市场占有率稳定或上升
[ ] 毛利率比行业平均水平高5个百分点以上
[ ] ROE持续 > 15%且无过度杠杆
[ ] 至少在经济衰退中展示过定价权
[ ] 客户保留率 > 85%(在可衡量的情况下)
[ ] 竞争对手尝试过但未能复制优势

5.3 波特五力 — 中国适配

张通过添加第六种力量修改了适用于A股情况的波特框架:政府政策风险,在中国这可以在一夜之间压倒所有五种传统力量(例如,教培行业整顿、互联网平台监管)。


6. 安全边际

6.1 核心概念

安全边际是估计内在价值与购买价格之间的差距。它同时服务于两个功能:

  1. 防止分析错误。 没有估值是精确的。安全边际吸收估计错误。
  2. 增强回报。 以低于价值的价格购买在价格向价值收敛时机械地改善回报。

6.2 按类别划分的安全边际要求

张根据投资质量和确定性规定不同的最低折扣:

公司质量 最低折扣至内在价值 理由
特殊特许经营 >= 20% 价值高确定性
强业务,有些风险 >= 30% 标准要求
普通业务,便宜 >= 40% 更大的估计误差
转型/特殊情况 >= 50% 二元结果风险
周期底部 >= 40% off 中期价值 时机不确定性

6.3 安全边际计算

安全边际 (%) = (内在价值 - 当前价格) / 内在价值 × 100

示例:
  内在价值估计  = 25.00元
  当前市场价格   = 17.50元
  安全边际       = (25.00 - 17.50) / 25.00 = 30%

对于强业务(要求30%),这刚好达到门槛。

6.4 为什么安全边际在中国更重要

因此,张建议对大多数A股投资使用安全边际范围的上端


7. 催化剂识别

7.1 为什么催化剂重要

股票可以无限期地被低估。没有催化剂——一个可识别的事件或过程将导致市场认识到价值——资本就会被困住。张坚持每个投资论点必须至少包含一个可信的催化剂。

7.2 催化剂类别

硬催化剂(具体、有时间边界的事件):

- 盈利惊喜:       公司即将报告重大超预期
- 资产出售/分拆:   解开控股公司中的隐藏价值
- 回购公告:        管理层用资本发出低估信号
- 股息增加:        迫使市场重新评级股票的收益率
- 监管批准:        新产品/许可证待批准
- 激进投资者介入:  大股东推动变革
- 指数纳入:        被动基金强制买入(MSCI、CSI)
- 内部人买入:       管理层在公开市场购买股票

软催化剂(渐进、过程驱动):

- 行业整合:    较弱竞争对手退出,份额加速增长
- 利润率扩张:  原材料成本下降,定价权改善
- 债务减少:    去杠杆改善股权价值并降低风险
- 管理层变动:  新CEO实施运营改进
- 市场情绪转变: 板块轮动向价值/质量
- 机构发现:    研究不足的股票开始吸引分析师覆盖

7.3 催化剂评估

对于每个已识别的催化剂,评估:
  1. 发生概率        (高/中/低)
  2. 对价值的影响幅度  (>20% / 10-20% / <10%)
  3. 时间范围        (< 6个月 / 6-18个月 / > 18个月)

最低要求:
  至少一个催化剂具有高概率 AND >10%影响 within 18个月,或
  至少两个催化剂具有中概率 AND >10%影响 within 12个月。

如果不存在可信催化剂,股票进入观察名单但不购买,
无论折扣多大。

8. 入场规则

8.1 购买前置条件

在买入之前必须满足以下所有条件:

1. 估值:     安全边际达到或超过公司质量层级的最低要求。

2. 催化剂:    根据第7.3节识别至少一个可信催化剂。

3. 质量:      来自第4.4节的财务红旗不超过一个。

4. 行业:      行业吸引力分数 >= 3.5(第5.1节)。

5. 投资组合契合: 持仓不违反任何投资组合构建规则(第10节)。

6. 流动性:    日均交易量 > 1000万元(可在10个交易日内建立/退出全部仓位)。

8.2 入场时的仓位确定

仓位规模 = f(信念度、安全边际、投资组合集中度)

信念度级别:
  高    (所有估值方法收敛,多个催化剂,强护城河)
         -> 投资组合的6-10%
  中    (大多数方法一致,一个清晰催化剂,尚可的护城河)
         -> 投资组合的3-6%
  低    (吸引人但仍有一些不确定性)
         -> 投资组合的1-3%

初始购买:预期全部仓位的50%
扩仓计划:  如果价格进一步下跌10-15%或新信息加强论点,
           则增加剩余50%

8.3 入场时机

首选入场条件(非必需,但改善结果):
  - 市场情绪指标处于"恐惧"区域(例如,高VIX等效、低融资余额、媒体悲观)
  - 股票处于或接近52周低点
  - 成交量下降(卖出衰竭)
  - 附近有技术支撑位(限制短期下行空间)

避免买入:
  - 财报公告前立即(不确定性溢价)
  - 内部人大规模抛售期间
  - 整体市场处于欣快阶段时(相对于动量股一切看起来便宜,
    但绝对而言没有什么是真的便宜)

9. 出场规则

9.1 价值实现时卖出

主要出场:价格达到或超过估计内在价值。

程序:
  1. 当价格在内含价值10%以内时,开始减仓(卖出30-50%持仓)。
  2. 当价格达到内在价值时,再卖出30%。
  3. 持有最后20%作为"免费期权"——仅当价格超出内在价值20%
     或达到新的(更低)价值估计时才卖出。

9.2 论点破裂时卖出

防御性出场:原始投资论点被否定。

论点破裂事件(立即卖出,无论损失):
  - 发现或强烈怀疑会计欺诈
  - 竞争护城河永久受损(新破坏性竞争对手、
    破坏商业模式的监管变化)
  - 管理层诚信失败(内幕交易、自利、欺诈)
  - 盈利能力的永久损害(非周期性下滑)
  - 债务契约违约或无解决路径的流动性危机

9.3 出现更好机会时卖出

升级出场:卖出预期回报较低的头寸以资助
预期回报显著更高的头寸。

要求:
  - 新机会必须提供比被卖出头寸多>= 50%的上涨空间
  - 新机会必须满足所有入场标准(第8.1节)
  - 必须考虑交易成本和税收影响
  - 不要为了边际改善(<20%更好)而交换头寸

9.4 时间止损

如果持仓在24个月内未向内在价值移动 AND 无新催化剂出现:
  - 从头重新评估整个论点
  - 如果论点仍然成立 AND 安全边际仍然存在,
    重置24个月时钟
  - 如果论点正在减弱 OR 机会成本很高,退出并重新配置资本

张的规则:"死钱是回报的沉默杀手。"

10. 投资组合构建

10.1 集中度哲学

张倡导集中投资组合。超过一定程度的多元化会稀释价值投资者的优势——对少数企业深入了解的能力。

最优投资组合:8-15个持仓
  - 最小持仓:2%(低于此就无法有意义地影响回报)
  - 最大持仓:成本价的12%(如果升值则为15%)
  - 前5大持仓:投资组合的50-65%

10.2 多元化规则

行业限制:
  - 单一行业 > 投资组合的30%
  - 至少代表4个不同行业

风格平衡:
  - 混合深度价值(资产密集、低市净率)与质量价值
    (高ROE、中等市盈率)以减少风格集中风险

市值:
  - 大盘(>50亿元):40-60%
  - 中盘(10-50亿元):30-40%
  - 小盘(<10亿元):0-20%

周期性敞口:
  - 周期性股票(材料、能源、工业):最多30%
  - 防御性股票(消费必需品、公用事业、医疗):至少30%

10.3 现金管理

最低现金储备:10%(始终可用于意外机会)
最大现金:40%(超过此,你就是市场择时者,而非价值投资者)

提高现金:
  - 当很少有机会满足安全边际要求时
  - 当全市场市盈率超过25倍滞后或20倍远期时

配置现金:
  - 当全市场回调创造多个机会时
  - 当个别股票即使在正常市场中也会达到入场标准时

"现金是机会集合的剩余物,不是对市场的方向性投注。"

11. 风险管理

11.1 风险分类

张将风险分为三层,每层需要不同的管理:

风险层 示例 管理方法
公司风险 盈利miss、欺诈、管理失败 深入研究、安全边际
行业风险 颠覆、监管、大宗商品崩溃 行业多元化
市场/宏观风险 熊市、流动性危机、货币 现金储备、仓位确定

11.2 仓位级风险控制

止损规则:张不使用机械止损。

相反,他使用"论点监控器":
  - 如果买入后价格下跌20%,强制重新分析论点
  - 如果论点成立 AND 安全边际增加,考虑加仓
  - 如果论点正在减弱,减少50%
  - 如果论点破裂,完全退出

每个持仓最大损失:接受任何单一持股最多30%损失
  才会造成严重的投资组合损害
  (给定最大12%仓位,最坏情况 = 3.6%投资组合影响)。

11.3 投资组合级风险控制

最大回撤容忍度:从峰值价值下跌20%
  - -10%时,审查所有持仓;削减最弱论点的持仓
  - -15%时,将现金提高到至少25%;仅持有最高信念度持仓
  - -20%时,启动完全防御协议:40%现金,仅持有
    安全边际 > 40%的持仓

相关性监控:
  - 如果压力时期前5大持仓相关性超过0.7,
    投资组合多元化不足。减少最相关股票的敞口。

11.4 "预演"练习

在每次购买之前,张要求投资者写一页"预演":

假设投资在18个月内损失了50%的价值。
写下失败的故事。

目的:
  - 强制识别你可能否则忽视的风险
  - 揭示论点中的隐藏假设
  - 如果预演故事感觉合理且可能,不投资
  - 如果预演需要一连串不太可能的事件,进行

12. 行为纪律

12.1 耐心

张认为不耐烦是价值投资回报的最大破坏者。

耐心规则:

1. 等待好球:不要仅仅因为你有现金就投资。
   价值投资者的工作是等待好球——明显的错误定价
   加上清晰的催化剂。大多数时候,正确的行动是不行动。

2. 穿越噪音:买入后,忽略每日价格波动。
   每季度检查论点,而非每日检查价格。
   市场在短期是投票机,在长期是称重机。

3. 接受空档期:可能数月甚至数年没有一个可行动的机会。
   这是正常和健康的。复利发生在伟大机会出现
   且你已做好准备时的 bursts。

12.2 逆向思维

价值投资者必须在心理上感到舒适:
  - 买入别人正在卖出的(并卖出别人想要的)
  - 持有下跌20-30%的持仓如果论点完整的话
  - 拥有在晚宴上没有人愿意讨论的"丑陋"公司
  - 在短期错误(看起来愚蠢)时犯错,
    而在完整周期中正确

张的测试:"如果买入这只股票没有让你至少有点不舒服,
它可能还不够便宜。"

12.3 情绪纪律框架

在每笔交易之前,回答这些问题:
  1. 我是基于分析还是情绪买入/卖出?
  2. 如果市场关闭3年,我会进行这笔交易吗?
  3. 我是在锚定购买价格还是在评估当前价值?
  4. 我是因为某些东西变了还是在无聊/焦虑中行动?
  5. 我是否写下了我的论点,它实际上已被否定了吗?

如果任何答案暗示情绪化决策,不要执行交易。
等待48小时并重新评估。

12.4 投资日记

张要求为每个持仓维护书面日记:

入场日记:
  - 日期和价格
  - 内在价值估计(及方法论)
  - 安全边际百分比
  - 已识别的催化剂和预期时间表
  - 预演情景
  - 明确的出场标准(价格目标和论点破裂条件)

持续日记(季度):
  - 论点改变了吗?如何改变的?
  - 内在价值估计改变了吗?为什么?
  - 催化剂实现了还是延迟了?
  - 我仍然持有舒适吗?

出场日记:
  - 日期和价格
  - 回报(绝对和年化)
  - 论点正确吗?哪里错了?
  - 未来投资的经验教训

13. 常见错误 — 价值陷阱

13.1 什么是价值陷阱?

价值陷阱是传统估值指标看起来便宜但便宜得有道理的股票——业务永久受损,"便宜"实际上是对恶化基本面的公平反映。

13.2 七个经典价值陷阱

1. 衰退行业领导者
   症状:低市盈率、高股息率、强品牌
   现实:  行业持续衰退;盈利正在萎缩
   示例:  传统印刷媒体、衰退的大宗商品生产商

2. 金融工程
   症状:低市盈率因债务资助的股票回购而提升
   现实:  底层业务停滞;杠杆上升
   测试:   移除回购影响——每股收益仍在增长吗?

3. 周期性顶峰盈利
   症状:商业周期顶部的低市盈率
   现实:  盈利即将崩溃;"便宜"的市盈率是
           基于不可持续的顶峰盈利
   测试:   使用正常化(中期)盈利,而非滞后

4. 会计幻象
   症状:低市盈率,但经营现金流 < 净利润的70%
   现实:  盈利正通过激进会计被制造;真实盈利能力低得多
   测试:   基于现金流而非报告盈利估值

5. 治理折价
   症状:低估值,控股股东持股>50%
   现实:  控股股东通过关联交易、高额薪酬或隧道挖掘提取价值
   测试:   跟踪关联交易占收入的比例

6. 永续转型
   症状:低市净率,新管理层承诺"转型"
   现实:  多年来一直承诺转型但无结果;
           每个新计划消耗更多资本
   测试:   ROE在过去3年有改善吗?如果没有,跳过。

7. 政策受害者
   症状:监管打击后突然便宜
   现实:  商业模式已被政府行动永久损害;旧盈利 power 永远消失
   测试:   公司能在新监管制度下赚取合理回报吗?
           如果不能,再便宜的价格也不够。

13.3 价值陷阱检测检查清单

每个"是"得一分:
  [ ] 收入连续2年+下降
  [ ] 记录在案的市场份额损失
  [ ] ROE 5年趋势下降
  [ ] OCF/NI比率连续3年+ < 0.7
  [ ] 在没有相应资产/收入增长的情况下增加债务
  [ ] 5年内多次管理层变动
  [ ] 行业面临结构性颠覆
  [ ] 控股股东提取价值

分数:
  0-1: 不可能是价值陷阱(继续分析)
  2-3: 谨慎(在继续之前深入调查每个信号)
  4+:  可能是价值陷阱(从候选中剔除)

14. 完整投资生命周期示例

场景:假设工业零部件制造商

阶段1:筛选

公司:"精密制造公司"(假设)
代码:  从4000+ A股候选中筛选
通过的过滤器:
  - 市盈率(正常化) = 9.5倍  (< 12倍阈值)
  - 市净率 = 1.1倍               (< 1.5倍阈值)
  - ROE(3年平均) = 16.2%  (> 15%阈值)
  - D/E比率 = 0.35          (< 0.5阈值)
  - OCF/NI比率 = 1.08       (> 1.0阈值)
  - 股息率 = 4.2%            (> 3%阈值)
  - 市值 = 150亿元      (中盘)

阶段2:深入分析

业务:汽车和工业自动化领域精密零部件的领先制造商。
中国市场份额第二,全球第五。

竞争护城河:成本优势(比欧洲竞争对手低30%的劳动力和能源)
  加上正在缩小与日本同行差距的改善质量。

财务状况:
  - 收入CAGR(5年):12%
  - 毛利率:28%(稳定)
  - 净利率:11%(稳定)
  - 过去5年中4年自由现金流为正
  - 现金头寸:25亿元(无净债务)
  - 未检测到会计红旗

管理层:创始人-CEO持股22%。利益一致。
保守资本配置历史。无关联方担忧。

阶段3:估值

方法1:DCF
  假设:10%收入增长×5年,10.5% WACC,2%永续增长
  结果:每股22.80元

方法2:盈利 power 价值
  正常化EBIT:21亿元,税率:25%,WACC:10.5%
  EPV = (21亿 × 0.75) / 0.105 = 150亿 -> 每股21.40元

方法3:资产基础
  调整NAV(将工厂土地重估至市场):每股14.20元

方法4:比较
  同行平均市盈率:14倍;按14倍正常化每股收益 -> 每股20.30元

三角定位内在价值区间:20.30 - 22.80元
保守估计:20.30元

阶段4:安全边际评估

当前价格:13.70元
内在价值(保守):20.30元
安全边际:(20.30 - 13.70) / 20.30 = 32.5%

"强业务,有些风险"所需安全边际:30%
结果:通过(32.5% > 30%)

阶段5:催化剂识别

催化剂1:汽车行业复苏(概率:高,影响:>20%,
  时间:6-12个月)。汽车销售已连续18个月下降;
  政府宣布EV购买刺激措施。

催化剂2:欧洲竞争对手重组(概率:中,
  影响:10-20%,时间:12-18个月)。
  德国主要竞争对手宣布关闭工厂;
  可获取的市场份额。

评估:满足催化剂要求(一个高概率催化剂)。

阶段6:入场执行

信念度:高(估值收敛、强催化剂、坚实护城河)
目标仓位:投资组合的7%
初始购买:13.70元买入3.5%(满仓的50%)
加仓计划:如果价格跌至12.30元(-10%),
  再买入3.5%

阶段7:监控(第1-18个月)

第3个月:  价格 = 12.80(-6.6%)。汽车销售数据仍然疲软。
          论点完整。增加剩余3.5%持仓。
          平均成本:13.25元。
第6个月:  价格 = 13.10。汽车销售触底。
          Q2盈利符合预期。不需要行动。
第9个月:  价格 = 15.40。汽车销售复苏。
          两家券商开始覆盖。论点进展中。
第12个月: 价格 = 18.20。强力盈利超预期。
          欧洲竞争对手退出一条产品线。
          市场正在认识到价值。
第15个月: 价格 = 19.50。接近内在价值估计。
          在19.50卖出40%持仓。
第18个月: 价格 = 21.80。超过保守IV估计。
          更新的IV(反映超预期的份额增长):24.00。
          在21.80卖出40%。持有最后20%作为"免费期权"。

阶段8:出场与回顾

最终出场:在第22个月以23.50卖出剩余股份,
当时市盈率达到正常化18倍——高于公允价值区间。

回报:
  平均买入价格:13.25元
  平均卖出价格: 20.95元(三种销售的混合)
  持有期回报:  58.1%
  年化回报:      30.4%(约22个月)

事后分析:
  + 估值纪律有效——以足够的安全边际买入
  + 催化剂论点正确——汽车复苏驱动重新评级
  + 加仓改善平均成本约3%
  - 本可以更耐心出场;股票最终达到24.50
  - 教训:接受留下一些上涨空间;这是纪律的代价

15. 实施伪代码

15.1 价值筛选器

def value_screener(universe, params):
    """
    Screen a stock universe for value candidates.
    Returns a ranked watchlist.
    """
    candidates = []

    for stock in universe:
        fs = stock.financials  # trailing and historical data

        # === Primary filters (all must pass) ===
        if fs.pe_normalized > params.max_pe:               # default: 15
            continue
        if fs.pb_ratio > params.max_pb:                    # default: 1.5
            continue
        if fs.roe_3yr_avg < params.min_roe:                # default: 0.12
            continue
        if fs.debt_to_equity > params.max_de:              # default: 0.60
            continue
        if fs.ocf_to_ni_3yr < params.min_ocf_ratio:       # default: 0.70
            continue
        if fs.market_cap < params.min_mcap:                # default: 3e9
            continue
        if fs.avg_daily_volume < params.min_volume:        # default: 10e6
            continue

        # === Secondary quality filters ===
        quality_score = 0
        if fs.roe_3yr_avg >= 0.15:
            quality_score += 2
        if fs.gross_margin_trend == "stable_or_rising":
            quality_score += 1
        if fs.fcf_positive_years >= 4:                     # out of 5
            quality_score += 2
        if fs.dividend_yield >= 0.03:
            quality_score += 1
        if fs.revenue_cagr_5yr >= 0.08:
            quality_score += 1
        if fs.insider_buying_last_12m:
            quality_score += 1
        if fs.related_party_revenue_pct < 0.10:
            quality_score += 1
        if fs.goodwill_to_assets < 0.15:
            quality_score += 1

        # === Value trap detection ===
        trap_score = 0
        if fs.revenue_declining_2yr:
            trap_score += 1
        if fs.market_share_declining:
            trap_score += 1
        if fs.roe_trend_5yr == "declining":
            trap_score += 1
        if fs.ocf_to_ni_3yr < 0.70:
            trap_score += 1
        if fs.debt_growing_without_revenue:
            trap_score += 1
        if fs.management_changes_5yr >= 3:
            trap_score += 1
        if fs.industry_disruption_flag:
            trap_score += 1

        if trap_score >= 4:
            continue  # probable value trap

        # === Composite ranking ===
        discount_score = (1 - stock.price / estimate_intrinsic_value(stock))
        composite = quality_score * 0.4 + discount_score * 10 * 0.4 \
                    - trap_score * 0.2

        candidates.append({
            "ticker": stock.ticker,
            "name": stock.name,
            "price": stock.price,
            "quality_score": quality_score,
            "trap_score": trap_score,
            "discount_pct": discount_score * 100,
            "composite": composite
        })

    # Sort by composite score, descending
    candidates.sort(key=lambda x: x["composite"], reverse=True)
    return candidates[:params.max_watchlist]  # default: 40

15.2 内在价值计算器

def estimate_intrinsic_value(stock):
    """
    Triangulate intrinsic value using four methods.
    Returns the conservative end of the convergence range.
    """
    fs = stock.financials

    # --- Method 1: DCF ---
    fcf_base = fs.free_cash_flow_trailing
    growth_rates = estimate_growth_rates(stock)  # [yr1, yr2, ..., yr5]
    wacc = estimate_wacc(stock)                  # typically 0.10 - 0.12
    terminal_growth = min(0.03, growth_rates[-1] * 0.5)

    pv_fcf = 0
    fcf = fcf_base
    for t, g in enumerate(growth_rates, 1):
        fcf = fcf * (1 + g)
        pv_fcf += fcf / (1 + wacc) ** t

    terminal_value = fcf * (1 + terminal_growth) / (wacc - terminal_growth)
    pv_terminal = terminal_value / (1 + wacc) ** len(growth_rates)
    dcf_value = (pv_fcf + pv_terminal) / stock.shares_outstanding

    # --- Method 2: Earnings Power Value ---
    normalized_ebit = fs.ebit_5yr_average
    tax_rate = fs.effective_tax_rate
    epv = (normalized_ebit * (1 - tax_rate)) / wacc
    epv_per_share = epv / stock.shares_outstanding

    # --- Method 3: Asset-Based (Adjusted NAV) ---
    adjusted_nav = fs.total_equity
    adjusted_nav += fs.land_revaluation_surplus   # if estimable
    adjusted_nav -= fs.goodwill * 0.5             # haircut goodwill
    adjusted_nav -= fs.intangibles * 0.7          # haircut intangibles
    nav_per_share = adjusted_nav / stock.shares_outstanding

    # --- Method 4: Comparative ---
    peer_median_pe = get_peer_median_pe(stock.industry)
    normalized_eps = fs.eps_normalized
    comparative_value = normalized_eps * peer_median_pe

    # --- Triangulation ---
    values = [dcf_value, epv_per_share, nav_per_share, comparative_value]
    values = [v for v in values if v > 0]  # exclude negative/invalid

    if max(values) / min(values) > 2.0:
        # Methods diverge too much — low confidence
        return min(values)  # ultra-conservative

    # Use conservative end: 25th percentile of estimates
    values.sort()
    conservative_iv = values[len(values) // 4]  # lower quartile

    return conservative_iv

15.3 安全边际监控器

def margin_of_safety_monitor(portfolio, universe_data):
    """
    Monitor margin of safety for existing positions and watchlist.
    Generate alerts when action thresholds are crossed.
    """
    alerts = []

    for position in portfolio.holdings:
        stock = universe_data.get(position.ticker)
        iv = estimate_intrinsic_value(stock)
        current_price = stock.price
        mos = (iv - current_price) / iv

        # --- Determine quality tier and required margin ---
        if position.quality_tier == "exceptional":
            required_mos = 0.20
        elif position.quality_tier == "strong":
            required_mos = 0.30
        elif position.quality_tier == "average":
            required_mos = 0.40
        else:
            required_mos = 0.50

        # --- Check exit conditions ---
        if current_price >= iv:
            alerts.append({
                "ticker": position.ticker,
                "action": "SELL_PARTIAL",
                "reason": f"Price ({current_price:.2f}) reached IV ({iv:.2f})",
                "urgency": "HIGH"
            })
        elif current_price >= iv * 1.20:
            alerts.append({
                "ticker": position.ticker,
                "action": "SELL_ALL",
                "reason": f"Price ({current_price:.2f}) exceeds IV by 20%+",
                "urgency": "HIGH"
            })

        # --- Check thesis health ---
        thesis_flags = evaluate_thesis(position, stock)
        if thesis_flags["broken"]:
            alerts.append({
                "ticker": position.ticker,
                "action": "SELL_ALL",
                "reason": f"Thesis broken: {thesis_flags['reason']}",
                "urgency": "CRITICAL"
            })

        # --- Check for adding opportunity ---
        if mos > required_mos + 0.15 and position.pct_of_portfolio < position.target_pct:
            alerts.append({
                "ticker": position.ticker,
                "action": "ADD",
                "reason": f"MoS ({mos:.0%}) well above required ({required_mos:.0%})",
                "urgency": "MEDIUM"
            })

        # --- Time stop check ---
        months_held = position.months_since_purchase
        pct_change = (current_price - position.avg_cost) / position.avg_cost

        if months_held >= 24 and abs(pct_change) < 0.10:
            alerts.append({
                "ticker": position.ticker,
                "action": "REVIEW",
                "reason": f"Held {months_held} months with {pct_change:.0%} return",
                "urgency": "MEDIUM"
            })

    # --- Watchlist opportunities ---
    for candidate in portfolio.watchlist:
        stock = universe_data.get(candidate.ticker)
        iv = estimate_intrinsic_value(stock)
        mos = (iv - stock.price) / iv

        if mos >= candidate.required_mos:
            alerts.append({
                "ticker": candidate.ticker,
                "action": "BUY_SIGNAL",
                "reason": f"MoS ({mos:.0%}) meets threshold ({candidate.required_mos:.0%})",
                "urgency": "HIGH"
            })

    # --- Portfolio-level checks ---
    total_value = portfolio.total_value
    peak_value = portfolio.peak_value
    drawdown = (peak_value - total_value) / peak_value

    if drawdown >= 0.10:
        alerts.append({
            "ticker": "PORTFOLIO",
            "action": "REVIEW_ALL",
            "reason": f"Drawdown {drawdown:.0%} — review weakest positions",
            "urgency": "HIGH" if drawdown >= 0.15 else "MEDIUM"
        })
    if drawdown >= 0.20:
        alerts.append({
            "ticker": "PORTFOLIO",
            "action": "DEFENSIVE_MODE",
            "reason": f"Drawdown {drawdown:.0%} — raise cash to 40%",
            "urgency": "CRITICAL"
        })

    return sorted(alerts, key=lambda x: {"CRITICAL": 0, "HIGH": 1,
                                          "MEDIUM": 2}[x["urgency"]])

16. 核心原则

张景东将整个价值发现过程提炼为一套指导原则,从业者应将其内化:

1. 你支付的是价格;你得到的是价值。 永远不要将低价与好投资混淆。唯一重要的是价格与内在价值之间的关系。

2. 安全边际是不可协商的。 它是投资的安全带。你不是根据交通状况来决定是否系安全带的。每次都要系。

3. 现金流是真相;盈利是观点。 报告盈利但不产生现金的企业不是盈利企业。始终通过现金流量表验证盈利质量。

4. 最好的买入时机是你最不想买的时候。 真正的便宜货在恐惧普遍、新闻糟糕、买入让人感到身体不适时出现。如果感觉很容易,你可能已经太晚了。

5. 你无法估值你不理解的东西。 永远不要投资你不能用简单语言解释其经济学的企业。如果论点需要50个假设的电子表格,你理解得不够深入。

6. 催化剂是价值与价格之间的桥梁。 没有催化剂的低估是理论。有催化剂的低估是投资。

7. 价值陷阱比错过机会更危险。 在价值陷阱上损失50%需要100%收益才能恢复。错过翻倍的股票不会让你损失任何东西。倾向于怀疑。

8. 耐心是一种竞争优势。 大多数投资者在结构上无法等待。季度业绩压力、职业风险和无聊迫使他们行动。有能力等待2-3年让论点发挥作用的个人价值投资者拥有任何算法都无法复制的优势。

9. 写下来。 只存在于你脑海中的投资论点会随着每一次价格变动而改变和合理化。书面信念创造问责制并暴露草率思维。

10. 过程比任何单一结果更重要。 正确的过程有时会产生损失;错误的过程有时会产生收益。在数百个决策中,只有过程在复利。根据分析质量而非结果的随机性来判断自己。

11. 多元化是对无知的承认——这没关系。 持有足够多的持仓,这样任何单一错误都不是致命的;但要少到每个持仓都反映真正的信念和深入知识。

12. 市场是仆人,不是主人。 市场每天为你提供价格。你可以自由接受或忽略它们。永远不要让市场对股票的看法成为你对企业的看法。